screen和nohup后台跑常驻进程常用命令

screen的使用

参考链接:https://www.iteye.com/blog/justdo2008-1888772

1、新建一个screen窗口

screen -S <你自己的窗口名>

2、退出窗口,程序转入后台运行

Ctrl+A+D

3、重进窗口

screen -r <你自己的窗口名>

4、查询所有运行在后台的进程

screen -ls

5、进程结束,杀死进程

kill <进程号>

6、窗口假死,强制连接,踢掉原来的连接

screen -D -r <进程号>

nohup的使用

参考链接:https://blog.csdn.net/weixin_42840933/article/details/85780125

https://blog.csdn.net/maihilton/article/details/82781897

1、单独使用nohup,关闭shell进程后,还能在后台执行,使用ctrl+c进程消失

nohup <你需要运行的命令>

2、单独使用&,关闭shell进程,运行的进程消失,ctrl+c进程仍然存在

<你需要跑的进程的命令> &

3、nohup + &,关闭shell进程和ctrl+后台运行的进程都还在,并且把代码中间过程的输出日志都会写到运行该进程当前目录下的nohup.out文件中

nohup <需要运行的进程命令> &

4、将输出日志重定向到一个文件中

nohup <需要运行的进程命令>  >> train.log &

5、2>&1,将错误输出重定向到标准输出中

0:stdin标准输入,用户键盘输入的内容
1:表示stdout标注输出,输出到显示屏的内容
2:表示stderr标准错误,报错内容
2>&1中>后面不能有空格,表示将错误内容重定向输入到标准输出中去
# 这样在日志文件中就会记录运行错误信息
nohup <需要运行的进程命令>  >> train.log 2>&1 &

6、将日志信息显示在屏幕上

tail -f train.log

7、暂停该进程,并放到后台运行

ctrl+Z

8、退出该进程,但是同时使用了nohup+&,即使使用了ctrl+c,进程依然会在后台继续运行

ctrl+c

9、查看当前终端后台运行中的进程任务,换了终端或者断开连接重新打开一个终端,就不能查看了

jobs -l

10、查看瞬时进程的动态,也可以看到别的终端后台进程

#a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分
ps -aux
#e:列出程序时,显示每个程序使用的环境变量 f:全格式,用ASCII字符显示树状结构,表达程序之间的相互关系
ps -ef 
#对于平时使用时简单地查看进程情况来看,两个命令是差不多的

使用grep查找你需要查看的内容(限定用户名)

ps -ef|grep <用户名>

限定运行进程的命令

ps -ef|grep <命令中的特定名称>

11、强制删除进程<参数-9表示强制删除>

kill -9 <进程号>

12、前台后台进程相互切换与控制

#fg命令
#如果后台只有一个进程,直接使用fg就把命令调到前台执行了
#如果后台有多个进程,需要先使用job查看jobnumber,再使用fg <jobnumber>

#bg命令
#将一个后台暂停的程序,变成在后台继续执行
#同理,多个进程使用bg <jobnumber>

13、当我们运行的进程,输出日志比较多时,重定向的日志文件(train.log和nohup.out)过大,容易导致磁盘空间不足问题,如何保证不停止进程和不删除日志文件(后续还有输出要写进来)非常重要。解决此问题需要使用Linux中的/devwud/null文件和重定向

参考链接:https://www.jianshu.com/p/986dffe63a9d

cp /dev/null train.log
cat /dev/null > train.log

将/dev/null文件复制或者重定向到你的文件,你文件中原来所有的信息都会变得无影无踪,我们以此来删除日志文件中的历史信息。再删除之前的历史日志之前,我们将原先的日志文件下载到本地,方便查看之前的进程运行情况,同时我们保留了train.log文件,以便于之后的输出写入到此文件中。

posted @ 2021-03-06 11:21  简约的信仰  阅读(840)  评论(0编辑  收藏  举报