为什么该脚本无法在启动时运行?

为什么该脚本无法在启动时运行?

当我手动启动时,此脚本运行正常。如何让它在启动时运行?该脚本的功能是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。

答案1

使用 .desktop 文件中的路径

问题是启动应用程序.desktop~/.config/autostart

.desktop文件中,不能使用相对路径或变量路径,例如~。请改用绝对路径:

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

答案2

这是更好的方法

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

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

检查/usr/bin/docky命令是否启动了 docky,就是这样。这将每 2 分钟检查一次 docky 是否正在运行,如果没有,它将启动 docky。

相关内容