我将举例说明我的问题。
#!/bin/sh
if (( $# == 1 ))
then
xmessage "before kill"
killall xautolock
xmessage "after kill"
var=$1
let "var += 1"
xautolock -time $var -locker "\"./test1.sh\"" &
xmessage "after run"
exit 0
fi
我第一次从bash启动xautolock:
$ xautolock -time 1 -locker "./test1.sh 1" &
选项-time意味着xautolock将启动一个程序,该程序在1分钟空闲时间后作为选项-locker的参数传递。
从bash启动xautolock之后:
$ ps ax | grep -E "xaut|test"
6038 pts/1 S 0:00 xautolock -time 1 -locker ./test1.sh 1
6046 pts/2 S+ 0:00 grep -E xaut|test
开始xmessage“杀死之前”:
$ ps ax | grep -E "xaut|test"
6038 pts/1 S 0:00 xautolock -time 1 -locker ./test1.sh 1
6223 pts/1 S 0:00 /bin/sh /home/mhd/Texts/Programming/Programms/test1.sh 1
6240 pts/2 S+ 0:00 grep -E xaut|test
开始xmessage“杀死后”:
$ ps ax | grep -E "xaut|test"
6223 pts/1 S 0:00 /bin/sh /home/mhd/Texts/Programming/Programms/test1.sh 1
6373 pts/2 S+ 0:00 grep -E xaut|test
启动xmessage“运行后”:
$ ps ax | grep -E "xaut|test"
6223 pts/1 S 0:00 /bin/sh /home/mhd/Texts/Programming/Programms/test1.sh 1
6470 pts/2 S+ 0:00 grep -E xaut|test
为什么在此步骤之后xautolock不在进程列表中?如何在Bash脚本中第二次启动它?
答案 0 :(得分:1)
xautolock默认关闭stdout和stdrerr。如果您将选项“-noclose”传递给xautolock,那么它将不会关闭stdout和stdrerr,您可以在Bash脚本中第二次启动xautolock。但我不明白为什么xautolock在我的示例脚本中第二次启动它是否已关闭stdout和stderr?