linux结束进程命令有哪些
linux 任务管理-后台运行与终止
fg、bg、jobs、&、ctrl + z命令
一、 &
加在一个命令的最后,可以把这个命令放到后台执行 ,如gftp &,
二、ctrl + z
可以将一个正在前台执行的命令放到后台,并且处于暂停状态,不可执行
三、jobs
查看当前有多少在后台运行的命令
jobs
-l选项可显示所有任务的PID,jobs的状态可以是running, stopped,
Terminated,但是如果任务被终止了(kill),shell
从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息;
四、fg
将后台中的命令调至前台继续运行
如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
五、bg
将一个在后台暂停的命令,变成继续执行 (在后台执行)
如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
将任务转移到后台运行:
先ctrl + z;再bg,这样进程就被移到后台运行,终端还能继续接受命令。
概念:当前任务
如
果后台的任务号有2个,[1],[2];如果当第一个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号码“[2]”
的后台任务。所以可以得出一点,即当前任务是会变动的。当用户输入“fg”、“bg”和“stop”等命令时,如果不加任何引号,则所变动的均是当前任务
进程的终止
后台进程的终止:
方法一:
通过jobs命令查看job号(假设为num),然后执行kill %num
方法二:
通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid
前台进程的终止:
ctrl+c
kill的其他作用
kill除了可以终止进程,还能给进程发送其它信号,使用kill -l 可以察看kill支持的信号。
SIGTERM是不带参数时kill发送的信号,意思是要进程终止运行,但执行与否还得看进程是否支持。如果进程还没有终止,可以使用kill -SIGKILL pid,这是由内核来终止进程,进程不能监听这个信号。
进程的挂起
后台进程的挂起:
在solaris中通过stop命令执行,通过jobs命令查看job号(假设为num),然后执行stop %num;
在redhat中,不存在stop命令,可通过执行命令kill -stop PID,将进程挂起;
当要重新执行当前被挂起的任务时,通过bg %num 即可将挂起的job的状态由stopped改为running,仍在后台执行;当需要改为在前台执行时,执行命令fg %num即可;
前台进程的挂起:
ctrl+Z;
Linux 下如何结束指定进程
一般linux使用kill来结束进程
Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令。通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。kill命令是通过向进程发送指定的信号来结束相应进程的。在默认情况下,采用编号为15的TERM信号。TERM信号将终止所有不能捕获该信号的进程。对于那些可以捕获该信号的进程就要用编号为9的kill信号,强行“杀掉”该进程。
1.命令格式:
kill[参数][进程号]
2.命令功能:
发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。
3.命令参数:
-l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
-u 指定用户
注意:
1、kill命令可以带信号号码选项,也可以不带。如果没有信号号码,kill命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源。也可以用kill向进程发送特定的信号。例如:
kill -2 123
它的效果等同于在前台运行PID为123的进程时按下Ctrl+C键。但是,普通用户只能使用不带signal参数的kill命令或最多使用-9信号。
2、kill可以带有进程ID号作为参数。当用kill向这些进程发送信号时,必须是这些进程的主人。如果试图撤销一个没有权限撤销的进程或撤销一个不存在的进程,就会得到一个错误信息。
3、可以向多个进程发信号或终止它们。
4、当kill成功地发送了信号后,shell会在屏幕上显示出进程的终止信息。有时这个信息不会马上显示,只有当按下Enter键使shell的命令提示符再次出现时,才会显示出来。
5、应注意,信号使进程强行终止,这常会带来一些副作用,如数据丢失或者终端无法恢复到正常状态。发送信号时必须小心,只有在万不得已时,才用kill信号(9),因为进程不能首先捕获它。要撤销所有的后台作业,可以输入kill 0。因为有些在后台运行的命令会启动多个进程,跟踪并找到所有要杀掉的进程的PID是件很麻烦的事。这时,使用kill 0来终止所有由当前shell启动的进程,是个有效的方法。
为什么强制结束一个进程
亲亲,你好,小的很高兴为您解答,在计算机系统中,如果一个进程出现了死循环或死锁等问题,就有可能导致该进程占用过多的系统资源,无法正常运行或与其他进程进行交互。这时,为了避免该进程对整个系统产生过大的负载影响,可以考虑强制结束该进程。强制结束一个进程的方法通常是向该进程发送一个终止信号,让其在接收到信号后自动退出。在 Linux 系统中,常用的终止信号包括 SIGTERM 和 SIGKILL 两种。其中,SIGTERM 信号是一种优雅退出的方式,它允许该进程在收到信号后处理完当前任务并正常退出。而 SIGKILL 信号则是强制退出的方式,它会立即终止该进程,但可能会导致进程未处理完的任务丢失。强制结束一个进程的作用是确保系统的正常运行和稳定性。当某个进程因为异常情况无法正常退出时,如果不采取措施,它将一直占用系统资源,影响整个系统的运行。此时,强制结束该进程是保障系统正常运行的必要措施。【摘要】
为什么强制结束一个进程【提问】
亲亲,你好,小的很高兴为您解答,在计算机系统中,如果一个进程出现了死循环或死锁等问题,就有可能导致该进程占用过多的系统资源,无法正常运行或与其他进程进行交互。这时,为了避免该进程对整个系统产生过大的负载影响,可以考虑强制结束该进程。强制结束一个进程的方法通常是向该进程发送一个终止信号,让其在接收到信号后自动退出。在 Linux 系统中,常用的终止信号包括 SIGTERM 和 SIGKILL 两种。其中,SIGTERM 信号是一种优雅退出的方式,它允许该进程在收到信号后处理完当前任务并正常退出。而 SIGKILL 信号则是强制退出的方式,它会立即终止该进程,但可能会导致进程未处理完的任务丢失。强制结束一个进程的作用是确保系统的正常运行和稳定性。当某个进程因为异常情况无法正常退出时,如果不采取措施,它将一直占用系统资源,影响整个系统的运行。此时,强制结束该进程是保障系统正常运行的必要措施。【回答】
为什么强制结束一个进程
您好,很高兴为您解答。[鲜花]强制结束一个进程的原因如下:当一个进程结束运行(可能是正常结束,或者被TerminateProcess强制结束),这个进程的户模式部分将会被彻底销毁并被系统回收。但是来了。但是,其内核模式部分不会简单地被清理,而是会等到线程中所有的驱动代码结束运行。举个例子如果进程中的某个线程正在进行I/O操作,内核向负责I/O的驱动程序发出信号,表明应该取消操作。如果这个驱动代码被正确地实现,则它将清理所有未完成的I/O操作并释放线程。如果它没有被正确地实现,或者正在被操作的硬件没那么快完成操作,则就会需要一段比较长的时间来完成整个取消动作。在这段时间里,线程是否能结束运行,完全由驱动代码决定,因为线程属于进程,也即进程是否结束运行,完全由驱动决定。如果你觉得这个问题可能是因为驱动造成的,你可以使用内核调试器,找到被挂起的进程并从中确定没有正常退出的线程。具体来说,就是使用调试命令 [!irp] 来查看所有挂起的IRP,从而确定是哪个设备没有完成指定的控制动作。当进程中的所有驱动代码都完成其工作之后,整个进程才会完全结束它的运行。剩下的,就是进程对象了。进程对象会一直保留在系统中,直至所有引用它的进程句柄全部关闭且进程中的所有线程全部结束运行为止。你应该还记得,当调用CreateProcess之后,一定要调用CloseHandle关闭PROCESS_INFORMATION结构体中的进程句柄吧?换句话说,如果一个进程被强制结束后还是处于挂起状态,则表明:这个进程确实是”死了”,只是因为系统在等待所有相关的驱动代码完成清理,和所有打开的进程句柄被关闭。【摘要】
为什么强制结束一个进程【提问】
您好,很高兴为您解答。[鲜花]强制结束一个进程的原因如下:当一个进程结束运行(可能是正常结束,或者被TerminateProcess强制结束),这个进程的户模式部分将会被彻底销毁并被系统回收。但是来了。但是,其内核模式部分不会简单地被清理,而是会等到线程中所有的驱动代码结束运行。举个例子如果进程中的某个线程正在进行I/O操作,内核向负责I/O的驱动程序发出信号,表明应该取消操作。如果这个驱动代码被正确地实现,则它将清理所有未完成的I/O操作并释放线程。如果它没有被正确地实现,或者正在被操作的硬件没那么快完成操作,则就会需要一段比较长的时间来完成整个取消动作。在这段时间里,线程是否能结束运行,完全由驱动代码决定,因为线程属于进程,也即进程是否结束运行,完全由驱动决定。如果你觉得这个问题可能是因为驱动造成的,你可以使用内核调试器,找到被挂起的进程并从中确定没有正常退出的线程。具体来说,就是使用调试命令 [!irp] 来查看所有挂起的IRP,从而确定是哪个设备没有完成指定的控制动作。当进程中的所有驱动代码都完成其工作之后,整个进程才会完全结束它的运行。剩下的,就是进程对象了。进程对象会一直保留在系统中,直至所有引用它的进程句柄全部关闭且进程中的所有线程全部结束运行为止。你应该还记得,当调用CreateProcess之后,一定要调用CloseHandle关闭PROCESS_INFORMATION结构体中的进程句柄吧?换句话说,如果一个进程被强制结束后还是处于挂起状态,则表明:这个进程确实是”死了”,只是因为系统在等待所有相关的驱动代码完成清理,和所有打开的进程句柄被关闭。【回答】