Bash gnome会话结束时停止脚本

Bash gnome会话结束时停止脚本,bash,gnome,autostart,Bash,Gnome,Autostart,在中,有人询问如何在gnome登录时自动启动脚本。但是,如何在注销时自动停止在登录时启动的长时间运行的脚本呢?在我的例子中,当我登录两次时,有两个过程。有趣的是,首先启动的进程不再位于gnome会话下。我将把执行的二进制文件包装在一个简单的bash脚本中,该脚本将启动进程的pid保存在一个临时文件中。如果此文件已存在,则跳过应用程序的启动。由于文件保存在/tmp目录中,因此一旦重新启动计算机,所有内容都将被删除 #!/bin/bash binary="git-cola" temp_file="

在中,有人询问如何在gnome登录时自动启动脚本。但是,如何在注销时自动停止在登录时启动的长时间运行的脚本呢?在我的例子中,当我登录两次时,有两个过程。有趣的是,首先启动的进程不再位于gnome会话下。

我将把执行的二进制文件包装在一个简单的bash脚本中,该脚本将启动进程的pid保存在一个临时文件中。如果此文件已存在,则跳过应用程序的启动。由于文件保存在
/tmp
目录中,因此一旦重新启动计算机,所有内容都将被删除

#!/bin/bash

binary="git-cola"
temp_file="/tmp/my_${binary}_instance.pid"

if [[ -f ${temp_file} ]]
then
  echo "PID exists"
else
  exec ${binary} &
  echo $! > ${temp_file}
fi
您只需稍加努力,就可以检查进程的pid是否仍在运行,并在登录时重新启动它(例如,如果进程崩溃或其他用户关闭了它)

我实际上不使用Gnome,所以我不能告诉你是否有更优雅的方法来终止这个过程。就像一个注销钩子。但是一旦保存了进程的pid,就可以使用
kill-9PID
杀死它。(参见
杀人
了解结束该过程的更温和方法)

这可能不是停止进程的解决方案。但是为了防止它两次启动