1、linux 里面的进程
shell 就是一个进程
查看进程的命令:ps
进程ID(PID)
操作系统用数字来标识进程
ps 命令显示进程的id
2、进程的创建
进程是由另一个进程创建的
a、第一个进程init,进程ID 为1
b、比如shell (很多进程的父进程): ps -f 可以看到
c、创建者:父进程 对应PPID
d、被创建者:子进程 对应PID
e、如果父进程死了,init变成子进程的父进程
f、进程的创建方法,系统调用fork,exec
3、ps 命令查看进程
a、 不带任何参数----同一个用户同一个终端
b、-ef 参数 -----e表示所有,f表示full-format,尤其是PPID 和 command 内容
c、axu 参数-----ax 表示所有,u 表示user-oriented
d、经常和管道符连用---- ps -ef | grep java
4、后台运行进程
前台进程和后台进程
a、shell 里正在执行的和用户进行交互的进程叫前台进程
b、举例:ps、ls 为前台进程,时间短
c、有的命令执行时间长,比如备份程序,则可在后台执行
命令 &
d、后台运行的进程我们叫后台进程,或者后台任务
后台运行进程:nohup 与后台进程
示例:没有 nohup 直接关闭,会关闭远程连接,进程会退出
原因:有的shell会发送SIGHUP信号给子进程
nohup python run.py & ----后台运行
5、进程前、后台切换
a、列出后台进程--- jobs
b、将后台进程调到前台----fg<num> ,num为jobs 分配的id
c、ctrl +z 可挂起进程,注意jobs 的显示状态是是stopped
d、bg 可让进程在后台执行
6、终止进程
进程的两种终止方式
a、自行终止
任务执行完成,如 ps
用户让其退出,如 shell exit
异常退出,如 程序里有除以0的代码
b、手动杀死进程
kill PID SIGTERM (告诉系统自行终止)
kill -9 PID SIGKILL (强制终止)
ctrl +c SIGINT (前台运行终止)
只能是owner 和 root 才能杀死进程