• Linux如何重复执行命令每隔几秒或者每隔几分钟


    作为Linux系统管理员通常需要在特定时间段内重复运行某些命令。就类似一个定时任务在定时执行某一个操作,下面就来看一下如何在一定周期之内执行相应的命令或者脚本,啥意思呢?举个例子就比如每隔10秒执行一个命令,这该如何做呢?下面就来看一下如何实现吧。

    1,使用crontab命令

    crontab 命令用于维护 crontab 文件或 cron 表。cron 表包含要在系统上定期运行的命令列表。每个用户都可以有一个 crontab,我们可以在其中创建和修改任务。但是,Cron只能用于一分钟的最小间隔,即如果要间隔10秒运行一次命令,则需要创建60s/10s =6 个cron条目,如果是每隔20秒则创建3个cron条目,每隔30秒则创建2个cron条目。下面是cron表的解释

    定时任务执行解释 命令
    运行cron job 每分钟 * * * * *  /root/backup.sh
    运行cron job 每30分钟 30 * * * *  /root/backup.sh
    运行cron job 每小时 0 * * * * /root/backup.sh
    运行cron job 每天深夜0点 0 0 * * *  /root/backup.sh
    运行cron job 每天早上2点 0 2 * * *  /root/backup.sh
    运行cron job 每个月1号 0 0 1 * *  /root/backup.sh
    运行cron job 每个月15号 0 0 15 * *  /root/backup.sh
    运行cron job 在12月1号深夜0点 0 0 0 12 *  /root/backup.sh
    运行cron job 每周六深夜0点 0 0 * * 6  /root/backup.sh

    [root@sharplee creatfile]# crontab -e
    * * * * * date >> /home/sharplee/ss.txt
    * * * * * (sleep 10; date >> /home/sharplee/ss.txt)
    * * * * * (sleep 20; date >> /home/sharplee/ss.txt)
    * * * * * (sleep 30; date >> /home/sharplee/ss.txt)
    * * * * * (sleep 40; date >> /home/sharplee/ss.txt)
    * * * * * (sleep 50; date >> /home/sharplee/ss.txt)

    通过上图可以看出,命令每隔10s钟执行一次,命令主要是打印出当前的时间重定向到一个文件中。所以打印的文件的值是每隔10s写入一次。

    2,使用watch命令

    Watch命令允许您定期执行命令或程序,还可以在屏幕上显示输出。这意味着您将能够及时看到程序输出。默认情况下,Watch每隔 2 秒重新运行一次命令/程序。可以很容易地更改间隔以满足定期重复执行命令或者脚本的需求。

    [root@sharplee creatfile]#watch -n 10 'date >> /home/sharplee/date.txt' 

    通过上图可以看出通过watch命令也可以实现间隔10秒执行相同的命令。watch命令还可以用于监视内存,以及监视磁盘拷贝等。

    [root@sharplee creatfile]# watch free -n

     [root@sharplee creatfile]# watch -n 10 df -h

     [root@sharplee creatfile]# cp ubuntu-15.10-desktop-amd64.iso /home/tecmint/ && watch -n 0.1 du -s /home/tecmint/ubuntu-15.10-desktop-amd64.iso

    3,使用sleep命令

    sleep 命令还可以与 while 循环或 for 循环等循环一起使用,以重复或定期运行命令。打开终端并使用 for 循环,执行以下命令:

    [root@sharplee creatfile]# for i in {1..8}; do echo -n "running the command $i time"; sleep 3; done

    那使用for循环如何实现上面两个例子,把日期输入到一个文本中呢?

    [root@sharplee creatfile]# for i in {1..1000}; do date >> testd.txt; sleep 10; done

    下面来通过while循环实现每隔10s重复执行命令。

    [root@sharplee creatfile]# while true; do date >> teste.txt; sleep 10; done

    总结:本文主要讲解了如何在Linux终端中定期或重复运行命令。从运行命令到每 隔几秒或每小时运行一次脚本,通过小编亲自实践,所有操作都可以使用这三种方法完成。具体场景中请把后面执行的命令换成实际的命令或者脚本即可。

  • 相关阅读:
    python中的基础坑
    Django组件content-type使用方法详解
    数据库范式
    MySQL常见面试题索引、表设计
    python操作MySQL之pymysql模块
    MySQL备份与还原
    MySQL查询缓存
    MySQL索引及查询优化
    MySQL事务隔离之MVCC版本控制
    MySQL事务及实现、隔离级别及锁与优化
  • 原文地址:https://www.cnblogs.com/Hackerman/p/16032582.html
Copyright © 2020-2023  润新知