11-进程间通信-ps命令使用
LRU:Least Recently Used 近期最少使用算法(喜新厌旧),释放内存
旧的不常用的数据会被淘汰
进程间通信
IPC: Inter Process Communication
同一主机
pipe 管道,单向传输 socket 套接字文件,双工通信 Memory-maped file 文件映射,将文件中的一段数据映射到物理内存,多个进程共享这片内存 shm shared memory 共享内存 signal 信号 Lock 对资源上锁,如果资源已被某进程锁住,则其它进程想修改甚至读取这些资源,都将被阻 塞,直到锁被打开 semaphore 信号量,一种计数器,
不同主机:socket=IP和端口号
RPC remote procedure call
MQ 消息队列,生产者和消费者,如:Kafka,RabbitMQ,ActiveMQ
利用管道文件实现 IPC
mkfifo /data/test.fifo cat > /data/test.fifo sss cat /data/test.fifo sss
函数专门存放调用
root@ubuntu2004:/etc/init.d# cat /etc/init.d/color color () { RES_COL=60 MOVE_TO_COL="echo -en \\033[${RES_COL}G" SETCOLOR_SUCCESS="echo -en \\033[1;32m" SETCOLOR_FAILURE="echo -en \\033[1;31m" SETCOLOR_WARNING="echo -en \\033[1;33m" SETCOLOR_NORMAL="echo -en \E[0m" echo -n "$1" && $MOVE_TO_COL echo -n "[" if [ $2 = "success" -o $2 = "0" ] ;then ${SETCOLOR_SUCCESS} echo -n $" OK " elif [ $2 = "failure" -o $2 = "1" ] ;then ${SETCOLOR_FAILURE} echo -n $"FAILED" else ${SETCOLOR_WARNING} echo -n $"WARNING" fi ${SETCOLOR_NORMAL} echo -n "]" echo }
. /etc/init.d/color 调用
ps 即 process state,可以进程当前状态的快照,默认显示当前终端中的进程,Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中
a 选项包括所有终端中的进程 x 选项包括不链接终端的进程 u 选项显示进程所有者的信息 f 选项显示进程树,相当于 --forest k|--sort 属性 对属性排序,属性前加 - 表示倒序 o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem L 显示支持的属性列表 -C cmdlist 指定命令,多个命令用,分隔 -L 显示线程 -e 显示所有进程,相当于-A -f 显示完整格式程序信息 -F 显示更完整格式的进程信息 -H 以进程层级格式显示进程相关信息 -u userlist 指定有效的用户ID或名称 -U userlist 指定真正的用户ID或名称 -g gid或groupname 指定有效的gid或组名称 -G gid或groupname 指定真正的gid或组名称 -p pid 显示指pid的进程 --ppid pid 显示属于pid的子进程 -t ttylist 指定tty,相当于 t -M 显示SELinux信息,相当于Z
ps 输出属性
C : ps -ef 显示列 C 表示cpu利用率 VSZ: Virtual memory SiZe,虚拟内存集,线性内存 RSS: ReSident Size, 常驻内存集 STAT:进程状态 R:running S: interruptable sleeping D: uninterruptable sleeping T: stopped Z: zombie +: 前台进程 l: 多线程进程 L:内存分页并带锁 N:低优先级进程 <: 高优先级进程 s: session leader,会话(子进程)发起者 I:Idle kernel thread,CentOS 8 新特性 ni: nice值 pri: priority 优先级 rtprio: 实时优先级 psr: processor CPU编号
[root@centos7 ~]# ps aux |grep nginx | awk '{ print $6/1024 "M" "\t" $0 }' 0.65625M root 945 0.0 0.0 28224 672 ? Ss 07:22 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 28.4922M nginx 947 1.7 0.7 55756 29176 ? R 07:22 6:16 nginx: worker process 28.4922M nginx 948 1.7 0.7 55756 29176 ? R 07:22 6:11 nginx: worker process 0.960938M root 3484 0.0 0.0 112824 984 pts/0 R+ 13:11 0:00 grep --color=auto nginx
按CPU和内存利用率排序
[root@centos7 ~]# ps axo pid,cmd,%cpu,%mem k -%cpu |head PID CMD %CPU %MEM 2606 ab -n 20000 -c 2 http://192 104 0.0 947 nginx: worker process 0.4 0.7 948 nginx: worker process 0.4 0.7 2438 [kworker/0:0] 0.2 0.0 2429 [kworker/0:1] 0.1 0.0 1 /usr/lib/systemd/systemd -- 0.0 0.0 2 [kthreadd] 0.0 0.0 4 [kworker/0:0H] 0.0 0.0 6 [ksoftirqd/0] 0.0 0.0
[root@centos7 ~]# ps axo pid,cmd,%cpu,%mem k -%mem |head PID CMD %CPU %MEM 930 /usr/bin/fdfs_storaged /etc 0.0 1.7 947 nginx: worker process 0.6 0.7 948 nginx: worker process 0.6 0.7 912 /usr/bin/python2 -Es /usr/s 0.0 0.4 484 /usr/lib/systemd/systemd-jo 0.0 0.4 667 /usr/lib/polkit-1/polkitd - 0.0 0.3 918 /usr/sbin/rsyslogd -n 0.0 0.3 685 /usr/sbin/NetworkManager -- 0.0 0.2 944 /usr/bin/fdfs_trackerd /etc 0.0 0.2