有nohup,有没有nousr1命令?

有nohup,有没有nousr1命令?

我的几个常规程序经常崩溃,并显示“用户定义信号 1”消息。我知道有一个nohup命令,但是有nousr1命令吗?或者可以执行类似操作nohup但使用 USR1 的命令?

答案1

一个简单的 hacky 解决方案,可以得到类似于的实用程序nohup,但是SIGUSR1,是获取一份核心工具来源,解压,执行

sed -i 's/SIGHUP/SIGUSR1/' /path/to/coreutils/src/nohup.c

,也可以选择更改输出文件名

sed -i 's/nohup\.out/nousr1.out/g' /path/to/coreutils/src/nohup.c

,编译此源并将新编译的nohup二进制文件安装到/usr/bin/nousr1

cp /path/to/coreutils/src/nohup /usr/bin/nousr1

此后,据我检查,sleep 1000退出USR1,而nousr1 sleep 1000不受该信号影响。

答案2

外壳怎么样trap内置命令?

trap 'echo "Thou shalt not USR1 me"' USR1 

答案3

trap您需要使用带有空白参数的命令形式。试试这个:

trap '' SIGUSR1; myprogram

这会忽略SIGUSR1 信号,这就是您要尝试执行的操作。尽管我同意评论者的观点,但这里发生的事情可能比表面上看到的要多。

错误形式:

trap 'echo ...' SIGUSR1; myprogram

仍将允许myprogram接收 SIGUSR1,但 shell 随后将执行echo命令trap

相关内容