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文件,以便于之后的输出写入到此文件中。