在Linux终端后台执行命令

作者 FarLee 2016年8月1日 17:05:10   ‖浏览(3,061)

我们在linux terminal终端中执行了一条命令或程序后, 如果执行时间较长本窗口就无法控制再执行其他操作了.
一种解决方法是另外再开一个终端窗口执行其他命令. 另外则可以将命令或程序设为在后台执行, 同一终端窗口就可以继续其他操作.

在终端中设置为后台执行很简单, 在命令行后面添加 & 符合即可, 如:

$ sleep 100 &

Linux Ubuntu 中可用CTRL + ALT + T 或Win键输入’term’ 打开终端窗口;

用路径也是可以的:

$ /usr/bin/php test.php >> test.log &

不清楚路径可以find, whereis, locate 一下, 如:

$ find / -name php | more

那么怎么终止后台运行的命令或程序呢? 或者如何查看后台是否还在运行该命令任务. 有几种方法:

一是:

$ ps -eaf | grep php   或 pgrep php
查到后 kill 1234 结束任务

另外也可以用jobs查看运行中的命令任务:

$ jobs
[1]+  Running                 /usr/bin/php /data/test.php

结束序号为1的任务:

kill %1

返回序号为1的任务执行控制界面, 把任务从后台切换到前台:

fg 1

上面是在同一个终端窗口的前提下, 不同终端jobs 不会列出.

如果要将正在前台运行的任务切换到后台, 则可以先用Ctrol + z暂停当前任务, 然后使用jobs查看该任务的序号i, 最后使用 bg %i 将该任务启动运行在后台.

另外, Linux自动任务cron job 是自动在后台运行的, 末尾不用加&.

*/5 * * * * /usr/bin/php /home/www/test.php param value >> /home/logs/run.log 2>&1

每5分钟执行一次cronjob, 末尾的2和1分别是标准错误和标准输出的文件描述符, &1表示1是文件描述符而不是文件名. 2>&1即指把错误重定向到标准输出:

 stdin ==> fd 0
 stdout ==> fd 1
 stderr ==> fd 2

“在Linux终端后台执行命令”文章评论(1)

  1. Hej Anna!Vilken vacker blogg du har. Vackert hem! Jag har precis startat min blogg, vÃn!eommk¤lEn frÃ¥ga, vilken RAS är det pÃ¥ er katt?!! Är det en rex katt?/Cecilia

来说兩句