学点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
相关文章
|
3天前
|
安全 Linux
Linux系统之lsof命令的基本使用
【10月更文挑战第14天】Linux系统之lsof命令的基本使用
24 2
Linux系统之lsof命令的基本使用
|
4天前
|
Linux
Linux 系统五种帮助命令的使用
Linux 系统五种帮助命令的使用
30 14
|
1天前
|
运维 网络协议 Linux
linux系统命令 losf详解
**lsof命令**(List Open Files)是Linux系统中一个非常实用的工具,用于列出当前系统上所有打开的文件以及与之关联的进程。以下是对lsof命令的详细介绍: ### 一、基本功能 lsof命令可以显示系统中被进程打开的文件,这些文件可以是普通文件、目录、网络套接字、设备文件等。通过lsof命令,用户可以方便地查看哪些文件被哪些进程打开,以及这些文件的状态信息。 ### 二、基本语法 lsof命令的基本语法为:`lsof [选项] [文件]`。其中,选项用于指定lsof命令的行为,文件则是可选的,用于指定要查询的文件。 ### 三、常用选项 * `-a` 或 `-
|
1天前
|
Linux Perl
Linux awk命令使用技巧
【10月更文挑战第16天】Linux awk命令使用技巧
9 4
|
6天前
|
Linux
Linux经常使用命令汇总和总结
Linux经常使用命令汇总和总结
25 1
|
6天前
|
安全 Linux Shell
Linux | Rsync 命令:16 个实际示例(上)
Linux | Rsync 命令:16 个实际示例(上)
19 0
Linux | Rsync 命令:16 个实际示例(上)
|
5天前
|
Unix Linux 开发工具
Linux Vim的 命令大全
Linux Vim的 命令大全
12 0
|
11天前
|
Linux 数据安全/隐私保护 Windows
命令方式:window向linux传文件
【10月更文挑战第6天】本文介绍了如何在Linux系统中通过命令`ip a`获取IP地址,并在Windows系统下使用CMD命令行工具和SCP命令实现文件传输。示例展示了如何将D盘中的`mm.jar`文件上传至IP地址为192.168.163.122的Linux系统的/up/目录下,最后在Linux系统中确认文件传输结果。
167 65
|
Linux 开发工具
Linux_进程管理&计划任务
目录 目录 top打开Linux系统任务管理控制台 ps进程查询指令 kill进程关闭指令 一个小实验 一次性计划任务 周期性计划任务 top打开Linux系统任务管理控制台 快捷键: P M k q r ? > < 进程优先级设定: nice -n ...
944 0
|
Linux 安全 Shell
Linux进程管理(第二版) --计划任务
计划任务 一、一次性计划任务 at命令 #功能:安排一个/几个命令在指定时间(时刻)运行一次 1、at的命令格式及参数  at [-f 文件名] 时间 at -d 或者 atrm 删除队...
1020 0