一、linux-进程管理
灵魂三连问:我是谁?我从哪里来?我要到那里去?
进程:已启动的可执行程序的运行实例
组成部分:
-
一个文件
-
被分配内存的地址空间
-
有权限限制
-
程序代码的一个或者多个副本(也叫执行线程)
-
像人一样拥有
状态
1、
ps:process status
进程 状态 管理器
2、top:
[root@localhost ~]# ls -l /usr/bin/passwd
-(文件类型)rwsr-xr-x. 1 root root 27856 4月 1 2020 /usr/bin/passwd
3、
静态查看进程
ps
状态变化:由系统程序fork具有一定的父资源->
run->s
top->
zombie(没有退出)->
sleep
[root@localhost ~]# ps a(all)u(user)x(不以终端机来区分)
//查看进程
USER PID %CPU %MEM VSZ RSS TTY STAT
START TIME COMMAND
USER:运行程序的用户
PID:进程id;
%CPU:cpu占用率
%MEM:内存占有率
VSZ:占用虚拟内存
RSS:占用实际内存
TTY:进程运行的终端
STAT:进程状态
ATART:进程的启动时间
TIME:占用cpu时间
COMMAND:程序的路径和名称
root 1 0 0 0.4 193912 4440 ? Ss 7月27 0:06 /usr/lib/systemd/sys
root 2 0.0 0.0 0 0 ? S 7月27 0:00 [kthreadd] ......
4、进程排序
ps aux -- sort %cpu
[root@localhost ~]# ps -ef //
查看进程的父子关系
了解:自定义显示字段
ps axo
[root@localhost ~]#
[root@localhost ~]# ps axo user,pid,ppid,command |head -3
USER PID PPID COMMAND
root 1 0 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 [kthreadd]
4、
动态查看进程
top
h:所有帮助
q:退出
z:颜色
p:占用内存排序
k:结束进程
<>:前后翻页
上半部分:
1.
t
op() - 11:30:34 up 2 days, 19:28, 2 users, load average: 0.00, 0.01, 0.05
2.Tasks: 204 total, 1 running, 203 sleeping, 0 stopped, 0 zombie
3.%Cpu(s): 1.0 us, 0.7 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
4.KiB Mem : 995672 total, 62248 free, 573380 used, 360044 buff/cache
5.KiB Swap: 2097148 total, 1931772 free, 165376 used. 250592 avail Mem
下半部分:
[root@localhost ~]# top -d 3
//三秒刷新一次
5、
使用信号控制进程
5.1、信号种类:
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
-1:重新加载配置
-9:强制终止,无条件
[root@localhost ~]# ps aux |grep vim
root 52660 0.5 2.0 164880 20508 pts/1 S+ 12:19 0:00 vim file1
root 52706 0.2 0.5 149856 5544 pts/2 S+ 12:20 0:00 vim file2
root 52716 0.0 0.0 112824 976 pts/0 S+ 12:20 0:00 grep --color=auto vim
//查看文件1、文件2
[root@localhost ~]# kill -15 52660
//关闭文件1进程为52660
[root@localhost ~]# vim file1
Vim: Caught deadly signal TERM
Vim: Finished.
//删除完后的file1
[root@localhost ~]# kill -9 52706
//杀死文件2进程为52706
已杀死22
//杀死完后的file2
6、
进程优先级nice
nice值越大:表示优先级越低,例如19
nice值越小:表示优先级越高,例如-20
[root@localhost ~]# ps axo pid,command,nice --sort=-nice
//查看nice优先级
PID COMMAND NI
32 [khugepaged] 19
700 /usr/sbin/alsactl -s -n 19 19 ......
[root@localhost ~]# sleep 3 &
//倒计时三秒 &:放到后台
[root@localhost ~]# nice -n -5 sleep 7000 &
//
修改进程优先级为-5
[root@localhost ~]# ps axo pid,command,nice |grep sleep
//
查看进程优先级
60304 sleep 7000 -5
60358 sleep 60 0
60361 grep --color=auto sleep 0
二、作业控制jobs(了解)
fg:foreground 前台
bg:background 后台
[root@localhost ~]# jobs
//
查看运行中的后台程序
[root@localhost ~]# fg 1
nice -n -5 sleep 7000
//把1(sleep7000)调回前台
[root@localhost ~]# jobs
[1]+ 已停止 sleep 1000
[2] 运行中 sleep 1000 &
[3] 运行中 sleep 2000 &
[4] 运行中 sleep 3000 &
[5] 运行中 sleep 4000 &
[6]- 运行中 sleep 5000 &
[root@localhost ~]# bg 1
//
运行停止的进程
[1]+ sleep 1000 &
[root@localhost ~]# jobs
[1] 运行中 sleep 1000 &
[2] 运行中 sleep 1000 &
[3] 运行中 sleep 2000 &
[4] 运行中 sleep 3000 &
[5]- 运行中 sleep 4000 &
[6]+ 运行中 sleep 5000 &
三、虚拟文件系统(proc)
简介:
采集服务器自身、内核、进程运行的状态信息
cpu:
[root@localhost ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 140
model name : 11th Gen Intel(R) Core(TM) i5-11300H @ 3.10GHz
stepping : 1
microcode : 0x86
cpu MHz : 3110.399
cache size : 8192 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 27
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 arat avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq movdiri movdir64b md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
bogomips : 6220.79
clflush size : 64
cache_alignment : 64
address sizes : 45 bits physical, 48 bits virtual
power management:
内存:
[root@localhost ~]# cat /proc/meminfo
MemTotal: 995672 kB
MemFree: 111040 kB
MemAvailable: 206416 kB
Buffers: 36 kB
Cached: 234984 kB
SwapCached: 13992 kB
Active: 263140 kB
Inactive: 364852 kB
Active(anon): 157992 kB
Inactive(anon): 265236 kB
Active(file): 105148 kB
Inactive(file): 99616 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2097148 kB
SwapFree: 1929980 kB
Dirty: 4 kB
Writeback: 0 kB
AnonPages: 382120 kB
Mapped: 64180 kB
Shmem: 30256 kB
Slab: 99716 kB
SReclaimable: 36624 kB
SUnreclaim: 63092 kB
KernelStack: 9856 kB
PageTables: 36588 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2594984 kB
Committed_AS: 4183628 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 213588 kB
VmallocChunk: 34359277564 kB
Percpu: 55808 kB
HardwareCorrupted: 0 kB
AnonHugePages: 28672 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 100224 kB
DirectMap2M: 948224 kB
DirectMap1G: 0 kB
内核:
[root@localhost ~]# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=zh_CN.UTF-8