服务器 频道

4.3 Linux进程管理命令详解(1)

  4.3  Linux进程管理命令详解(1)

  Linux管理进程的最好方法就是使用命令行下的系统命令。Linux下面的进程涉及的命令有at, bg, fg, kill, crontab, jobs, ps, pstree, top, nice, renice, sleep, nohup。

  1.at命令:定时运行命令

  作用:at命令在指定时刻执行指定的命令序列。

  格式:

  at [-V] [-q x] [-f file] [-m] timeatq [-V] [-q x]atrm [-V] [-q x] job…batch [-V] [-f file] [-m]

  主要选项如下。

  -V:显示作业将被执行的时间。

  -q:选用q参数则可选队列名称,队列名称可以是a~z和A~Z之间的任意字母。队列字母顺序越高则队列优先级别越低。

  -f:从文件中读取命令或shell脚本,而非在提示后指定它们。

  -m:执行完作业后发送电子邮件到用户。

  time:设定作业执行的时间。time参数可以是下面格式中的任何一种。

  HH:MM格式--如04:00,代表4:00AM。如果时间已过,就会在第二天的这一时间执行。

  midnight代表12:00AM。noon代表12:00PM。teatime代表4:00PM。

  英文月名日期年份格式--如January 15 2005,代表2005年1月15日。年份可无。

  MMDDYY、MM/DD/YY或MM.DD.YY格式--如011505,代表2005年1月15日。

  now +时间格式--时间以minutes、hours、days或weeks为单位。如now + 5 days,代表命令应该在5天之后的此时此刻执行。偏移量的格式为时间+偏移量,单位是minutes、hours和days。

  说明:at命令实际上是一组命令集合。at命令在指定时刻执行指定的命令序列。atq查询已经设定的命令序列。atrm删除已经设定的命令序列。batch当系统负载低于一个设定值(0.8),执行设定的命令序列。

  应用实例如下。

  (1)让系统在两天后的17:30执行文件data中指定的作业,使用命令:

  #at -f data 15:30 +2 days
  

  (2)配置batch作业

  要在系统平均载量降到0.8以下时执行某项一次性的任务,使用batch命令。键入batch命令后,"at>"提示就会出现。键入要执行的命令,按"Enter"键,然后键入"Ctrl-D"。你可以指定多条命令,方法是键入每一条命令后按"Enter"键。键入所有命令后,按"Enter"键转入一个空行,然后再键入"Ctrl-D"。或者你也可以在提示后输入shell脚本,在脚本的每一行后按"Enter"键,然后在空行处键入"Ctrl-D"来退出。系统平均载量一降到0.8以下,这组命令或脚本就会被执行。如果这组命令或脚本试图在标准输出中显示信息,该输出会用电子邮件方式被邮寄给用户。

  (3)进阶应用:控制对at和batch的使用

  通过/etc/at.allow和/etc/at.deny文件可以用来限制对at和batch命令的使用。这两个使用控制文件的格式都是每行一个用户。两个文件都不允许使用空白字符。如果控制文件被修改了,at守护进程不必被重启。每次用户试图执行at或batch命令时,使用控制文件都会被读取。不论控制文件如何规定,超级权限用户总是可以执行at和batch命令。如果at.allow文件存在,只有其中列出的用户才能使用at或batch命令,at.deny文件会被忽略。如果at.allow文件不存在,所有在at.deny文件中列出的用户都被禁止使用at和batch命令。

  2.bg命令后台运行命令

  作用:bg命令使一个被挂起的进程在后台执行。

  格式:bg

  该命令无参数。

  使用说明:Linux作为一个多任务环境,用户会同时执行多项任务,例如,查看系统情况、备份资料、编辑文件和打印文件等。耗时长的任务不应该在前台任务中执行,而应该交给后台任务去执行。这样前台任务可继续正常运作其他的操作,不用等待。

  应用实例如下。

  (1)如果要将一个大目录的文件进行排序后,将结果输入到一个文件中,可以使用命令:

  #du -a / | sort -rn > /tmp/du.sorted
  (2)由于这个命令执行时间很长,可以把它放在后台运行。使用组合键"Ctrl+Z"。然后使用bg命令。如果想直接把这个命令放在后台执行,可以在命令后使用"&"符号:
  #du -a / | sort -rn > /tmp/du.sorted &[1] 237m32
  

  3.Fg挂起程序

  作用:fg命令使一个被挂起的进程在前台执行。

  格式:fg -[job-spec]

  [job-spec]:后台任务号码。

  说明:fg命令和bg命令是相对应的。如果想查看后台程序运行情况,可以使用fg命令把它调回前台查看。bg命令可以使多个进程放到后台中执行。

  应用实例如下。

  使用fg命令时,要加入后台任务号码,如果不加任何号码,则所变动的均是当前任务。

  #du -a / | sort -rn > /tmp/du.sorted &[1] 237#fg 1

  4.Jobs显示后台程序

  作用:jobs命令显示后台任务的执行情况。

  格式:jobs [选项] [jobspec…]

  主要选项如下。

  -l:长输出格式,显示全部内容。

  -n:不输出信息。

  -p:只输出进程号。

  -r:只输出运行的进程。

  [jobspec]:后台任务号码。

  应用实例如下。

  先把两个进程放在系统后台运行,然后使用jobs命令查看后台任务的执行情况:

  #du -a /etc > user.data &[1] 233# find / -name core -type f -ls > core.data &[2] 234#jobs -l[1] + 237 Running du -a /etc > user.data[2] - 238 Running find / -name core -type f -ls > core.data
  
  说明:上面的当前任务是"du -a /etc > user.data",因为后台任务号码是"[1]"。当第一个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号码"[2]"的后台任务。即当前任务是动态的。
 

0
相关文章