首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >linux - 进程和服务(上篇)

linux - 进程和服务(上篇)

原创
作者头像
stark张宇
发布于 2024-03-10 12:49:50
发布于 2024-03-10 12:49:50
5210
举报
文章被收录于专栏:stark张宇stark张宇

概述

接着之前的Linux系列篇,第二篇主要介绍进程和服务,从进程到服务,由浅入深的知识系统的介绍。

进程、程序和服务

Linux系统只认识二进制文件,那么当我们要让系统工作的时候,启动一个二进制文件,这个二进制文件就是程序

程序一般放置在屋里磁盘中,然后通过用户的执行来触发,触发后会加载到内存中称为一个个体,那就是进程

为了让操作系统可以管理这个进程,进程会给予执行者权限/属性等参数,以及进程所需的脚本或数据等,最后在给予一个PID。

我们将它在后台启动并一直持续不断地运行,常驻在内存当中的进程,被我们称为服务

任务管理(job control)

有时我们想把服务放入后台执行,有多种办法,下面利用后台管理任务和数据流,把输出的信息都重定向到/tmp/log.txt文件中,96就是这次进程执行的PID。

代码语言:bash
AI代码解释
复制
[root@57926ad08c2f /]# tar -zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 &
[1] 96

1.查看目前后台的任务状态

jobs 参数

  • -l: 除了列出Job number与命令串之外,同时列出PID的号码
  • -r: 仅列出正在后台的run的任务
  • -s:仅列出正在后台当中暂停的任务
代码语言:bash
AI代码解释
复制
# jobs -l
[1]+    96 Done  tar -zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1

2.将后台任务拿到前台来处理 fg

代码语言:bash
AI代码解释
复制
[root@57926ad08c2f /]# vim /run.sh &
[1] 98
[root@57926ad08c2f /]# jobs -l
[1]+    98 Stopped (tty output)    vim /run.sh
[root@57926ad08c2f /]# fg %1
vim /run.sh
[root@57926ad08c2f /]#  

3.让任务在后台下的状态变成运行中 bg

4.管理后台当中的任务 kill

kill的使用语法kill -signal %jobnumber,使用kill -l来查看信号的列表,我们只介绍最常用的命令:

  • -1 : 重新读取一次参数的配置文件
  • -2 : 代表由键盘输入ctrl+c同样的操作
  • -9 : 立刻强制删除一个任务
  • -15 : 以正常的进程方式终止一项任务,与-9是不一样的
代码语言:bash
AI代码解释
复制
[root@57926ad08c2f /]# kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX

进程管理

进程管理最好用的三个命令分别是ps aux 、ps axjf 、pstree,它们都是查看系统进程里很高效的工具。

  • ps aux : 查看所有的系统进程
  • ps axjf :列出类似进程树的进程显示,以下面的php-fpm为例
代码语言:bash
AI代码解释
复制
[root@cc ~]# ps axjf | grep php
    1  1573  1573  1573 ?           -1 Ss       0   8:35 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
 1573  8530  1573  1573 ?           -1 S       99   0:01  \_ php-fpm: pool www
 1573  8574  1573  1573 ?           -1 S       99   0:00  \_ php-fpm: pool www
 1573  8611  1573  1573 ?           -1 S       99   0:00  \_ php-fpm: pool www
 8850  9209  9208  8850 pts/1     9208 S+       0   0:00          \_ grep --color=auto php
  • pstree 也是一个超级好用的命令,pstree如果不存在,需要使用yum install -y pstree安装。
代码语言:bash
AI代码解释
复制
[root@cc ~]# pstree -pua | grep php
  |-php-fpm,1573
  |   |-php-fpm,8713,nobody
  |   |-php-fpm,8715,nobody
  |   |       |-grep,9415 --color=auto php
僵尸进程

僵尸进程,僵尸进程的原因在于该进程应该已经执行完毕,或是应该终止了,但是该进程的父进程却无法完整的该进程结束掉,而造成该进程一直存在于内存当中。

如果发现在某个cmd后面接上<defunct>时,就代表该进程一直存在于内存当中。

