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 的解决方案