前台,后台进程介绍:
前台进程:通过终端启动,且启动后一直占用终端的进程。
后台进程:通过终端启动,但是在运行过程中不在占用终端。后台进程的产生大部分是前台进程转换为后台进程。但是后台进程的文件描述符依然继承于父进程,例如父进程shell,所以后台进程依然可以将信息输出到当前终端上,但是此时的后台进程同样是依附在终端下的,也就是父进程依然是shell。父进程终止,后台进程同样终止。后台的进程拥有两种状态,运行与停止。
守护进程:开机自启动不依附任何终端。终端关闭不会对守护进程的运行造成任何影响。也就是PPID为1的子进程。
进程的切换:
进程可以分为:尚未运行的进程,正在前台运行的进程,后台暂停的进程,后台正在运行的进程,被终止的进程。正常退出的进程。
尚未运行的进程:
命令 在前台启动进程,在进程正常退出或被终止或被放入后台前,进程会一直占据终端
命令 & 在启动程序时 在命令后指定 & 可直接将进程放到后台运行,放置到后台的进程处于运行状态
正在前台运行的进程:
Ctrl+z 将正在运行的进程切换到后台,但是切换到后台的进程处于停止状态,实际为向前台进程发送SIGTSTP信号
ctrl+c 终止正在运行的前台进程。实际为发送SIGINT信号
ctrl+\ 发送 SIGQUIT 信号给前台正在运行的程序,终止前台进程并生成 core 文件
查看后台进程:
jobs:查看当前终端,放置在后台的进程
正在后台休眠的进程:
fg 后台进程序号 :将后台进程序号对应的进程调到前台执行(两种状态的后台进程都可以被调到前台),但只能操控当前终端的后台进程
bg 后台进程序号 :将后台进程序号对应的进程指定为运行状态,一般针对后台中处于停止的进程使用只能操控当前终端的后台进程
正在后台运行的进程:
kill 进程ID /pkill 进程名称: 送后台进程去吃鸡腿
注:
nohup 命令 &
先在当前终端运行 nohup,nohup发起真正命令的执行 ,nohup为后台执行的进程,当终止当前nohup依附终端时。nohup直接脱离于当前终端的依附关系,转变为守护进程。使用nohup执行的命令,命令的输出都会被放在执行用户的家目录中的nohup.out文件中。输出重定向同样使用与nohup 如 nohup ls &> /dev/null
注:在前台执行的过程中,前台进程会一直占用终端,输入的命令不会执行,但是输入过的命令会进入列队等待状态,在当前执行的前台进程执行完成,或被终止,列队中的任务会顺序执行。