写完命令行,在最后加上$,将命令挂到后台运行;
正在运行指令时,按Ctrl+Z,将进程挂到后台并暂停;
bg 命令在后台运行被暂停的作业;
fg 将后台作业放到前台运行。网上找了很多, 但是都不好使, 原来是发现后边少了一个 &
nohup 默认写入的文件为 nohupout , 如果想更改,可以使用如下命令。一定不要忘了& ,要不进不了后台运行。一、Shell支持作用控制,有以下命令:
1 command &让进程在后台运行
2 jobs –l 查看后台运行的进程
3 fg %n 让后台运行的进程n到前台来
4 bg %n 让进程n到后台去;
PS:“n”为jobs查看到的进程编号。
二、执行命令&切换至后台
在Linux终端运行命令的时候,在命令末尾加上&符号,就可以让程序在后台运行
root@Ubuntu$ 。/tcpserv01&
三、切换正在运行的程序到后台
如果程序正在前台运行,可以使用Ctrl+z 选项把程序暂停,然后用 bg %[number]命令把这个程序放到后台运行,这个步骤分为3步,如下:
1暂停程序运行CTRL+Z
ctrl + z跟系统任务有关的,ctrl + z可以将一个正在前台执行的命令放到后台,并且暂停。
[Oracle@linuxidc ~]$ sh inssh
[1]+Stopped inssh
2查看暂停的程序
察看jobs使用jobs或ps命令可以察看正在执行的jobs。
[oracle@linuxidc ~]$ jobs -l
[1]+ 4524Stopped inssh
jobs命令执行的结果,+表示是一个当前的作业,减号表是是当前作业之后的一个作业。
jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped,Terminated
3切换程序至后台
bg将一个在后台暂停的命令,变成继续执行如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出。
[oracle@linuxidc ~]$ bg %1
[oracle@linuxidc ~]$ jobs -l
[1]+ 4524Running inssh
4切换程序至前台
也可以用 fg %[number]指令把一个程序掉到前台运行
[oracle@linuxidc ~]$ fg %1
。/tcpserv01
5终止后台程序
也可以直接终止后台运行的程序,使用 kill 命令
[oracle@linuxidc ~]$ kill %1
但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息。1 程序后加上“&” ,即 “/myjob &”, 将命令放入到一个作业队列中,可以用命令“jobs” 查看
2 将1中的命令放在 “()”中, 即 “(/myjob &)”,所提交的作业并不在作业列表中,是无法通过jobs来查看的。
3 使用"nohup", 即 “nohup /myjob &”,忽略hangup信号,防止shell关闭时程序停掉。
4 使用"setsid", 即“setsid /myjob”。
5 对已经运行的程序可以用 “disown -hmyjob” 来使某个作业忽略HUP信号。
6 使用“screen" screen 下的 *** 作会在screen下运行,无法在jobs中查看到。常用的命令有:
a) 新建一个screen: screen-S my_screen_name 建好后就可以进行所需要的 *** 作了。
b) 暂时断开screen: Ctrl-a d
c) 重新打开screen: Ctrl-a screen_id
d) 查看所有screen状态: screen -ls
e) 终止screen: screen -S my_screen_name -Xkill
f) 在当前窗口新建窗口: Ctrl-a c
g) 退出当前窗口: exit
h) 显示所有窗口列表:Ctrl-a w一、会话和作业的概念:
1、进程:Linux自身运行的独立程序。
2、进程组:进程组是一个或多个进程的集合。
_____________________________________________________
Linux包括三种不同类型的进程,每种进程都有自己的特点和属性:
3、交互进程 —— 由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。
4、批处理进程 —— 这种进程和终端没有联系,是一个进程序列。
5、监控进程(也称守护进程)—— linux系统启动时启动的进程,并在后台运行。
_______________________________________________________________
6、会话:一个用户登录终端后会新建一个会话,它是和控制终端产生IO交互的过程。这个过程可以称之为会话期。会话期可以产生一个 或 多个进程组的集合。(比喻打电话,首先要电话的接通,接通了才可以产生人与人之间的信息交互。在此会话期间可以产生一个或多个不同范畴的话题)
7、作业:作业类似于用户提交给系统的一个任务。一个作业可以包含一个或多个进程共同完成一个任务。(比喻会议上BOSS需要完成一个任务,根据需求可以分配到一个或多个人配合完成。)
8、作业控制:指的是控制正在运行的进程的行为。比如,用户可以挂起一个进程,等一会儿再继续执行该进程。这样用户就能在多个独立作业间进行切换。(比喻正在进行常规工作的员工,经理突发一个事情需要协助处理。这位员工放下手上的工作(挂起)。首先处理经理安排的事情,完事后再处理常规工作的事情。)
二、通过 date 和 sleep 命令理解前台、后台作业。date 命令是显示系统时间,sleep 命令是设置延时。
1、前台执行命令:
1)、前台执行命令。输入输出都是按部就班,执行完一个命令再执行下一个命令,把结果打印出来。
红色下划线:date 查看当前日期时间。
**下划线:sleep 10 延时10秒。
蓝色下划线:date 查看当前日期时间。
通过结果可以看出第一个 date 打印出日期时间后,延时10再执行一个 date 打印日期时间。两个时间相隔 10 秒。
2)、系统正在执行前台的命令时,再输入命令是不会马上执行。要执行完毕前面的命令才可以执行后面输入的命令。同样用 date 和 sleep做实验:
红色下划线:date 输出当前日期时间。
**下划线:sleep 60 系统执行延时 60 秒的 *** 作。 [root@localhost ~]# 用户标识符没有出现。虽然光标可以进行输入,但输入的 ls /tmp/ 命令并没有马上执行,没有输出。因为此时,前台正在执行 sleep 60 延时60秒的指令。
红色下划线:等待 sleep 60 执行完毕后,再执行一个 date 输出当前日期时间。两个 date 之间时间相隔 60 秒。
**下划线:待整条 date ; sleep 60 ; date 命令都执行完毕后,再执行刚才延时 60 秒时输入的 ls /tmp/ 命令,输出结果。
蓝色下划线:[root@localhost ~]# 用户标识符出现才算前台命令执行完毕,可以继续正常 *** 作。
2、后台执行命令:
&:命令后面使用 & 符号,可以让命令在后台执行。
jobs:可以查看正在后台运行的作业。
jobs选项:-l —— 除了列出作业号外,同时列出 PID。
-r —— 列出仅仅在后台运行的作业。
-s —— 列出仅仅再后台暂停的作业。
1)、后台运行的命令进程不会影响到前台命令进程。
红色下划线:sleep 30 & —— 把 sleep 30 丢到后台运行。
**下划线:通过 jobs 命令跟踪进程情况。(Runing —— 正在运行,Done —— 完成)
绿色下划线:sleep 后台运行期间进行了 ls 和 tail 命令的查询输出,正常运作。
蓝色下划线:jobs 没有输出,代表 sleep 已经完结,没有后台进程。
2)、挂起 和 中断后台运行的命令。
Ctrl+c:中断后台进程。Ctrl+z:挂起后台进程。
jobs 命令可以查看到挂起的命令,不可以查看中断的命令。
3)、jobs选项:-l —— 除了列出作业号外,同时列出 PID。
红色下划线:sleep 100 &,后台运行延时100秒的程序。
**下划线:jobs -l 列出所有后台进程(-l —— 含作业号、PID、运行状态 和 执行的命令。)
运行状态有 Running 、Stopped 和 Done,后台正在运行会显示 Running,当运行完毕后用 jobs 查看会显示 Done,并且命令后面的 & 符号也会消失。Done只出现一次,下次再用 jobs 查看后台程序就没有了系统曾提示过 Done 的命令。挂起正在运行的命令,后台会显示 Stopped 暂停状态。
-r —— 列出仅仅在后台运行的作业。
-s —— 列出仅仅再后台暂停的作业。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)