Linux进程与服务

1. 概念区分

1.1. 程序
这里的程序主要指应用程序,编写好的一段代码,这里介绍程序,主要是为了后面和进程做区分。

1.2.进程
操作系统最核心的概念就是进程。其实进程简单来说就是在操作系统中运行的程序,它是操作系统资源管理的最小单位。但是进程是一个动态的实体,它是程序的一次执行过程。

进程和程序的区别在于:

进程是动态的,程序是静态的,进程是运行中的程序;
而程序是一些保存在硬盘上的可执行代码。

1.3.服务
Linux中的服务一般都是常见的,一直在运行的命令,其独立于控制终端,不受前台和终端的控制,在后台周期性地执行某种任务或等待处理某些发生的事件。运行服务的进程通常被成为后台进程(守护进程)。服务由service启动,并配置。使用上通常由systemctl命令进行控制。

2.ps命令

2.1 ps(Process Status)命令主要用来显示Linux进程信息,进程信息主要包括进程用户、pid、内存、cpu、启动时间、路径、终端等。ps命令列出的是当前进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令-性能分析常用命令。

Linux上进程的状态

 R 运行 runnable (on run queue) ,正在运行或在运行队列中等待)。
 S 中断 sleeping,休眠中, 受阻, 在等待某个条件的形成或接受到信号。
 D 不可中断 uninterruptible sleep (usually IO),收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
 Z 僵死 a defunct (”zombie”) process,进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。残存在内存中。
 T 停止 traced or stopped ,进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号后停止运行运行。

2.2 ps命令主要用途

查看进程有没有启动
查看进程的pid并使用kill命令杀掉
查看哪些进程占用的cpu高
查看哪些进程占用内存高
查看进程的状态

2.3 命令:ps aux
以简单列表的形式显示出进程信息

# 查看系统中所有进程,使用BSD操作系统格式
ps aux
选项:
a:显示一个终端的所有进程,除了会话引线
u:显示进程的归属用户及内存的使用情况
x:显示没有控制终端的进程
ps aux

在这里插入图片描述

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER:该进程是由哪个用户产生的;
PID:进程的ID号;
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位KB;
RSS:该进程占用实际物理内存的大小,单位KB;
TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端(现在不止256个)。?表示内核启动的
STAT:进程状态。常见的状态有R运行,S睡眠,T停止状态,s包含子进程,+位于后台
START:该进程的启动时间
TIME:该进程占用CPU的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名

常用的是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。

# 查看指定进程pid(sshd)
ps -aux | grep sshd
# 按cpu使用率降序显示
ps -aux --sort -pcpu

# 按内存使用率降序显示
ps -aux --sort -pmem

# 找出消耗内存最多的前10名进程
ps -aux --sort -pmem | head -10

2.4 命令ps -elf

以长格式显示系统中的进程信息,并且包含更丰富的内容

-e :显示系统内的所有进程信息
-l :使用长( Long )格式显示进程信息
-f :使用完整的( Full )格式显示进程信息

在这里插入图片描述

UID:用户ID(User ID)
PID:进程ID(Process ID)
PPID:父进程的进程ID(Parent Process id)
C:CPU使用的资源百分比(CPU用户计算执行优先级的因子,数值越大CPU密集运算执行优先级越低)
STIME :启动时间
TTY:与进程关联的终端(tty)(完整的终端名称)
TIME:进程使用的总cpu时间
CMD:正在执行的命令行命令

3.动态查看进程统计信息

top
top命令将会在当前终端以全屏交互式的界面显示进程排名,及时跟踪包括CPU、内存等系统资
源占用情况,默认情况下每三秒刷新一次

top:查看进程
top -m:查看当前进程
5.查看进程信息pgrep
用途:
根据特定条件查询进程PID信息
常用选项:
-l:显示进程名A
-U:指定特定用户
-t:指定终端
示例:
pgrep -l “log”
pgrep -l -U teacher -t tty1

6.查看进程信息pstree
用途:
以树形结构列出进程信息
常用选项:
-a:显示完整信息
-u:列出对应用户名
-p:列出对应PID号
示例:
pstree -aup
pstree -ap teacher

终止进程的运行
Ctrl+C组合键
中断正在执行的命令

kill、killall命令
kill用于终止指定PID号的进程t
kllall用于终止指定名称的所有进程
-9选项用于强制终止

服务(service)管理

服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld、sshd、防火墙等),因此我们又称为守护进程。

外部客户端、外部程序去使用或者连接Linux系统服务原理图。

服务的运行级别(runlevel)

Linux系统有7种运行级别(runlevel):常用的是级别3和5

运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆

运行级别2:多用户状态(没有NFS),不支持网络

运行级别3:完全的多用户状态(有NFS),无界面,登陆后进入控制台命令行模式

运行级别4:系统未使用,保留

运行级别5:X11控制台,登陆后进入图形GUI模式

运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
multi-user.target,多用户状态,运行级别3

graphical.target,图形GUI模式,运行级别5

1.查看当前运行级别:
systemctl get-default
2.修改当前运行级别
systemctl set-default TARGET.target (这里 TARGET 取 multi-user 或者 graphical)

systemctl配置文件的设置

这里我们先查看一下service里面的内容,随便找了一个内容比较多的sshd.service,方便讲解,指令结果如下:

[root@xcz7 ~]# cat /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

service管理指令案例

请使用service指令,查看,关闭,启动network [注意:在虚拟系统演示,因为网络连接会关闭]

指令:

service network status
service network stop
service network start

chkconfig指令

每个服务对应的自启动或者关闭,是针对不同级别而言的。

每个服务对应的自启动或者关闭,对于不同级别是不同的。

比如,network服务可以在运行级别3是自启动的,可以在运行级别5是关闭的。

通过chkconfig命令可以给服务的各个运行级别设置自启动/关闭。

chkconfig重新设置服务后自启动或关闭,需要重启机器reboot生效。

chkconfig指令管理的服务在/etc/init.d查看。

基本语法

1)chkconfig --list [|grep xxx] 查看服务

2)chkconfig 服务名--list 查看某服务

3)chkconfig --level 5 服务名 on/off 设置服务的自启动或关闭

systemctl

基本语法

systemctl [命令] [服务名]
start:立刻启动后面接的服务名。
stop:立刻关闭后面接的服务名。
restart:立刻关闭后启动后面接的 服务名,亦即执行 stop 再 start 的意思。
reload:不关闭 服务名的情况下,重新载入配置文件,让设置生效。
enable:设置下次开机时,后面接的 服务名会被启动。
disable:设置下次开机时,后面接的 服务名不会被启动。
status:目前后面接的这个 服务名的状态,会列出有没有正在执行、开机时是否启动等信息。

使用例子

# (1)查看防火墙服务的状态
systemclt status firewalld
#(2)停止防火墙服务
systemclt stop firewalld

systemctl 设置后台服务的自启配置
基本语法

systemctl list-unit-files (功能描述:查看全部服务开机启动状态)
systemctl disable service_name (功能描述:关掉指定服务的自动启动)
systemctl enable service_name (功能描述:开启指定服务的自动启动)

tip
init 是最初的进程管理方式
service 是init 的另一种实现
systemd 则是一种取代 initd 的解决方案

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值