没有,有没有nousr1命令?

我的几个常规程序(定期)崩溃,并显示消息“用户定义的信号1”。 我知道有一个nohup命令,但是有一个nousr1命令? 或者什么东西可以做nohup但是用USR1呢?

一个简单的hacky解决scheme可以让这个工具类似于nohup ,但是对于SIGUSR1 ,将得到一个coreutils源代码的副本,解压它,做

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

,也可以select更改输出文件名称

 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 

在此之后,正如我所检查的,在USR1sleep 1000 ,而nousr1 sleep 1000对此信号nousr1 sleep 1000

如何壳trap内置命令?

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

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

 trap '' SIGUSR1; myprogram 

这将忽略 SIGUSR1信号,这是你正在做的。 虽然我同意这些评论者的观点,可能还有更多的事情要做。

不正确的forms:

 trap 'echo ...' SIGUSR1; myprogram 

仍然允许myprogram接收SIGUSR1,但是shell会从trap命令执行echo