我正在创建一个 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