直接后台运行:
1 | nohup bash run.sh 2>&1 & |
其中31520
表示作业id。
- 如果不加nohup, 当终端退出时,run.sh对应的进程会收到SIGHUP信号,而进程对SIGHUP信号的默认处理方式是终止,这显然不是我们想要的。
- 而加上nohup之后,run.sh对应的进程会忽略SIGHUP信号,即终端退出并不影响进程继续运行.
前台运行转后台
如果已经在前台运行的任务,不希望杀死,怎么切到后台呢?
输入ctrl + z 将该前台任务挂起
1 | ^Z |
运行jobs命令,查看任务号(可以看到run.sh对应的任务号是1)
1 | jobs |
- 运行bg命令,将任务从前台转到后台
1 | bg %1 |
- 输入
disown -h %1
将这个任务转为nohup运行
后台运行转前台
既然任务可以从前台转后台,那反过来从后台转前台是否可行呢?答案是可以的 首先以后台运行run.sh
1 | nohup bash run.sh 2>&1 & |
查看后台任务
1 | jobs |
运行fg命令,将任务从后台转到前台
1 | fg %1 |
实战
来一个go
1 | package main |
运行:
go run main.go > out