当我在Ubuntu上单击NetBeans或DropBox等程序时,是否有办法执行bash脚本 并在退出时执行bash脚本
我的想法如果程序存在于当前进程中,则每秒在cronjob @reboot检查上创建bash脚本
#!/bin/bash
NameOfprogram="NetBeans"
while [[ true ]]; do
countOfprocess=$(ps -ef |grep $NameOfprogram | wc -l)
if [[ $countOfprocess -gt 1 ]]; then
#execute bash
fi
sleep 1
done
但我认为这个想法不是最好的,有没有更好的方法来实现它?
答案 0 :(得分:2)
更好的方法是将可执行文件包装在脚本中。这意味着您在路径中放置了一个带有程序名称的脚本(可能是$HOME/bin
),而Linux将使用该脚本而不是真正的可执行文件。
现在您可以使用以下方法执行真实程序:
/usr/bin/NetBeans "$@"
因此,要执行真正的可执行文件,只需将绝对路径放在名称前面即可。奇怪的"$@"
也传递了某人可能给出的脚本的任何论据。
围绕这个做一个循环:
while [[ true ]]; do
/usr/bin/NetBeans "$@"
done
但是有一个问题:你不能再退出这个程序了。一旦你尝试,它会重新启动。因此,如果您只是想在崩溃时重新启动:
while [[ true ]]; do
/usr/bin/NetBeans "$@" && exit 0
done
只要程序因错误退出,它就会重新启动。如果退出,脚本将停止。