让命令在后台执行

后台执行命令有很多方法,比如:

1. 使用 &

在你想要后台执行的命令最后加上一个&就能让命令在后台运行了.

  1. htop &
  2. [1] 12781
  3. ps
  4. PID TTY TIME CMD
  5. 12554 pts/5 00:00:00 bash
  6. 12781 pts/5 00:00:00 htop
  7. 12782 pts/5 00:00:00 ps

怎样把再它调出来呢? 用fg命令. 还可以用jobs命令查看当前终端上运行的后台程序.

2.使用 nohup


nohup - run a command immune to hangups, with output to a non-tty


这是正统的后台运行.

nohup ./my-shell-script.sh &

默认程序的输出内容会保存到当前目录下的nohup.out文件中, 所以一般运行的时候都是这样(如果你不需要查看运行结果的话):

nohup ./my-shell-script.sh &> /dev/null &

3.使用 screen

这也是后台运行常用的工具, 比起nohup, 它可以随时随地查看运行情况, 并且进行操作, 更多关于screen的介绍请看: Linux 技巧:使用 screen 管理你的远程会话

其实还有一个比screen更酷炫的软件, 叫 tmux, 有兴趣可以去了解下哦~

4. 使用 at

这真是巧妙, 作者能想到这一点我也是佩服, at一般都是作为计划任务来使用的, 但是这样也能起到后台运行的效果.

再明天上午十点执行备份脚本: at -f backup.sh 10 am tomorrow

或者现在就执行: at -f backup.sh now # -f 的意思是执行后面的文件

查看任务队列用atq

删除任务可以用 adrm [number_of_task] 或者 ad -d [number_of_task]

5.使用watch

这个说起来就有点牵强了, 毕竟watch不是干这个的呀.

原作说的是持续运行某条命令, 凑活写上吧..

每隔五秒执行一次df -h, 如果不加-n 5的话, 默认是两秒, watch -n 5 'df -h'

扩展阅读