linux中ctrl+z和ctrl+c的区别

时间:2023-01-04 18:43:34
1、 ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样.
ctrl+c是强制中断程序的执行,
而ctrl+z的是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行.
例如:
当你vi一个文件是,如果需要用shell执行别的操作,但是你又不打算关闭vi,因为你得

存盘推出,你可以简单的按下ctrl+z,shell会将vi进程挂起~,当你结束了那个shell操作之后,你可以用fg命令继续vi你的文件.

2、

假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 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时表示对最后一个进程操作!