Shell前后台进程切换
2016-07-23 11:47
597 查看
在shell中,如果要运行某命令
如果需要程序后台运行,不要干扰前台的shell交互,我们一般输入
以gedit程序为例:
1 查看当前有多少后台运行的命令(当前啥也没有)
其中jobs -l 选项可显示所有任务的 PID,jobs 的状态可以是 running, stopped, Terminated
2 后台运行
可以看到gedit在后台处于running状态。其中[1]指的是job号为1
3 根据job号来杀死该后台进程:
也可以用
3 正常启动
可以看到该前台进程占据了终端,我们不能做其他事情。
按
4 挂起前台进程:
5 将一个在后台(background)暂停的命令,变成继续执行:
6 将后台中的命令调后前台(foreground)继续执行:
可以看到terminal被前台程序占据了。
最后
除此之外,如果后台有多个命令,那么
这里加不加%,效果一样。
而kill命令通过job号杀死进程的时候则必须加百分号:
我猜是应该是避免jobnumber和pid产生歧义吧
2 Shell 前后台进程切换
command,我们一般输入
$ command即可。
如果需要程序后台运行,不要干扰前台的shell交互,我们一般输入
$ command &。
以gedit程序为例:
1 查看当前有多少后台运行的命令(当前啥也没有)
fsj@fsj-Lenovo:~$ jobs fsj@fsj-Lenovo:~$
其中jobs -l 选项可显示所有任务的 PID,jobs 的状态可以是 running, stopped, Terminated
2 后台运行
fsj@fsj-Lenovo:~$ gedit & [1] 31851 fsj@fsj-Lenovo:~$ jobs [1]+ Running gedit & fsj@fsj-Lenovo:~$ jobs -l [1]+ 31851 Running gedit & fsj@fsj-Lenovo:~$
可以看到gedit在后台处于running状态。其中[1]指的是job号为1
3 根据job号来杀死该后台进程:
kill %jobnumber
fsj@fsj-Lenovo:~$ kill %1
fsj@fsj-Lenovo:~$ jobs
[1]+ Terminated gedit
fsj@fsj-Lenovo:~$ jobs fsj@fsj-Lenovo:~$
也可以用
$ kill pid来杀死指定进程。
3 正常启动
可以看到该前台进程占据了终端,我们不能做其他事情。
按
ctrl+c可以终止该进程
4 挂起前台进程:
ctrl+z
5 将一个在后台(background)暂停的命令,变成继续执行:
bg
6 将后台中的命令调后前台(foreground)继续执行:
fg
可以看到terminal被前台程序占据了。
最后
ctrl+c终止该进程。这便是shell中前后台进程切换的一个完整例子。
除此之外,如果后台有多个命令,那么
fg和
bg都可以加参数,指定job号:
$ bg %jobnumber
$ fg %jobnumber
这里加不加%,效果一样。
而kill命令通过job号杀死进程的时候则必须加百分号:
$ kill %jobnumber
我猜是应该是避免jobnumber和pid产生歧义吧
参考
1 无图形界面的情况下在linux运行多个任务2 Shell 前后台进程切换
相关文章推荐
- Mac下的Bash配置文件冲突问题
- linux shell常用命令总结
- shell中if条件字符串、数字比对,[[ ]]和[ ]区别
- shell中各种括号的作用()、(())、[]、[[]]、{}
- 单行bash命令
- Shell脚本编程总结及速查手册
- 让你提升命令行效率的Bash快捷键
- Linux-shell常用时间格式
- linux课堂笔记--shell4正则表达式
- 51NOD 1070 Bash游戏 V4
- shell--指“提供使用者使用界面”的软件(命令解析器)
- 菜鸟的Linux之路3 bash脚本编程之二
- Ubuntu 设定壁纸自动切换的shell脚本
- .bash_profile和.bashrc说明
- 使用shell操作mysql(转)
- linux shell 编程基础
- 使用shell实现打印给定日期的日历
- Linux shell脚本--mysql全备计划任务
- linux 性能数据采集bash脚本
- Best practice for Invoke other scripts or exe in PowerShell