学点Linux命令没坏处(进程管理)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 操作系统中每个软件的运行都是相当于开启了一个或多个进程,在window中的任务管理器可以清晰的看到我们正在运行的那些进程并且可以通过鼠标操作结束或调整进程,而在linux我们需要使用命令来进行这一系列操作。本文主要介绍下Linux常用的进程管理命令,主要从启动进程=》查看进程=》修改进程=》结束进程这几个方面来处理。

网络异常,图片无法展示
|

前言


操作系统中每个软件的运行都是相当于开启了一个或多个进程,在window中的任务管理器可以清晰的看到我们正在运行的那些进程并且可以通过鼠标操作结束或调整进程,而在linux我们需要使用命令来进行这一系列操作。本文主要介绍下Linux常用的进程管理命令,主要从启动进程=》查看进程=》修改进程=》结束进程这几个方面来处理。

启动进程


  • nohup:nohup(no hang up不挂起)命令可以将程序以忽略挂起信号的方式运行起来,被运行程序的输出信息将不会显示到终端。常用来在后台执行某些脚本,主要命令如下:
  • nohup + file + &,运行命令会返回pid
  • nohup + file + > 日志文件 + &, 重定向输入到日志
[root@zz shell]# nohup demo.sh &
[2] 25286
[root@zz shell]# cat nohup.out > demo.log &
[1] 25541
  • init:init命令是Linux下的进程初始化工具,init进程是所有Linux进程的父进程,它的进程号为1。init命令的主要任务是依据配置文件“/etc/inittab”创建Linux进程。

注:这个命令用的比较少大概了解一下

[root@VM-12-5-centos ~]# init 6 #可以执行重启操作

查看进程


  • ps: ps是我们查看进程最为常用的命令之一,他能查看输入命令那一刻系统进程的情况,缺点就是不能实时的监控进程的变化(top命令),但在大多数场景中我们都是不需要实现查看的因为正常的进程变化不会太多。
  • ps常用的命令组合:
  • ps -aux | grep *** (aux可以查看出所有终端的进程,grep加上关键子就可以过滤出我们想要查看的进程情况)
  • ps -ef(ef比aux范围更广)
[root@VM-12-5-centos ~]# ps aux | grep nginx
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     14479  0.0  0.0 115928  1020 pts/0    R+   13:41   0:00 grep --color=auto nginx
[root@VM-12-5-centos ~]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 13:14 ?        00:00:01 /usr/lib/systemd
***
  • pstree: pstree命令更能形象的展示进程之间的关系,以树形结构显示进程和进程之间的关系。
[root@VM-12-5-centos ~]# pstree
systemd─┬─acpid
        ├─2*[agetty]
        ├─atd
        ├─auditd───{auditd}
        ****
  • pgrep: 直接输出匹配进程号,结合kill使用
[root@zz ~]# pgrep mongod
2049
[root@zz ~]# pgrep -u root
1
2
***
  • top:top命令用来实时展示当前命令执行情况,这个命令是我门显示调试和处理bug时候常用的命令之一,一下几个功能是方便我们解决问题的利器:
  • 支持排序,该命令可以按照CPU的使用、内存的使用和执行时间对系统任务进程进行排序显示,
  • 能够实时地显示系统中各个进程的资源占用状况
  • 支持可以通过交互式命令进行设定显示
  • 命令中常用的查看
  • 交互式输入大写P,按CPU排序
  • 交互式键入大写M,按内存使用lv排序
  • top + -bc -d 5,每个五秒以批处理模式展示具备文件路径的任务进程.b(批处理模式)c(显示文件路径)d(设置刷新时间)
[root@zz ~]# top # 输入top进如交互式命令
**
[root@zz ~]# top -bc -d 10
**
worker process
21909 root      20   0  241412   4648   3488 S   0.0  0.1   0:00.02 sudo nohup ./npc -server=121.4.59.78:8024 -vkey=8hqkqa45c1bhuf7v -type=tcp
22967 root      20   0       0      0      0 S   0.0  0.0   0:00.30 [kworker/u4:0]
23569 mysql     20   0 1604584 213788  10216 S   0.0  5.5  43:21.19 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
***
  • strace: 会追踪程序运行时的整个生命周期,输出每一个系统调用的名字、参数、返回值和执行所消耗的时间等,是排查问题的杀手锏。常用命令:
  • strace -tt -f + file path

注:strace命令很适合处理程序僵尸、命令执行报错等问题,当我们的日志看不出问题出现的原因时,使用strace可能有意想不到的收获。

[root@VM-12-5-centos ~]# strace -tt -f nginx # 分析整个nginx执行过程
15:09:11.166570 execve("/usr/sbin/nginx", ["nginx"], 0x7ffc75e034f0 /* 23 vars */) = 0
15:09:11.166850 brk(NULL)               = 0x564571b7b000
15:09:11.166911 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f755dfbc000
15:09:11.166949 access("/etc/ld.so.preload", R_OK) = 0
15:09:11.166977 open("/etc/ld.so.preload", O_RDONLY|O_CLOEXEC) = 3
***
  • ltrace:能够跟踪进程的库函数调用,它会显现出调用了哪个库函数,而strace则是跟踪进程的每个系统调用。
