nohup+Django后台运行,以及详解ps+grep+awk+xargs命令杀死所有进程

前言

  简单记录下linux命令:nohup、ps、awk、xargs、lsof、netstat,供后续查询使用。

nohup

  nohup是linux用于后台执行程序的启动命令之一。是英文no hang up的缩写,即不挂断地运行命令,所以单独用nuhup即可以在退出账户/关闭终端之后继续运行相应的进程。但要注意,这并不是后台运行,如果要实现后台运行,那就得在程序后加上&。

  比如用nohup来启动django,配合manage.py就能在即使关掉终端的情况下后台运行django程序,又或者在运行完python程序,又要回到shell运行其他命令时,就是首选,命令如下:

nohup python manage.py runserver &

结果如下:
在这里插入图片描述
  [1]表示进程,然后appending output to nohup.out就是表示输出的内容添加到了nohup.out里面了,如果要看输出的日志,就可以像看日志一样用tail -f nohup.out来查看输出的所有信息。好处是nohup可以详细地将所有输出都记录到文件里,并且不用占据shell,非常方便。

ps+awk+xargs

  ps在linux命令的使用中频率算是非常高的了,用于查看当前系统中进程的快照,搭配一些选项可以用于查看进程id以及杀死对应的进程。
  ps命令支持3种风格:

  • UNIX 风格,选项组合前必须有“-”连字符
  • BSD 风格,选项组合前不能有“-”连字符
  • GNU 风格,选项前有两个“-”连字符

  现举例最常用的ps命令以及其所对应的含义:

直接运行ps

在这里插入图片描述
  结果显示四列信息:PID表示命令进程号,TTY表示命令所运行的位置,TIME表示cpu处理该命令时间,CMD表示该进程所运行的命令。

显示所有当前进程

  那一般ps最常搭配的是ps -aux来显示所有进程,正常还会配合上管道+grep来搜索对应的进程,这边简单介绍各选项:

  • a:显示所有程序
  • u:以用户为主的格式来显示
  • x:显示所有程序,不以终端机来区分

结果如下(只截取了部分结果):
在这里插入图片描述
  简单介绍所有列的含义:

USER      用户名 
%CPU      进程占用的CPU百分比 
%MEM      占用内存的百分比 
VSZ       该进程使用的虚拟內存量(KB) 
RSS       该进程占用的固定內存量(KB)(驻留中页的数量) 
STAT      进程的状态 
START     该进程被触发启动时间 
TIME      该进程实际使用CPU运行的时间
CMDMAND   命令行命令      

  也可以通过ps -u username来单独根据用户来查询其所对应的进程,比如可以ps -u michael查询michael使用的所有进程。
  那ps -aux搭配选项可以查询到很多想看的信息,比如:

  • ps -aux|grep redis --> 查看redis所对应的进程号的信息
  • ps -aux --sort -pcpu --> 根据 CPU 使用来升序排序
  • ps -aux --sort -pmem --> 根据内存使用来生序排序
  • ps -aux --sort -pcpu,+pmem | head -n 10 -->显示前十个cpu\内存使用率最高的

  除了用ps -aux显示所有进程,还有ps -ef也可以显示所有进程,而且使用频率也很高,-e表示所有进程(等同于-a),f表示全格式显示,那结果如下(截取部分):
在这里插入图片描述
  ps -ef和ps -aux差别不大,这两者追溯到Unix系统中的两种风格,System V风格和BSD 风格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,两者输出略有不同。现在的大部分Linux系统都是可以同时使用这两种方式的。
  那在用ps -ef|grep 查找进程很方便,但最后一行一定会是grep,有时不注意看还以为有进程存在,实际上只是grep自己的命令,这时可以通过grep -v grep来排除自身,-v是grep的选项,表示不搜索后面跟着的命令。

ps -ef|grep redis| grep -v grep       #表示搜索redis的进程信息

  除此之外,再搭配awk+xargs可以实现查找所有该进程的id以及杀死所有的该进程id:

ps -ef|grep runserver| grep -v grep |awk '{print $2}'|xargs kill -9

  awk表示获取命令行的数据,搭配print可以打印出对应的命令行数据,比如上述的print $2表示获取显示出的所有条数的第二列信息,那我们知道ps -ef显示的第二列信息就是进程id号,所以就是获取grep runserver后所有进程的进程id号,然后使用xargs执行kill命令来杀死所有进程id,xargs命令的作用就是为其他linux命令提供参数。
  上述命令的意义就是查询所有包含runserver的linux进程,并杀死所有该进程,一般用于python manage.py runserver来启动django程序时,就可以用该命令杀死所有的进程。

linux其他获取进程和端口的命令:lsof和netstat

  有时我们在运行python网站时会显示端口被占用,想查看端口的使用情况的话,就可以用lsof -i:port来显示:

lsof -i:6000     #显示6000端口号的进程信息

结果如下,6000端口号是我配置的redis:
在这里插入图片描述
  也可以通过netstat [选项]来查看TCP/IP网络,常见的选项有如下:

  • -a: 列出所有端口
  • -l:只显示监听端口
  • -s:显示端口的统计信息
  • -t:显示tcp传输协议的连接情况
  • -u:显示udp传输协议的连接情况
  • -n:直接使用ip地址,而不通过域名服务器
  • -p:显示正在使用Socket的程序识别码和程序名称

  所以当我们想了解一个端口的使用进程,也可以通过netstat -anp|grep port来实现:

netstat -anp|grep 6000

  结果如下:
在这里插入图片描述
  这里再介绍netstat常用用法:

  • 列出所有端口:netstat -a
    • 列出所有TCP端口:netstat -at
    • 列出所有UDP端口:netstat -au
  • 列出所有处于监听状态的 Sockets:netstat -l
  • 显示每个协议的统计信息:netstat -s
  • 显示 PID 和进程名称:netstat -p
  • 显示核心路由信息:netstat -r

总结

  此次就介绍到这里,还有很多需要学习的,一起努力~

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值