如何检查一组命令是否在启动时执行?

如何检查一组命令是否在启动时执行?

我正在创建一个 GUI 前端xrandr,我需要一些在启动时执行的命令。

我正在使用.desktop放置在 中的文件~/.config/autostart

我不知道这是否会起作用,因为它xrandr不适用于我的设置 - 我知道一切都按预期运行;只是我的系统不支持它 - 我只会收到一堆 xrandr 错误。这也意味着我会在启动时收到错误,并且没有明显的变化。

有什么方法可以查明命令是否已执行?

答案1

如果您的自动启动.desktop文件是脚本,您只需将控制回显放入脚本中即可,如以下示例所示:

# if yyou want only data saved for one run

echo "Script has run on $(date)" > ~/script.log

# if you want a continous log output append

if [ -e ~/script-log ]
    then
        echo "Script has run on $(date)" >> ~/script.log
else
        touch ~/script.log
        echo "Script has run on $(date)" >> ~/script.log
fi

这样,您甚至可以输出一些可能需要以此方式控制的变量数据。只需确保您的最终结果在脚本中的所有命令之后打印出来,这样您就知道脚本已经运行完毕。

如果您想确切地知道脚本中的命令是否失败,您也可以执行以下操作:

# do this at start of your script

if [ -e ~/script-error.log ]
    then
        # we do nothing
else
        touch ~/script-error.log
fi

# then within your script (I use as example here cd /root just to demonstrate)
# you can do this with nearly all commands

cd /root 2>> ~/script-error.log

仅当您的某个命令抛出错误时才会获取。当然,并非适用于所有地方,但如果完全没有输出则更好。

管道说明:

# single piping symbol (overwrite the existing file and creates one if not existant)
>               # pipes all output 
1>              # pipes only success messages
2>              # pipes only error messages

# double piping symbol (append to an existing file and fail if file does not exist)
>>              # pipes all output
1>>             # pipes only success messages
2>>             # pipes only error messages

想要深入了解 bash 脚本请点击这里两个链接:

Bash 初学者指南 - Machtelt Garrels - 2008
高级 Bash 脚本指南 - Mendel Cooper - 2014

相关内容