Linux 的常用后台运行指令

執行背景工作的指令

指令或符號

使用範例

說明

&% fasta &在背景中執行程式jobs% jobs顯示送入背景之工作kill% kill (job#)移除指定之批次工作ctrl-z暫停前景中執行之程式bg% bg將暫停之工作送入背景執行fg% fg將背景之工作拉回前景執行

1.通过使用‘&’操作符让Job在后台运行通常我们Linux的终端中,运行某一命令时,终端总是等待某一特定的命令或程序运行完以后,给出一个提示,然后我们才能继续运行下一个命令。如果我们要运行一个比较耗时的命令,但是在该命令运行的同时还需要做另外的一些事,那该怎么办呢?你可以通过在命令的后面加上一个‘&’操作符,来让一个任务在后台运行。(当然如果你是用GUI界面,你也可以重新打开一个窗口运行新的命令或程序)例如,我们需要拷贝一个比较大的文件,在拷贝的同时,还要做其他一些事情,那么在拷贝命令后面加上一个‘&’,让它在后台拷贝:lennon@lennon-laptop:~$ cp /media/bigfile /home/lennon/Downloads/ &[1] 3526lennon@lennon-laptop:~$ 此时,我们可以看到在终端中,执行了某一命令后,给出了一些信息,然后就返回了,接着提示用户可以出入下一个命令了,这样程序或命令就在后台执行了。在显示的信息中,用方括号括起来的数字,表示系统分配给这个Job的Job Number,这里'[1]’中的1,就是这个Job的Job Number。而后面一个比较大的数字,则是系统分配的进程ID(PID),这个PID在系统就代表这个进程。在后台运行的job,当其运行完成以后,且输入回车后,会在终端中给出一个提示:lennon@lennon-laptop:~$ rm Downloads/linux_11gR2_database_1of2.zip &[1] 3666lennon@lennon-laptop:~$ [1]+ Done rm Downloads/linux_11gR2_database_1of2.zip2.使用jobs命令,来查看当前系统中的Job如果我们需要查看当前系统中,有那些job,使用‘jobs’命令:lennon@lennon-laptop:~$ jobs[1]- Running cp /media/bigfile /home/lennon/Downloads/ &[2]+ Stopped catlennon@lennon-laptop:~$ 如此时,显示我的系统中有2个job,一个是刚才的正在运行的拷贝命令([1]标识),一个是停止运行的cat命令([2]表示)。这里‘Running’、‘Stopped’表示任务的状态。jobs命令参考命令名称:jobs使用权限:所有权限命令描述:列出系统中的job。注意:不是所有的shell都能使用此命令语法:jobs [-p | -l] [-n] [-p] [-x] [job id]参数:-p | -l : Report the process group ID and working directory of the jobs.-n : Display only jobs that have stopped or exited since last notified.-p : Displays only the process IDs for the process group leaders of the selected jobs.-x : Replace any job_id found in command or arguments with the corresponding process group ID, and then execute command passing it arguments.job id : The job id.3.Suspend key 和 bg命令的使用(将一个正在运行的job放到后台运行)如果你在运行job前,并不知道该job的运行情况,但在job运行了以后,发现这个是耗时的任务,并想将其放入到后台运行,这样你可以在这个任务运行的同时,完成一些其他的事情,那么你可以这样做:使用挂起键(Suspend Key,通常是Ctrl-Z)将该任务挂起(也就是暂停),然后使用‘bg’命令在后台让该job恢复执行。lennon@lennon-laptop:~$ cp bigfile bigfile.bac^Z[1]+ Stopped cp bigfile bigfile.baclennon@lennon-laptop:~$ bg %1[1]+ cp bigfile bigfile.bac &lennon@lennon-laptop:~$使用Ctrl-Z后,系统会将当前正在运行的job暂停,将其移至后台,给出用户改任务的提示(包括job number、状态、job),然后提示用户输入下一个命令。在job挂起后,可以使用‘bg’命令,让job恢复到刚才中断的地方继续运行并将其放到后台运行。使用‘bg %job number’来指定你需要对哪一个job进行操作,这里‘%’告诉系统后面的数字是一个job number(不要‘%’可能也可以)。当然在系统中只有一个job的时候,你也可以忽略改参数。bg命令参考:命令名称:bg使用权限:所有权限命令描述:在后台恢复已停止的job继续运行。注意该命令不能在所有的Unix的shell下运行语法:bg [-l] [-p] [-x] [job]参数:-l : Report the process group ID and working directory of the jobs.-p : Report only the process group ID of the jobs.-x : Replace any job_id found in command or arguments with the corresponding process group ID, and then execute command passing it arguments.job : Specifies the job that you want to run in the background.4.使用fg命令,将在后台的job换到前台当你需要将在后台的job换到前台时,使用‘fg %job number’命令(也许不要‘%’也可以)。lennon@lennon-laptop:~$ cp bigfile bigfile.bac &[1] 3815lennon@lennon-laptop:~$ fg 1cp bigfile bigfile.bacfg命令参考:命令名称:fg使用权限:所有权限命令描述:将后台的任务移至前台,如果是该任务处于暂停状态,则恢复该任务的运行。 注意该命令不是在所有的shell中都能运行。语法:fg [%job]参数:%job : Specifies the job that you want to run in the foreground.5.如何结束一个job如果你想结束一个正在运行的job,可以使用中断键(interrupt key,通常是Ctrl-C)来结束。lennon@lennon-laptop:~$ cp bigfile bigfile.bac ^Clennon@lennon-laptop:~$ 如果上面方法无法正常工作,那么你可以考虑使用Ctrl-Z(Suspend key)来暂停job,使用’jobs’命令来查看这个job的job number,然后通过’kill’命令来结束这个job.lennon@lennon-laptop:~$ cp bigfile bigfile.bac ^Z[1]+ Stopped cp bigfile bigfile.baclennon@lennon-laptop:~$ jobs[1]+ Stopped cp bigfile bigfile.baclennon@lennon-laptop:~$ kill %1lennon@lennon-laptop:~$ [1]+ Terminated cp bigfile bigfile.bac’kill %1’中的’%’告诉系统,后面的数字是一个job number。默认情况下,kill将会向程序发送一个termination signal(-TERM)。如果这个信号不起作用,考虑使用’kill -kill %job number’来发送一个kill signal(-KILL)。’kill’命令的使用,就看man把,info也可以,这里不说了,上面东西太多。不过常用的也就’kill %job number’、’kill -kill %job number’、’kill [-kill] PID’。

Linux下Ctrl-Z、Ctrl-C、Ctrl-D的具体含义初识Linux,可能会对Ctrl-Z、Ctrl-C、Ctrl-D的具体含义混淆不清,因为这三个按键都能够在一些情况下使shell退出正在执行的命令或程序,提示用户输入下一个命令,从而对初识者造成假象,认为三个键的功能一样,但具体情况下哪个按键能起作用、起什么作用却拿捏不定。 Ctrl-Z:该键是linux下面默认的挂起键(Suspend Key),当键入Ctrl-Z时,系统会将正在运行的程序挂起,然后放到后台,同时给出用户相关的job信息。此时,程序并没有真正的停止,用户可以通过使用fg、bg命令将job恢复到暂停前的上下文环境,并继续执行。 Ctrl-C:该键是linux下面默认的中断键(Interrupt Key),当键入Ctrl-C时,系统会发送一个中断信号给正在运行的程序和shell。具体的响应结果会根据程序的不同而不同。一些程序在收到这个信号后,会立即结束并推出程序,一些程序可能会忽略这个中断信号,还有一些程序在接受到这个信号后,会采取一些其他的动作(Action)。当shell接受到这个中断信号的时候,它会返回到提示界面,并等待下一个命令。 Ctrl-D:该键是Linux下面标准输入输出的EOF。在使用标准输入输出的设备中,遇到该符号,会认为读到了文件的末尾,因此结束输入或输出。

最有效的资本是我们的信誉,它24小时不停为我们工作。

Linux 的常用后台运行指令

相关文章:

你感兴趣的文章:

标签云: