查询进程

ps

参数

  1. -a 显示所有 同 -e
  2. -j 采用工作控制的格式显示程序状况 同 j
  3. -u 列出属于该用户的程序的状况 同 U -U u
  4. x 显示所有程序,不区分终端机

应用

  1. 查看进程 pid ,名称,cpu 占用率 ps axo pid,comm,pcpu
  2. 按内存资源的使用量对进程进行排序 ps aux | sort -rnk 4
  3. 按 cpu 的使用量进行排序 ps aux | sort -nk 3
  4. 显示所有进程 ps -A
  5. 显示指定用户信息 ps -u root
  6. 查看线程数 ps -efL
  7. 查看进程并按内存使用大小排列 ps -e -o “%C : %p :%z : %a”|sort -k5 -nr
  8. 显示所有进程信息,连同命令行 ps -ef
  9. ps 与grep 常用组合用法,查找特定进程 ps -ef | grep ssh
  10. 通过名字或命令搜索进程 ps -C nginx
  11. 用树的风格显示进程的层次关系 ps -f –forest -C nginx
  12. 显示进程运行的时间 ps -e -o pid,com,etime
  13. 查看named进程详细信息 ps -aux | grep named
  14. 通过进程id获取服务名称 ps -o command -p 91730 | sed -n ap

ps 结果标识

使用 ps 命令返回的各标识信息

  • F 代表这个程序的旗标 (flag), 4 代表使用者为 super user
  • S 代表这个程序的状态 (STAT),R 运行, S 睡眠, T 暂停,Z 僵尸进程(死了没有父进程回收)
  • UID 程序被该 UID 所拥有
  • PID 就是这个程序的 ID !
  • PPID 则是其上级父程序的ID
  • C CPU 使用的资源百分比
  • PRI 这个是 Priority (优先执行序) 的缩写
  • NI 这个是 Nice 值,与进程调度有关
  • ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 “-”
  • SZ 使用掉的内存大小
  • WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作
  • TTY 登入者的终端机位置,'?' 为没有控制终端,一般为 pts/n 代表伪终端, tty1-6是物理终端
  • TIME 使用掉的 CPU 时间。
  • CMD 所下达的指令为何

将一个程序放到后台运行

  1. 使用 & 将进程放入到后台并暂停运行, 同 bg 命令 或 ctrl +z 发送的 SIGSTOP 信号

    1
    
    php -S 0.0.0.0:8080 -t ./ &
    

    使用 & 将程序放到后台运行后,会返回进程信息及状态,并且丢失当前控制终端(输入,输出,错误无法在当前终端显示)

    1. 使用 jobs -l 查看所有放进后台的进程
    2. 使用 jobs -s 查看所有暂停的进程
    3. 使用 jobs -r 查看所有运行中的进程

    使用 & 将进程放到后台运行,但是进程的父进程是当前的会话进程,如果当前的会话结束,那么这个进程也将被回收,从而导致进程结束。

    使用 fg 命令,将后台暂停的程序放到前台继续运行

  2. 使用 nohup + command + &

1
nohup sleep 60  & # 输出会重定向到当前目录下的 nohup.out 可以手动指定   > file   2> file  >> file 2&1

该命令会将程序的父进程退出并交给系统进程来接管,相当于守护进程,并丢失控制终端

以进程树的方式查看所有进程

pstree

参数

1
2
3
-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
-p:显示程序识别码;
-u:显示用户名称

停止进程

kill

参数

1
2
3
4
-s sig    信号名称。
-n sig    信号名称对应的数字。
-l        列出信号名称。如果在该选项后提供了数字那么假设它是信号名称对应的数字。
-L        等价于-l选项。

常用信号

  1. kill -s SIGKILL pid = kill -9 pid