2012-06-15 156 views
5

我在写一个脚本,并在某些时候调用了“command1”,其中 不会停止,直到它调用CTRL + C为止。Linux命令 - 有超时中止操作

  1. 有没有办法让一个命令超时?像: command1 arguments -timeout 10
  2. 如何以文本形式编写CTRL + C命令?

Thx!

+0

通过发送文本形式的Ctrl + C,你的意思是什么? – betabandido

回答

6

您可以从GNU的coreutils使用timeout命令(您可能需要先安装它,但它有大多数,如果不是所有的Linux发行版):

timeout [OPTION] DURATION COMMAND [ARG]... 

例如:

timeout 5 ./test.sh 

将在执行5秒后终止脚本。如果您想发送KILL信号(而不是TERM),请使用-k标志。

Here你有timeout命令的完整描述。

0

我只是想

jekyll -server & sleep 10;pkill jekyll 

您的情况可以做的。

+1

警告:您将使用此命令杀死任何和所有名为“jekyll”的进程。更好的方法是保存你感兴趣的PID(在命令启动后它在'$!'中)并且杀死那个PID。 – Celada

-1

在您的脚本中,您可以设置一个等待。 wait 10将等待10秒钟,至于退出程序没有CTRL + C看看exit命令。如果你使用exit 0这意味着好。有不同的版本,但我不知道他们的意思是什么意思。

exit 1 
exit 2..... so on and so forth 

更新


@切拉达

无需抨击。你可能只是说“也许你没有正确理解这个问题”Stackoverflow在这里帮助人们学习,而不是把它们撕下来。他们为此发明了Reddit。至于退出代码,您可以通过使用代码发出exit()命令来强制退出程序。直接从linux.die.net

Exit Code Number Meaning Example Comments 
1 Catchall for general errors let "var1 = 1/0" Miscellaneous errors, such as "divide by zero" 
2 Misuse of shell builtins (according to Bash documentation) Seldom seen, usually defaults to exit code 1 
126 Command invoked cannot execute Permission problem or command is not an executable 
127 "command not found" Possible problem with $PATH or a typo 
128 Invalid argument to exit exit 3.14159 exit takes only integer args in the range 0 - 255 (see footnote) 
128+n Fatal error signal "n" kill -9 $PPID of script $? returns 137 (128 + 9) 
130 Script terminated by Control-C Control-C is fatal error signal 2, (130 = 128 + 2, see above) 
255* Exit status out of range exit -1 exit takes only integer args in the range 0 - 255 
+0

这没有任何意义。这根本不等于'wait'命令的作用,我不知道'exit'是如何表示使用的。 – Celada