[root@VM-12-5-centos ~]# ltrace nginx # 输出的看不懂,应该高高手才会用吧,看来要学习下c了
****
  • 补充一个命令runlevel:用来查看系统运行级别,系统级别一般为:0(停机),1(单用户模式),2(无网络多用户),3(多用户),4(未使用),5(图形),6(重启)
[root@zz ~]# runlevel
N 3

注:不太了解这是啥意思,先记录下

调整进程优先级


这个目前在日常工作中未使用过此命令,在此做一了解。

  • nice:Linux的优先级范围是从-20(最大优先级)到19(最小优先级)。优先级越高的程序占用CPU的次数越多,反之亦然。(为运行程序的)
  • rnice:同nice只是用来调整运行中程序优先级的

注:进程优先级的查看有兴趣可以去查查资料

结束进程


  • kill:kill命令能够终止你希望停止的进程。 常用的方式如下:
  • kill + pid (终止进程)
  • kill + -9 + pid (强制终止)
  • kill + -0 + pid (验证进程是否存在)
[root@VM-12-5-centos ~]# pgrep nginx
22841
22842
[root@VM-12-5-centos ~]# kill 22841
  • killall: 个人觉得这个在日常的shell脚本更为实用,因为我们会发现一个应用可能会启用多个进程,即会产生多个pid,如果用kill会很麻烦,直接用killall会方便多(前提是进程名一样)
  • kill + 进程名
[root@VM-12-5-centos ~]# pgrep nginx
19476
19477
[root@VM-12-5-centos ~]# kill nginx
-bash: kill: nginx: arguments must be process or job IDs
[root@VM-12-5-centos ~]# killall nginx
[root@VM-12-5-centos ~]# pgrep nginx
  • pkill:pkill命令可通过进程名终止指定的进程,pkill作用和killall一样,他与killall有以下不同:
  • pkill + 进程名(可以模糊匹配,killall不支持)
  • 使用killall终止进程需要连续执行几次,而pkill可以杀死指定进程及其所有子进程。(注:这个是跟老男孩学Linux运维上看到的,但不晓得啥意思,有知道烦请评论区回复下)
[root@VM-12-5-centos ~]# pgrep nginx
23657
23658
[root@VM-12-5-centos ~]# killall ngin
ngin: no process found
[root@VM-12-5-centos ~]# pkill ngin
[root@VM-12-5-centos ~]# killall nginx -v
Killed nginx(23510) with signal 15
Killed nginx(23511) with signal 15



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
25 3
|
6天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
19 2
|
7天前
|
存储 运维 监控
深入Linux基础:文件系统与进程管理详解
深入Linux基础:文件系统与进程管理详解
43 8
|
6天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
24 3
|
9天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
36 6
|
10天前
|
监控 Linux 开发者
如何在 Linux 中优雅的使用 head 命令,用来看日志简直溜的不行
`head` 命令是 Linux 系统中一个非常实用的工具,用于快速查看文件的开头部分内容。本文介绍了 `head` 命令的基本用法、高级用法、实际应用案例及注意事项,帮助用户高效处理文件和日志,提升工作效率。
22 7
|
10天前
|
监控 Linux Perl
Linux 命令小技巧:显示文件指定行的内容
在 Linux 系统中,处理文本文件是一项常见任务。本文介绍了如何使用 head、tail、sed 和 awk 等命令快速显示文件中的指定行内容,帮助你高效处理文本文件。通过实际应用场景和案例分析,展示了这些命令在代码审查、日志分析和文本处理中的具体用途。同时,还提供了注意事项和技巧,帮助你更好地掌握这些命令。
26 4
|
9天前
|
缓存 网络协议 Linux
Linux ip命令常用操作
Linux的 `ip`命令是一个强大且灵活的网络管理工具,能够执行从基本的网络接口配置到高级的路由和VLAN管理等多种操作。通过熟练掌握这些常用操作,用户可以更加高效地管理和配置Linux系统的网络环境。无论是在日常管理还是故障排除中,`ip`命令都是必不可少的工具。
11 2
|
Linux 开发工具
Linux_进程管理&计划任务
目录 目录 top打开Linux系统任务管理控制台 ps进程查询指令 kill进程关闭指令 一个小实验 一次性计划任务 周期性计划任务 top打开Linux系统任务管理控制台 快捷键: P M k q r ? > < 进程优先级设定: nice -n ...
946 0
|
Linux 安全 Shell
Linux进程管理(第二版) --计划任务
计划任务 一、一次性计划任务 at命令 #功能:安排一个/几个命令在指定时间(时刻)运行一次 1、at的命令格式及参数  at [-f 文件名] 时间 at -d 或者 atrm 删除队...
1022 0