我在linux / Solaris系统上执行以下二进制文件(为了获取系统信息)
/usr/sbin/diag
运行diag命令后,我在屏幕上显示了一些行,但它卡住了,我没有得到Linux / Solaris提示符(diag程序没有返回exe代码0或1,因为它卡住了 - :()
(退出舞会诊断的唯一方法是执行CNTL - C)
我的问题:如果有一些方法可以在~5秒后杀死diag二进制程序
例如
/usr/sbin/diag & ( the lines runs on screen but diag stuck , need to CNTRL-C )
Wait ~5
Kill the /usr/sbin/diag process (&!)
答案 0 :(得分:2)
/usr/sbin/diag & # run diag in background
pid=$! # set last run command's process id into pid var
sleep 5s # wait 5 seconds
kill -9 $pid # kill that pid
答案 1 :(得分:1)
你的shell禁用了作业控制。
检查你
见
并且
答案 2 :(得分:1)
请参阅timeout命令,您应该安装它,然后运行
timeout 60 command_line
60秒的超时。这是安全和聪明的。
答案 3 :(得分:0)
一种可能的方法:
/usr/sbin/diag &
sleep 5 ; kill $!
bash(1)
变量$!
是指最近执行的后台命令的pid。因此,如果您无法将diag
放入后台,那么这对您无效。
答案 4 :(得分:0)
timelimit 60 command_line args
这也是一种方法。它是netpipes包的一部分。