linux命令nohup LInux命令设置参数( 二 )


(4)当唤醒一个睡眠进程时,发现被唤醒的进程比当前进程更有资格运行 。
(5)一个进程通过执行系统调用来改变调度策略或者降低自身的优先级(如nice命令),从而引起立即调度 。
4.调度算法
进程调度的算法应该比较简单,以便减少频繁调度时的系统开销 。Linux执行进程调度时,首先查找所有在就绪队列中的进程 , 从中选出优先级最高且在内存的一个进程 。如果队列中有实时进程,那么实时进程将优先运行 。如果最需要运行的进程不是当前进程,那么当前进程就被挂起 , 并且保存它的现场—— 所涉及的一切机器状态,包括程序计数器和CPU寄存器等,然后为选中的进程恢复运行现场 。
(二)Linux常用调度命令
· nohup命令
nohup命令的功能是以忽略挂起和退出的方式执行指定的命令 。其命令格式是:
nohup command?。踑rguments]
其中,command是所要执行的命令,arguments是指定命令的参数 。
nohup命令告诉系统,command所代表的命令在执行过程中不受任何结束运行的信号(hangup和quit)的影响 。例如,
$ nohup find / -name exam.txt -printf1
find命令在后台运行 。在用户注销后,它会继续运行:从根目录开始,查找名字是exam.txt的文件,结果被定向到文件f1中 。
如果用户没有对输出进行重定向,则输出被附加到当前目录的nohup.out文件中 。如果用户在当前目录中不具备写权限 , 则输出被定向到$HOME/nohup.out 中 。
· at命令
at命令允许指定命令执行的时间 。at命令的常用形式是:
at time command
其中,time是指定命令command在将来执行时的时间和日期 。时间的指定方法有多种,用户可以使用绝对时间,也可以用相对时间 。该指定命令将以作业形式在后台运行 。例如:
$ at 15:00 Oct 20
回车后进入接收方式,接着键入以下命令:
mail -s "Happy Birthday!" liuzheny
按下D键,屏幕显示:
job 862960800.a at Wed Oct 20 15:00:00 CST 1999
$
表明建立了一个作业,其作业ID号是862960800.a,运行作业的时间是1999年10月20日下午3:00 , 给liuzheny发一条标题为“Happy Birthday!”(生日快乐)的空白邮件 。
利用 at -l 可以列出当前at队列中所有的作业 。
利用 at -r 可以删除指定的作业 。这些作业以前由at或batch命令调度 。例如 , 
at -r 862960797.a
将删除作业ID号是862960797.a的作业 。其一般使用形式是:
at -r job_id
注意,结尾是.a的作业ID号,表示这个作业是由at命令提交的;结尾是.b的作业ID号,表示这个作业是由batch命令提交的 。
· batch命令
batch命令不带任何参数,它提交的作业的优先级比at命令提交的作业的优先级低 。batch无法指定作业运行的时间 。实际运行时间要看系统中已经提交的作业数量 。如果系统中优先级较高的作业比较多,那么 , batch提交的作业则需要等待;如果系统空闲,则运行batch提交的作业 。例如,
$ batch
回车后进入接收方式,接着键入命令:
find / -name exam.txt -print
按下D 。退出接收方式,屏幕显示:
job 862961540.b at Thu Nov 18 14:30:00 CST 1999
表示find命令被batch作为一个作业提交给系统,作业ID号是862961540.b 。如果系统当前空闲 , 这个作业被立即执行,其结果同样作为邮件发送给用户 。
· jobs命令
jobs命令用来显示当前shell下正在运行哪些作业(即后台作业) 。例如:
$ jobs
[2] + Running tar tv3 *
[1] - Running find / -name README -printlogfile

推荐阅读