系统不稳定的时候就容易造成所谓的僵尸进程,记得要找出该进程的父进程,然后好好追踪进行主机的环境优化,看看有什么地方需要改善,不要只是直接的kill掉。

查看系统的资源信息

这里我们介绍两个常用的命令,freenetstat

1.查看系统内存资源 free

free 参数详解:

  • -b: 直接输入free时,显示的单位是KBytes,我们可以使用b或者m
  • -t: 在输出的最终结果,显示物理内存与swap的总量
  • -s: 可以让系统不断刷新数据,20秒刷新数据的命令是free -m -s 20

2.追踪网络或socket文件

  • -a: 将目前系统上所有的连接、监听、socket信息都列出来。
  • -t: 列出tcp网络包的信息。
  • -u: 列出udp网络包的信息。
  • -l: 列出目前正在网络监听的服务。
  • -p: 列出该网络服务进程的PID。

比如统计服务器上的连接数,18101和3306是端口号

代码语言:bash
AI代码解释
复制
netstat -ant|grep ESTABLISHED| wc -l;
netstat -ant|grep ESTABLISHED|grep 18101 |wc -l;
netstat -ant|grep ESTABLISHED|grep 3306 | wc -l

服务

早期System V的init管理操作系统

使用init管理服务,所有的服务启动脚本放置于/etc/ini.d/目录,基本上都是使用bash shell所写成的脚本程序,要想到lnmp的一键安装包(现在也感觉lnmp超级方便),以服务器上的Nginx和php为例:

代码语言:bash
AI代码解释
复制
[root@cc ~]# /etc/init.d/nginx
Usage: /etc/init.d/nginx {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}

[root@cc ~]# /etc/init.d/php
Usage: /etc/init.d/php {start|stop|restart}

制定运行级别默认要启动的服务,以Nginx服务为例

  • chkconfig nginx on : 默认启动
  • chkconfig nginx off :默认不启动
  • chkconfig --list nginx : 查看默认启动状态

systemd 使用的unit分类

从CentOs7.X以后,服务管理从init转向到systemd的方式,一般来说服务的启动有两个阶段,一个是开机要不要启动服务,一个是现在要不要启动这个服务。

systemctl cmd

  • start : 立刻启动后面的unit
  • stop: 立刻关闭后面的unit
  • restart : 立刻重启后面的unit,立即执行stop,再start的意思
  • reload : 不关闭后面接的unit的情况下,重新加载配置文件,让设置生效
  • enable : 设置下次开机时,后面接的unit会被启动
  • disenable : 设置下次开机时,后面的unit不会被启动
  • status : 查看unit的状态
  • is_active: 目前有没有正在进行中
  • is_enable: 开机时有没有默认要启动这个unit

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
linux进程管理:进程,程序,线程 & 9个进程管理工具 & 作业控制
程序 ------》系统调用-------》缓存(内存) -------》cpu处理 执行任务
用户5807183
2019/09/23
3.8K0
linux进程管理:进程,程序,线程 & 9个进程管理工具 & 作业控制
Linux—进程管理
当程序运行的时候会由父进程通过fock创建子进程来处理任务;子进程被创建后开始处理任务,当任务处理完毕后就会退出,然后子进程会通知父进程来回收资源;如果子进程处理任务期间,父进程意外终止了,那么这个子进程就变成了僵尸进程。
Alone-林
2022/08/23
5.1K0
Linux—进程管理
【科研利器】进程管理
中断是系统用来影响硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来影响设备的请求
自学气象人
2022/11/14
9760
【科研利器】进程管理
【Linux】从零开始认识进程 — 中篇
我们可以使用fopen ("log.txt",“w”)来进行使用,该函数会在路径下创建一个新文件log.txt。即可验证进程所处路径:
叫我龙翔
2024/03/21
1450
【Linux】从零开始认识进程 — 中篇
Linux基础之进程 原
操作系统的一个重要功能就是为进程提供方便,比如启动进程、为进程分配内存空间、管理进程的相关信息等等。
云飞扬
2019/03/13
6960
Linux基础之进程
                                                                            原
