xautolock不会再次启动

时间:2013-07-21 08:47:09

标签: bash

我将举例说明我的问题。

#!/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脚本中第二次启动它?

1 个答案:

答案 0 :(得分:1)

xautolock默认关闭stdout和stdrerr。如果您将选项“-noclose”传递给xautolock,那么它将不会关闭stdout和stdrerr,您可以在Bash脚本中第二次启动xautolock。但我不明白为什么xautolock在我的示例脚本中第二次启动它是否已关闭stdout和stderr?