【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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
2019-05-17 [Vue]Vue keep-alive
2019-05-17 [javascript]localStorage和sessionStorage区别
2019-05-17 [http]HTTP状态码含义
2019-05-17 [http]HTTP请求过程
2019-05-17 [Vue]vue-router的push和replace的区别