什么是进程
进程是已经启动的可执行程序的运行实例,是程序运行的过程,动态的,有生命周期及运行状态。
进程的生命周期
父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个,唯一的进程 ID (PID),满足跟踪安全性之需。任何进程都可以创建子进程。
进程状态
进程状态产生的原因:在多任务处理操作系统中,每个CPU(或核心)在一个时间点上只能处理一个进程。在进程运行时,它对CPU 时间和资源分配的要求会不断变化,从而为进程分配一个状态,它随着环境要求而改变。
(1)R运行状态(runing):并不意味着进程一定在运行中,也可以在运行队列里;
(2)S睡眠状态(sleeping):进程在等待事件完成;(浅度睡眠,可以被唤醒)
(3)D磁盘睡眠状态(Disk sleep):不可中断睡眠(深度睡眠,不可以被唤醒,通常在磁盘写入时发生)
(4)T停止状态(stopped):可以通过发送SIGSTOP信号给进程来停止进程,可以发送SIGCONT信号让进程继续运行
(5)X死亡状态(dead):该状态是返回状态,在任务列表中看不到;
(6)Z僵尸状态(zombie):子进程退出,父进程还在运行,但是父进程没有读到子进程的退出状态,子进程进入僵尸状态;
(7)t追踪停止状态(trancing stop)
查看进程process
查看tty的方法:
ps -ef
参数解释:
-e 显示所有进程
-l 长格式显示
-f 完整格式
查看单个pid
[root@localhost ~]# yum install -y httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl status httpd
[root@localhost ~]# cat /var/run/httpd/httpd.pid
[root@localhost ~]# ps aux |grep httpd
查看指定pid
[root@localhost ~]# ps aux|grep sshd
root 891 0.0 0.4 105996 4120 ? Ss 08:47 0:00 /usr/sbin/sshd -D
root 51573 0.3 0.5 146020 5620 ? Ss 20:34 0:08 sshd: root@pts/0,pts/1
查看端口
[root@localhost ~]# yum -y install lsof #安装软件包
[root@localhost ~]# lsof -i:22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 891 root 3u IPv4 18805 0t0 TCP *:ssh (LISTEN)
sshd 891 root 4u IPv6 18814 0t0 TCP *:ssh (LISTEN)
sshd 51573 root 3u IPv4 4007647 0t0 TCP localhost:ssh->192.168.242.1:59081 (ESTABLISHED)
查看网络进程和正在监听的端口
[root@localhost ~]# netstat -lnpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
参数详解:
-a 显示全部的进程
-u 显示udp
-n 以数字的形式显示协议名称
-t tcp
-p:显示进程的名称和pid
-l :只显示正在被监听的端口
查看httpd占用的端口号:netstat -lnpt |grep httpd
想查看某个端口号下的进程:netstat -lnpt |grep 22 或者 lsof -i:22
动态查看进程
[root@localhost ~]# top
top - 21:22:17 up 12:34, 3 users, load average: 0.01, 0.05, 0.05
Tasks: 107 total, 1 running, 106 sleeping, 0 stopped, 0 zombie
%Cpu(s): 6.2 us, 12.5 sy, 0.0 ni, 81.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 999696 total, 515176 free, 121608 used, 362912 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 690936 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
ni:nice值
id:cpu空闲率
wa:cpu等待,等待输入/输出的进程占用的 CPU 百分比。如果使用率过高,表示硬盘该换了
nice 值越高:表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
nice 值越低:表示优先级越高,例如-20,该进程更不倾向于让出CPU。
进程控制
按pid杀死进程
kill -1 重新加载进程或者配置文件
kill -9 强制杀死进程
kill 默认等于kill -15 正常杀死进程
kill -18 激活进程
kill -19 挂起进程
kill 后面输入进程的pid
pkill 后面输入进程名
作业控制
sleep 7000 & 让命令或者程序后台运行
sleep 8000 ctrl z 把命令或程序放到后台(这方法会是程序在后台暂停
jobs 查看后台的工作号
bg %工作号 让暂停的程序在后台运行,%是用来修饰job number
fg %工作号 把后台的程序调到前台
kill -9 %工作号 通过kill杀死进程
kill -18 %工作号 将后台暂停的程序激活
常用命令(了解)
uptime 查看cpu负载
free -m 查看内存使用情况
linux启动过程
1加电,
2加载bios设置,
3加载grub,
4加载内核系统到内存当中,
5加载配置文件,
6加载内核模块,
7完成相应的初始化工作和启动相应的服务,
8启动系统进程,
9出现登录界面,
10开机启动完成
查看系统的版本和内核
[root@linux-server ~]# cat /etc/redhat-release #查看版本
CentOS Linux release 7.4.1708 (Core)
[root@linux-server ~]# uname -a #看查正在运行的内核版本
Linux linux-server 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@linux-server ~]# uname -r #查看内核版本
3.10.0-693.el7.x86_64
特殊权限
chatter -i 文件路径 #不允许做任何操作
chatter -a 文件路径 #不允许修改,只允许追加