2011-11-21 63 views
2

我执行下面我的Linux/Solaris系统上的二进制文件(为了获取系统信息)LINUX +如何几秒

 /usr/sbin/diag 

诊断命令运行后,我得到了一些线后杀卡程序屏幕,但它卡住了,我没有得到Linux/Solaris提示(diag程序不返回exe代码0或1,因为它卡住 - :()

(退出prom diag的唯一方法是执行CNTL-C )

我的问题:如果有一些方法可以杀死diag二进制程序ogram后〜5秒

例如

/usr/sbin/diag &  (the lines runs on screen but diag stuck , need to CNTRL-C) 
    Wait ~5 
    Kill the /usr/sbin/diag process (&!) 

回答

1
+2

这是一些不错的水晶球工作 - 我没有看到一个没有工作控制的外壳这么长时间,很容易忘记他们甚至存在。 – sarnold

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 
+0

/usr/sbin/diag& - >这无助于diag程序仍然卡住,我只能用contl -c – david

+0

工作在这里,你确实添加了shebang的权利吗?...#!/ bin/bash' –

+0

您的意思是将您的程序添加到bash脚本中? – david

0

一个可能的方法:

/usr/sbin/diag & 
sleep 5 ; kill $! 

bash(1)可变$!指最近执行的背景执行命令的PID。所以,如果你不能将diag置于后台,那么这对你来说不起作用。

+0

/usr/sbin/diag&>这无助于diag程序仍然卡住,我只能用contl -c – david

1

见超时命令,你应该安装它,然后运行

timeout 60 command_line 

为60个secondes超时。它安全而智能。

+0

我无法安装时间,因为我们无法在此系统上进行任何安装步骤,此Linux操作系统是关键服务器,客户(手机公司)不想在系统上安装任何附加软件包 – david

0
timelimit 60 command_line args 

也是这样做的一种方式。它是netpipes包的一部分。