十八、后台执行命令

本文介绍如何在后台执行命令或脚本,包括使用&符号、nohup命令、at命令及crontab设置定时任务的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        当希望的待执行的任务命令或脚本运行不影响我们手头上的工作,也就是我们能并行处理任务时,就需要在后台执行命令。接下来,我们看一下,怎样将我们的命令或任务提交到后台执行。

 

一、&
  1、一般形式
: 命令 &
  2、例子

     #example_1
    #find / -name "*.conf" > /find_conf 2>&1 &
        [1] 27561                           --系统给出的后台进程号,可随时kill掉该进程, kill -9 id>
        [1]+ Done    find / -name "*.conf"  --当该作业完成时,按任意键(一般是回车键)就会给出的提示

     #example_2
    #./sort.sh &   --该例表示该脚本在后台执行

   3、备注:
        3.1、当需要用户交互的命令,切记不要在后台执行,否则后台将一直处于等待状态
        3.2、查看进程是否存在:ps -ef | grep 进程ID
        3.2、杀掉进程:kill -9 进程ID

 

二、nohup
    1、一般形式:
nohup 命令 &

    2、例子

       # pg-1
      # nohup ./a.sh 2>&1 &


    3、说明
          3.1、该命令表示当帐号退出之后,继续运行相应的进程
          3.2、缺省情况下,该作业的输出将重定向到一个叫nohup.out的文件中

 

三、at
    1、一般形式:
     at [-f script] [-m -l -r] [time] [date]
     -f script 是所要提交的脚本或命令。
     -l 列出当前所有等待运行的作业,atq命令具有相同的作用。
     -r 清除作业。为了清除某个作业,还要提供相应的作业标识(ID);有些UNIX变体只接受atrm作为清除命令。
     -m 作业完成后给用户发邮件。
     time at命令的时间格式非常灵活;可以是H、HH. HHMM、HH:MM或H:M,其中H和M分别是小时和分钟。还可以使用am或pm
     date 日期格式可以是月份数或日期数,而且at命令还能够识别诸如today、tomorrow这样的词。

    2、提交作业:
       a. at 提交命令
          #at 时间
           手动输入命令
           CTRL+D

       # pg-1
       # at 14:10
       # find / -name "^a" > a.txt  2>&1
         CTRL+D


       b. at 提交脚本
          # at 时间 脚本名
          pg-1
          at 3:00pm tomorrow -f /opt/a.sh
          a.sh脚本将在明天的下午3:00运行
         
          提交的脚本,同时拷贝到/var/spool/atjobs目录下,在执行的时间运行
          /var/spool/atjobs # ls
          a00002014ece00  a00003014ece1e

  
    3、列出所提交的作业
       # at -l
       1       2011-09-21 15:00 a root
       2       2011-09-22 16:00 a imapuser
       第一列:作业标识
       第四列:a代 表at
       第五列:代表某用户提交的作业

    4、清除提交的作业
       # atrm job no  <no代表作业标识>      
       # atrm job 1

 

四、crontab
     1、条目的一般形式:
      分 时 日  星期几 要运行的命令
      如:
     30 21* * * /apps/bin/cleanup.sh
     上面的例子表示每晚的21:30运行/apps/bin目录下的cleanup.sh
    
     45 4 1,10,22 * * /apps/bin/backup.sh
     上面的例子表示每月1、10、22日的4:45运行/apps/bin目录下的backup.sh

     10 1 * * 6,0 /bin/find -name "core" -exec rm {} \;
     上面的例子表示每周六、周日的1:10运行一个find命令

     0,30 18-23 * * * /apps/bin/dbcheck.sh
     上面的例子表示在每天18:00至23:00之间每隔30分钟运行/apps/bin目录下的dbcheck.sh

     0 23 * * 6 /apps/bin/qtrend.sh
     上面的例子表示每星期六的11:00pm运行/apps/bin目录下的qtrend.sh
 
      2、命令的一般形式:
         crontab [-u user] [ -e -l -r] file
         -u 用户名,如果用户名为登录名,可省略
         -e 编辑crontab文件
         -l 列出crontab文件中内容
         -r 删除crontab文件
     
      3、提交作业
         3.1、首先设置环境变量,在根目录的.profile文件中,添加EDITOR=vi;export EDITOR
              也就是指定vi作为作业默认的编辑器
         3.2、编写作业 vi oraclecron
              0,15,30,45 08-18 * * * /bin/find -name "Hedex" -exec rm {} \;
         3.3、提交作业
              crontab oraclecron
             
         备注:
             1、该文件已提交给cron进程,它将每隔15分钟运行一次
             2、提交之后,系统同时将作业拷贝到/var/spool/cron中,在指定的时间运行

      4、查看已提交作业
         crontab -l
      5、编辑已提交作业
         crontab -e

      6、删除作业
         crontab -r


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值