Linux配置程序后台运行
在日常开发过程中,会遇到我们在前台运行程序,此时我们临时有事,但不能关闭终端,否则程序就会在电脑熄屏(终端session断开后)停止运行。
- 那么作为一个合格的开发,就必须要知道如何让程序在后台运行,以及如何将后台运行的程序拉回前台。
- 配置后台运行:
方法一:nohup xxx &
方法二:ctrl+z配合bg(background)
方法三:screen- 后台程序拉回前台:
- jobs:查看jobID
- fg:fg %1,将jobID为1的作业拉回前台
1 配置程序后台运行
①nohup xxxx &
如果我们程序还没有运行,可以通过这种方式直接让程序在后台运行。
# outlog.txt 表示将终端输出保存到txt中
# 2>&1 表示将错误输出2定向到标注输出1中一起输出
# & 后台挂起
#0 表示stdin标准输入,用户键盘输入的内容
#1 表示stdout标准输出,输出到显示屏的内容
#2 表示stderr标准错误,报错内容
#2>&1是一个整体,>左右不能有空格,即将错误内容重定向输入到标准输出中去。
nohup ./test.sh > outlog.txt 2>&1 &
#如果不指定输出文件,默认会输出到nohup.out中
nohup ./test.sh &
# 查看是否后台运行成功,是否为running
jobs
②ctrl+Z加bg 作业编号
jobs查看作业,方框中为作业编号
如果我们已经在前台运行了程序,那么可以通过这种方式,将程序调整为后台运行。
- 使用Ctrl+z将正在前台运行的命令暂停这时命令以暂停的状态被扔到了后台
- jobs:查看后台作业情况
- bg %作业编号,例:bg %1
③screen
1 安装及基本操作
# 1 安装
# sudo apt-get install screen # ubuntu
sudo yum install screen #centos
# 查看是否安装成功
screen -v
# 2 使用
# 新建了一个叫testbg的窗口并进入
screen -S testbg
# 退出当前窗口,回到主窗口,窗口会出现[detached]提示
Ctrl a +d
# 恢复窗口
screen -ls #列出窗口列表
screen -r 2637 #进入2637线程,恢复count会话窗口
# 杀死窗口,再用screen -ls 可以看到该窗口后面的(???dead)字样
#说明窗口死了,但是仍在占用空间。这时需要清除窗口
kill -9 窗口ID
# 清理死去的窗口
screen -wipe
2 配置后台运行
- 新建窗口
# 新建一个名为testbg的窗口
screen -R testbg
-
运行程序
-
ctrl+A ,然后再按下d,此时脱离窗口,来到外部窗口。开始的程序就在后台窗口运行,不会因为当前窗口退出而退出。
-
如果想进入之前窗口,可通过screen -r ID重新进入
# 查看窗口列表
screen -ls
# 重新进入窗口
screen -r 窗口ID
之前的程序正常运行:
2 将后台运行程序拉回前台
fg %作业编号
jobs查看作业,方框中为作业编号
# 将任务调回前台运行 fg+ %jobID
fg %23