Ctrl+Z 后恢复进程到前台

转载自:http://blog.chinaunix.net/uid-10219166-id-2968756.html

----------- 以下是原文
    假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl-Z ,终止这个程序,然后可以看到系统提示:

    [1]+ Stopped /root/bin/rsync.sh

    然后我们可以把程序调度到后台执行:(bg 后面的数字为作业号)

    #bg 1

    [1]+ /root/bin/rsync.sh &

    用 jobs 命令查看正在运行的任务:

    #jobs

    [1]+ Running /root/bin/rsync.sh &

    如果想把它调回到前台运行,可以用

    #fg 1

    /root/bin/rsync.sh

    这样,你在控制台上就只能等待这个任务完成了.

    & 将指令丢到后台中去执行

    [ctrl]+z 将前台任务丢到后台中暂停

    jobs 查看后台的工作状态

    fg %jobnumber 将后台的任务拿到前台来处理

    bg %jobnumber 将任务放到后台中去处理

    kill 管理后台的任务

    命令运行时使用CTRL+Z,强制当前进程转为后台,并使之停止。

    1. 使进程恢复运行(后台)

    (1)使用命令bg

    Example:

    zuii@zuii-desktop:~/unp/tcpcliserv$ ./tcpserv01

    *这里使用CTRL+Z,此时serv01是停止状态*

    [1]+ Stopped ./tcpserv01

    zuii@zuii-desktop:~/unp/tcpcliserv$ bg

    [1]+ ./tcpserv01 & *此时serv01运行在后台*

    zuii@zuii-desktop:~/unp/tcpcliserv$

    (2)如果用CTRL+Z停止了几个程序呢?

    Example:

    zuii@zuii-desktop:~/unp/tcpcliserv$ jobs

    [1]- Running ./tcpserv01 &

    [2]+ Stopped ./tcpcli01 127.0.0.1

    zuii@zuii-desktop:~/unp/tcpcliserv$ bg %1

    bash: bg:任务 1 已转入后台 *后台运行*

    2. 使进程恢复至前台运行

    Example:

    zuii@zuii-desktop:~/unp/tcpcliserv$ ./tcpserv04

    [1]+ Stopped ./tcpserv04

    zuii@zuii-desktop:~/unp/tcpcliserv$ fg

    。/tcpserv04

    总结:

    (1) CTRL+Z停止进程并放入后台

    (2) jobs 显示当前暂停的进程

    (3) bg %N 使第N个任务在后台运行(%前有空格)

    (4) fg %N 使第N个任务在前台运行

    默认bg,fg不带%N时表示对最后一个进程操作!

 

--------- 以上是原文

后记: 《鸟哥的linux私房菜》后面也有章节介绍fg和bg,只是当时还没看到

<think>我们正在讨论的是命令行环境中使用Ctrl+Z挂起进程后如何终止进程的问题。 根据用户需求,用户想知道在使用Ctrl+Z挂起进程后如何结束进程(即彻底终止,而不是仅仅挂起)。 在Unix/Linux系统中: 1. 使用Ctrl+Z会将当前前台进程挂起(暂停)并放入后台,同时给出一个作业号(job number),例如[1]。 2. 此时进程并没有终止,它只是被暂停了。 3. 要终止这个被挂起的进程,我们需要先将其放入前台(fg)或者直接使用kill命令结束它。 具体步骤: 步骤1:使用`jobs`命令查看被挂起的作业,确定作业号(例如[1]对应的作业号为1)。 步骤2:使用`kill %作业号`命令来终止该作业。例如,如果作业号为1,则输入`kill %1`。 或者,也可以先使用`fg %作业号`将作业放到前台,然后使用Ctrl+C终止(但这样可能需要切换回前台再终止,不如直接kill方便)。 在Windows系统中: 在Windows命令提示符(cmd)中,Ctrl+Z通常用于表示输入结束(EOF),而不是挂起进程。但是,在某些命令行环境中(如PowerShell或某些Unix工具移植到Windows的环境)可能支持类似Unix的信号。然而,标准的Windows命令提示符并不支持作业控制。所以,在Windows下,如果使用Ctrl+Z,它可能只是发送EOF,并不会挂起进程。因此,如果需要结束进程,通常使用Ctrl+C中断,或者在任务管理器中结束进程。 由于用户问题中提到Ctrl+Z,并且提到Windows和Linux的不同,我们主要关注Unix/Linux环境(因为Ctrl+Z在Unix/Linux中是挂起进程的标准操作)。而Windows下通常不用Ctrl+Z来挂起进程,所以这里主要解答Unix/Linux下的方法。 因此,总结在Linux/Unix系统中结束被Ctrl+Z挂起的进程的方法: 1. 查找作业号:`jobs` 2. 终止作业:`kill %<作业号>` 例如: 假设我们运行了一个长时间运行的程序,例如`sleep 1000`,然后按下Ctrl+Z,它会显示: [1]+ Stopped sleep 1000 然后我们输入`jobs`,会看到: [1]+ Stopped sleep 1000 然后我们输入`kill %1`,这样就可以终止这个sleep进程。 另外,如果我们想直接终止所有后台作业,可以使用`kill %`(注意后面没有数字)来终止当前作业,或者使用`kill %1 %2`等终止多个,或者使用`kill $(jobs -p)`来终止所有后台作业。 注意:上述命令都是在同一个shell会话中操作。如果退出了shell,那么作业会被终止(取决于shell配置,通常是发送SIGHUP信号)。但最好在当前会话中处理。 因此,针对用户的问题:“使用ctrl + z后结束进程的方法”,在Linux/Unix系统中,我们使用`jobs`和`kill %n`(n为作业号)来结束进程。 生成相关问题: 1. 在Linux中,如何查看被挂起的后台作业? 2. 除了`kill %n`,还有哪些方法可以终止后台作业? 3. 在Windows中,如何结束一个正在运行的命令行进程? </think>在 Linux/Unix 和 Windows 系统中,使用 `Ctrl+Z` 后结束进程的方法有所不同: ### Linux/Unix 系统 1. **`Ctrl+Z` 效果**:挂起前台进程(暂停执行),进程转入后台 2. **结束进程步骤**: ```bash # 1. 查看挂起的后台作业 jobs # 示例输出:[1]+ Stopped sleep 1000 # 2. 结束指定作业(%1 表示作业号1) kill %1 ``` 或直接终止所有后台作业: ```bash kill $(jobs -p) ``` ### Windows 系统 1. **`Ctrl+Z` 效果**:在命令行中表示 EOF(文件结束符),**不会挂起进程** 2. **结束进程方法**: - **方法1**:直接使用 `Ctrl+C` 终止前台进程 - **方法2**:若进程无响应: ```cmd taskkill /PID <进程ID> /F ``` 使用 `tasklist` 查看进程 ID ### 关键区别 | 系统 | `Ctrl+Z` 作用 | 进程结束方法 | |-------------|----------------------|---------------------------| | Linux/Unix | 挂起到后台 | `kill %作业号` | | Windows | 输入结束符(EOF) | `Ctrl+C` 或 `taskkill` | > 注意:在 Windows 中 `Ctrl+Z` 主要用于文本输入结束(如结束 `copy con` 命令),若要强制结束进程需使用 `Ctrl+C` 或任务管理器[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值