完整文档
ps 命令用于显示命令执行瞬间的进程状态(Process Status)。如果想动态查看进程状态可以使用 top 命令。
前台进程:由终端初始化,可以通过命令行进行交互。需要由用户启动,不能作为系统功能或服务的一部分自动启动。 后台进程:进程在后台运行,没有连接到终端,无法跟用户交互。 守护进程:特殊的后台进程,在系统启动时启动,并作为服务一直运行。作为系统任务启动(作为服务运行)。用户可以通过 init 进程进行控制。
每个进程都有一份内存空间,当对已有进程的内存空间进行完整复制,就可以创建出一个新的进程。子进程和父进程只有进程的 PID 不同。
Linx 中有两种方式创建进程:
system() 函数:简单低效,有明显的安全隐患。fork() 和 exec() 函数:复杂,更加灵活、快速安全。每个进程都有系统中独一无二的进程 ID(PID)。每个进程都有父进程的进程 ID(PPID)。
Linux 系统启动后,内核首先运行 init 进程(Linux 中所有进程的父进程)。init 进程的 PID 为 1。其他所有进程都是通过 fork 这个 init 进程得到的。
如果只是想查看某个进程的 PID,可以使用 pidof 命令,例如:
pidof systemd 1085执行命令即可启动前台进程,可以使用 Ctrl + Z 给前台进程发送 SIGSTOP 信号暂停进程并转入后台运行:
./my.shelljobs 命令可以查看后台进程,bg 命令可以启动刚转入后台并暂停的进程。fg 加 PID 可以将后台进程转为前台进程。 在命令后面添加 & 符号则可以启动后台进程。
./my.shell &Linux 中进程的 5 种状态:
运行 Running:正在运行或准备运行(在运行队列中等待)等待 Waiting :等待某个条件的形成或系统资源,分为两种: 中断:可以被信号中断不可中断:正在等待硬件条件(IO),不能被任何事件或信号中断僵死 Zombie:进程已终止,但进程描述符存在,直到父进程调用 wait4() 系统调用后释放停止 Stopped:进程收到 SIGSTOP、SIGSTP、SIGTIN、SIGTOU 信号后停止运行pstree 可以显示整个进程树:
[root@VM_120_242_centos ~]# pstree systemd─┬─acpid ├─2*[agetty] ├─atd ├─auditd───{auditd} ├─barad_agent─┬─barad_agent │ └─barad_agent─┬─sh─┬─grep │ │ ├─ntpdate │ │ └─sed │ └─3*[{barad_agent}] ├─chronyd ├─crond ├─dbus-daemon ├─gssproxy───5*[{gssproxy}] ├─lsmd ├─lvmetad ├─mysqld───35*[{mysqld}] ├─nginx───nginx ├─php-fpm───32*[php-fpm] ├─polkitd───5*[{polkitd}] ├─rpc.statd ├─rpcbind ├─rsyslogd───2*[{rsyslogd}] ├─sap1002 ├─sap1004 ├─sap1005 ├─sap1009 ├─secu-tcs-agent ├─sgagent───{sgagent} ├─sshd───sshd───bash───pstree ├─svnserve ├─systemd-journal ├─systemd-logind ├─systemd-udevd ├─tuned───4*[{tuned}] └─vsftpdD 不可中断,通常是 IO R 运行 runnable (on run queue) S 中断 sleeping T 停止 traced or stopped Z 僵死 zombie process
-A 显示所有进程 -e 等于“-A” e 显示环境变量 -f 显示程序间的关系 -u 指定用户的所有进程 -aux 显示所有包含其他使用者的行程
-e 或 -A 可以列出全部进程
示例:
ps -e PID TTY TIME CMD 1 ? 01:27:34 systemd 2 ? 00:00:01 kthreadd 3 ? 00:11:22 ksoftirqd/0 ...示例:
ps -u root PID TTY TIME CMD 1 ? 00:00:16 systemd 2 ? 00:00:00 kthreadd 3 ? 00:04:25 ksoftirqd/0 5 ? 00:00:00 kworker/0:0H ...-o pid,ppid,comm,cmd 可以只显示 PID,PPID,COMMAND,CMD
示例:
[root@VM_120_242_centos ~]# ps -eo pid,ppid,comm,cmd PID PPID COMMAND CMD 1 0 systemd /usr/lib/systemd/systemd --system --deserialize 23 2 0 kthreadd [kthreadd] 3 2 ksoftirqd/0 [ksoftirqd/0] 5 2 kworker/0:0H [kworker/0:0H] 7 2 migration/0 [migration/0] 1011 738 sshd sshd: root@pts/0 1013 1011 bash -bash 2337 1013 ps ps -eo pid,ppid,comm,cmd 3671 31510 php-fpm php-fpm: pool www 4062 31510 php-fpm php-fpm: pool www 7839 31510 php-fpm php-fpm: pool www 31510 1 php-fpm php-fpm: master process (/etc/php-fpm.conf) ...e 可以查看环境变量。
示例:
ps e PID TTY STAT TIME COMMAND 1013 pts/0 Ss 0:00 -bash USER=root LOGNAME=root HOME=/root PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin MAIL=/var/mail/root SHELL=/bin/bash SSH_CLIENT=183.15.178.23 60777 22 SSH_CONNECTION=183.15.178.23 60777 10.135.120.242 22 SSH_TTY=/dev/pts/0 TERM=x 1239 pts/0 R+ 0:00 ps e XDG_SESSION_ID=1408128 HOSTNAME=VM_120_242_centos TERM=xterm SHELL=/bin/bash HISTSIZE=3000 SSH_CLIENT=183.15.178.23 60777 22 QTDIR=/usr/lib64/qt-3.3 QTINC=/usr/lib64/qt-3.3/include SSH_TTY=/dev/pts/0 QT_GRAPHICSSYSTEM_CHECKED=1 USER=root ...-f 可以查看比 -e 更多的字段。
示例:
[root@VM_120_242_centos ~]# ps -f UID PID PPID C STIME TTY TIME CMD root 1013 1011 0 12:41 pts/0 00:00:00 -bash root 1425 1013 0 12:45 pts/0 00:00:00 ps -f [root@VM_120_242_centos ~]# ps PID TTY TIME CMD 1013 pts/0 00:00:00 bash-aux 可以查看环境变量
示例:
[root@VM_120_242_centos ~]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.2 188708 2268 ? Ss 2017 87:34 /usr/lib/systemd/systemd --system --deserialize 23 root 2 0.0 0.0 0 0 ? S 2017 0:01 [kthreadd] root 3 0.0 0.0 0 0 ? S 2017 11:22 [ksoftirqd/0] ...示例:
[root@VM_120_242_centos ~]# ps -e | grep ssh 738 ? 00:09:18 sshd 1011 ? 00:00:00 sshd [root@VM_120_242_centos ~]# ps -e | grep svn 9780 ? 00:00:05 svnserve转载于:https://www.cnblogs.com/kika/p/10851554.html
相关资源:Linux下的ps aux命令详解