Ctrl-C -杀死当前任务
Ctrl-D - 作用是 EOF 即文件末尾(End-of-file)。如果你的光标处在一个空白的命令行上,将会退出bash,比你用exit命令退出要快得多。
Ctrl-Z - 暂停进程。使用命令:bg在后台运行或者使用fg在前端运行。
作业号后的加减号表示:
有+号的是最后一个被停止的作业,有-的是上一个作业。
一、简介
Linux/Unix 区别于微软平台最大的优点就是真正的多用户,多任务。因此在任务管理上也有别具特色的管理思想。
我们知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务。而不能让程序在前台后台之间切换。而 Linux 提供了 fg 和bg 命令,让你轻松调度正在运行的任务。假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 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 管理后台的任务
二、&
在Linux中,当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。实际上,这样是将命令放入到一个作业队列中了:
$ ./test.sh &
[1] 17208
$ jobs -l
[1]+ 17208 Running ./test.sh &
在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:
command >out.file 2>&1 &
在上面的例子中,2>&1表示所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件中。当你成功地提交进程以后,就会显示出一个进程号,可以用它来监控该进程,或杀死它。
例:查找名为“httpd.conf”的文件,并把所有标准输出和错误输出重定向到find.dt的文件中:
# find /etc/httpd/ -name "httpd.conf" -print >find.dt 2>&1 &
[2] 7832
成功提交该命令之后,系统给出了它的进程号7832。对于已经在前台执行的命令,也可以重新放到后台执行,首先按ctrl+z暂停已经运行的进程,然后使用bg命令将停止的作业放到后台运行,例如对正在前台执行的tesh.sh使用ctrl+z挂起它:
$ ./test.sh
[1]+ Stopped ./test.sh
$ bg %1
[1]+ ./test.sh &
$ jobs -l
[1]+ 22794 Running ./test.sh &
但是如上方到后台执行的进程,其父进程还是当前终端shell的进程,而一旦父进程退出,则会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。如果我们要在退出shell的时候继续运行进程,则需要使用nohup忽略hangup信号,或者setsid将将父进程设为init进程(进程号为1)
$ echo $$
21734
$ nohup ./test.sh &
[1] 29016
$ ps -ef | grep test
515 29710 21734 0 11:47 pts/12 00:00:00 /bin/sh ./test.sh
515 29713 21734 0 11:47 pts/12 00:00:00 grep test
$ setsid ./test.sh &
[1] 409
$ ps -ef | grep test
515 410 1 0 11:49 ? 00:00:00 /bin/sh ./test.sh
515 413 21734 0 11:49 pts/12 00:00:00 grep test
上面的试验演示了使用nohup/setsid加上&使进程在后台运行,同时不受当前shell退出的影响。那么对于已经在后台运行的进程,该怎么办呢?可以使用disown命令:
$ ./test.sh &
[1] 2539
$ jobs -l
[1]+ 2539 Running ./test.sh &
$ disown -h %1
$ ps -ef | grep test
515 410 1 0 11:49 ? 00:00:00 /bin/sh ./test.sh
515 2542 21734 0 11:52 pts/12 00:00:00 grep test
另外还有一种方法,即使将进程在一个subshell中执行,其实这和setsid异曲同工。方法很简单,将命令用括号() 括起来即可:
$ (./test.sh &)
$ ps -ef | grep test
515 410 1 0 11:49 ? 00:00:00 /bin/sh ./test.sh
515 12483 21734 0 11:59 pts/12 00:00:00 grep test
注:本文试验环境为Red Hat Enterprise Linux AS release 4 (Nahant Update 5),shell为/bin/bash,不同的OS和shell可能命令有些不一样。例如AIX的ksh,没有disown,但是可以使用nohup -p PID来获得disown同样的效果。
还有一种更加强大的方式是使用screen,首先创建一个断开模式的虚拟终端,然后用-r选项重新连接这个虚拟终端,在其中执行的任何命令,都能达到nohup的效果,这在有多个命令需要在后台连续执行的时候比较方便:
$ screen -dmS screen_test
$ screen -list
There is a screen on:
27963.screen_test (Detached)
1 Socket in /tmp/uscreens/S-jiangfeng.
$ screen -r screen_test
三、 nohup
如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。 该命令的一般形式为:
nohup conmmand &
如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup command > myout.file 2>&1
在上面的例子中,输出被重定向到myout.file文件中。
分享到:
相关推荐
Linux命令行快捷键详解 在Linux环境下,熟练掌握命令行快捷键可以显著提高工作效率,减少重复劳动,使得在终端中的操作更加流畅。以下是对Linux命令行快捷键的详细解析: ### 历史命令操作 - **`history`**:显示...
### Linux常用快捷键详解 #### 引言 在Linux操作系统中,熟练掌握快捷键能够显著提升工作效率,尤其是在命令行界面下。本文将详细介绍一系列Linux常用快捷键,涵盖从基础的命令行操作到桌面环境的快捷方式,帮助...
Linux Shell快捷键是提高工作效率的重要工具,尤其对于那些...控制命令则提供了对命令执行的直接控制,特别是`Ctrl+z`在多任务操作中非常有用,它允许用户临时中断当前任务,切换到其他任务,之后再切换回来继续执行。
### Linux终端快捷键详解 #### 一、基本操作与导航 **Ctrl+A**: 移动光标至行首。此快捷键在进行命令编辑时非常有用,尤其当你需要快速定位到命令的起始位置来进行修改。 **Ctrl+E**: 移动光标至行尾。类似于移动...
根据给定的文件标题“Redhat Linux关键命令”及其描述、标签和部分内容,本文将深入解析其中提及的多个Linux命令,这些命令对于Redhat Linux系统的管理和操作至关重要。 ### 1. cat - 显示文件内容 `cat`命令用于...
### Ubuntu Linux 操作系统快捷键详解 #### 一、通用快捷键 Ubuntu Linux 系统提供了丰富的快捷键来提高用户的操作效率。以下是一些常用的通用快捷键: - **F1 + Alt**:类似 Windows 下的 Win 键,在 GNOME 桌面...
Ubuntu作为一款广泛使用的Linux发行版,提供了丰富的快捷键以提高用户的操作效率。本文将详细介绍34个简单实用的Ubuntu快捷键,帮助用户更高效地进行日常工作和学习。 1. Ctrl+W: 这个快捷键用于关闭当前的Nautilus...
每个任务都有一个唯一的作业号,你可以用这个号码来管理和控制它们。 如果希望将后台的任务恢复到前台运行,可以使用“fg %jobnumber”命令,其中%jobnumber是之前通过“jobs”命令得到的作业号。这将使指定的任务...
比如在编辑文字、转换文件格式或者执行计算任务时,熟练使用快捷键可以快速完成任务。 3. 软件中快捷键的设定和使用:软件中的快捷键可能预设,也可能由用户自定义。预设的快捷键可以在软件的帮助文档或者操作手册...
为了提高开发效率,Android Studio提供了丰富的快捷键功能,帮助开发者更快地完成任务。本文将详细介绍Android Studio中常用的快捷键及其应用场景。 #### 二、常用技巧详解 **1. 书签 (Bookmarks)** - **添加/移除...
- **Linux**:大部分Linux发行版支持键盘上的多媒体键,这些键通常标记有音量图标,可通过相应的软件驱动实现快捷键功能。 3. **第三方软件增强**: - **3RVX**:压缩包中的"3RVX_2.5_绿色多语版"是一个名为3RVX...
通过`jobs`命令可以查看当前所有后台任务的状态及编号。例如: ```bash jobs ``` 这会显示所有正在运行的后台任务的信息,包括任务名称和状态等。这对于管理和控制后台任务非常有用。 #### 六、使用`nohup`确保...
在日常工作中,掌握一些常用的快捷键可以帮助我们大大提高效率,减少不必要的鼠标操作,实现快速任务处理。以下是一些在Windows系统中被广泛使用的快捷键,通过这些快捷键的应用,我们可以更加高效地进行各种操作。 ...
在Linux内核开发中,`termios`是一个关键的接口,用于控制终端设备的通信参数和行为。这个接口遵循POSIX标准,并且...在Linux内核开发中,正确配置`termios`参数对于实现可靠的串口通信、终端模拟等任务是必不可少的。
12. **日程与任务管理**:用户可以在Linux版企业微信中创建个人和共享的日程,分配任务,提高工作效率。 总的来说,企业微信 for Linux 的推出,极大地满足了Linux用户在企业协作和沟通中的需求,提升了工作效率,...
4. **兼容性**:作为一款软件插件,它需要与操作系统兼容,如Windows、MacOS或Linux,并可能需要与各种应用程序协同工作,因此需要良好的跨平台兼容性。 5. **Python编程**:标签中提到了"Python",这可能意味着该...
这些快捷键和命令适用于各种情况,无论是日常使用还是处理紧急状况,都能帮助我们更有效地管理和控制电脑的启动与停止。记住这些技巧,可以让你在日常使用中更加得心应手。同时,了解并熟练应用这些快捷键,还能减少...
### Linux CLI操作常用快捷键详解 #### 一、引言 在Linux环境下,熟悉命令行接口(Command Line Interface, CLI)的使用是必不可少的技能之一。相比于图形用户界面(Graphical User Interface, GUI),CLI提供了更高效...