为什么这个脚本不会在启动时运行?

当我手动启动它时,此脚本可以正常工作。 我怎样才能让它在启动时运行? 该脚本的function是让Docky在发生崩溃时自动重新启动。

我创建了这样的脚本:

  • gedit ~/process_monitor.sh

粘贴在下面( 在Ask Ubuntu上找到 ):

 #!/bin/bash if [[ -z "$1" ]];then echo "ERROR: must specify program" exit 1 fi while (( 0 == 0 ));do $@ & pid=`jobs -l | awk '{print $2}'` wait $pid done 
  • 保存文件。

  • 设置权限:

     chmod a+x ~/process_monitor.sh 

现在,当我像这样运行时,它完美地工作:

 ~/process_monitor.sh docky 

但是,当我将以下内容添加到启动应用程序时,这不会使脚本在启动时启动。 好吧,也许它确实如此,但脚本不起作用。

/bin/bash ~/process_monitor.sh docky

在此处输入图像描述

基本上有一些图形元素在屏幕上闪烁半秒钟,但没有其他迹象可以看到脚本,如果它被杀死, Docky不会重新启动。

如何使这项工作? 我相信这是非常基本的。

我在Ubuntu 14.04上。

使用.desktop文件中的路径

问题是启动应用程序在~/.config/autostart创建一个.desktop文件

.desktop文件中,您不能使用~类的相对或可变路径。 改为使用绝对路径:

 /bin/bash /absolute/path/to/process_monitor.sh docky 

这是更好的方法

运行crontab -e在底部插入此行

 */2 * * * * if [ ! `pgrep docky` ] ; then /usr/bin/docky; fi 

检查/usr/bin/docky命令是否启动了docky,就是这样。 这将检查docky是否每2分钟运行一次,否则它将开始停靠。