一天一个 Linux 命令(36):kill 命令
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/187
joshua317
2021/11/10
4730
【Linux】进程状态
我们知道,当可执行程序从磁盘等外设中加载到内存时,操作系统回味每一个进程创建一个task_struuct结构体,又称PCB,来保存有关该进程的所有属性。当该进程准备就绪,可以被CPU调用时,与此同时,可能会有多个进程同时处于准备就绪状态,这些进程所属状态就是运行状态(R状态),操作系统为了管理和有效这些处于运行状态的进程,就创建了一个运行队列,
破晓的历程
2024/06/24
5120
【Linux】进程状态
Linux之kill命令
原文链接:https://rumenz.com/rumenbiji/linux-kill.html
入门笔记
2021/07/27
4.6K0
linux常用命令~系统常用命令
jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。
Vincent-yuan
2021/12/20
1.5K0
linux常用命令~系统常用命令
[122]linux killall 、kill 、pkill 命令详解
Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name)。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。
周小董
2022/04/12
2.8K0
僵尸进程
这是我们在稳定性测试中遇到的,出现问题后机器是特别的卡,按下power按键等待几秒钟才能亮屏。
DragonKingZhu
2020/03/24
1.4K0
ubuntu kill命令_killall命令
Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令。通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。kill命令是通过向进程发送指定的信号来结束相应进程的。在默认情况下,采用编号为15的TERM信号。TERM信号将终止所有不能捕获该信号的进程。对于那些可以捕获该信号的进程就要用编号为9的kill信号,强行“杀掉”该进程。
全栈程序员站长
2022/11/16
2K0
linux系列之:告诉他,他根本不懂kill
和很多程序员打过交道,这些程序员可能熟知for遍历的好几种写法,但是却对写出来的程序部署的环境一无所知。我敢打赌,在spring boot出现之后,已经很少有程序员知道tomcat到底是怎么运行的了。对于他们来说,运行一个jar包就完事了。
程序那些事
2021/09/15
3750
Linux从入门到精通(十)——进程管理
​ 进程就是运行中的程序,一个运行着的程序,可能有多个进程。 比如 LinuxSir.Org 所用的 WWW 服务器是 apache 服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户来同时请求 httpd 服务,apache 服务器将会创建有多个 httpd 进程来对其进行服务。
传说之下的花儿
2023/04/16
1.5K0
Linux从入门到精通(十)——进程管理
Linux中的进程和服务常见命令
ps aux | grep xxx (功能描述:查看系统中所有进程) ps -ef | grep xxx (功能描述:可以查看子父进程之间的关系)
才疏学浅的木子
2023/10/17
3920
Linux中的进程和服务常见命令
Linux进程管理与资源管理
16.3 进程管理 本章一开始就提到所谓的『进程』的概念,包括进程的触发、子进程与父进程的相关性等等,此外,还有那个『进程的相依性』以及所谓的『殭尸进程』等等需要说明的呢!为什么进程管理这么重要呢?
小柒吃地瓜
2020/04/23
1.5K0
Linux系统的进程管理
进程process是指正在执行的程序;是程序正在运行的一个实例。它由程序指令,和从文件、其它程序中读取的数据或系统用户的输入组成。
江湖有缘
2023/07/27
4720
Linux系统的进程管理
常用Linux命令 (一)
第一行中,03:30:22是当前时间,up 39 min是系统运行的运行了多长时间,1 user指出了当前有几个用户登录到系统,load average指的是系统负载,这后面的三个值分别是1分钟,5分钟,15分钟的系统负载平均值。
用户2131907
2019/02/27
1.6K0
(硬核推荐!)Linux常用命令大全
cd命令,用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。
天道Vax的时间宝藏
2021/08/11
6870
linux中kill命令详解_linux kill函数
发送指定的信号到相应进程。不指定信号将发送SIGTERM(15)终止指定进程。如果无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户可操作所有用户的进程,非root用户只能操作自己的进程。
全栈程序员站长
2022/11/17
4.6K0
相关推荐
linux进程管理:进程,程序,线程 & 9个进程管理工具 & 作业控制
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档