【Linux】Linux后台任务(nohup、screen)

一、nohup

nohup npm start &

加’&’表示将进程丢到后台,但是当退出该终端时很有可能这个脚本也会退出,而在前面加上’nohup’就没有问题了。nohup的作用就是不挂断地运行命令。

如果标准输出是一个终端,尽可能将输出添加到"nohup.out",
否则添加到"$HOME/nohup.out"。
如果标准错误输出是一个终端,重定向它到标准输出。
要保存输出内容到一个文件,使用 “nohup COMMAND > FILE” 形式的命令。

 

 

 查看日志:

tail -f nohup.out

但使用非root账号启动也会在退出该终端时服务停止。

二、screen

screen状态有四种:

1.Attached 目前正在工作当中,当使用Ctrl+a+d就会退出工作状态,状态就会变Detached,但是还是后台工作
2.Datached 在后台工作当中,也可以在Attached状态时使用命令screen -r 1000让其变成Datached状态
3.Dead ??? 死亡状态,这个需要用的命令是kill -9 3000,如果已经是Dead状态,用这命令是会报错的,只能去杀前两种状态的screen进程
4.Removed 当使用screen -wipe删掉某个screen进程的时候显示 

screen 命令的的用法: 

screen常用参数:

 -A  将所有的视窗都调整为目前终端机的大小。
 -d <作业名称>  将指定的screen作业离线。
 -h <行数>  指定视窗的缓冲区行数。
 -m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
 -r <作业名称>  恢复离线的screen作业。
 -R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
 -s <shell>  指定建立新视窗时,所要执行的shell。
 -S <作业名称>  指定screen作业的名称。
 -v  显示版本信息。
 -x  恢复正在工作的screen作业。
 -ls或--list  显示目前所有的screen作业。
 -wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业

下面对参数做出一些说明:

1.screen 运行screen命令后会自动打开一个新shell,在这个新的shell里可以运行任何命令。一般只开一个。可以想象成上网一般只用开一个浏览器。新建bash,最多可建10个。每一个bash都可以单独浏览和工作。可以想象成浏览器的标签。

crtl+A+数字[0-9] #直接跳到第n个bash
ctrl+A+A #bash之间快速切换

2.exit 退出screen(记得你退出的是bash还是screen)

3.如果一个进程很重要,不想在退出终端的时候中断,可以按ctrl+a+d (先ctrl+a 后按d就可以),也就是在此时(关闭终端的时候),screen屏蔽掉了父目录发送的signhup命令。进程由Attached状态变成Datached

4.screen -r 列出进入Datached状态的screen

5.screen -r pid 恢复对应的进程

6.screen -S hehe 进程里就会看到这个screen被标为 hehe.ttyn.host,而不是进程ID。类似于备注提示

7.screen -d pid将Attached状态的screen变成Datached(同ctrl+a+d)

参考:https://blog.51cto.com/fengtao/1287163

posted @ 2022-05-17 20:27  vickylinj  阅读(302)  评论(0编辑  收藏  举报