通过shell脚本运行cron

时间:2017-03-20 10:03:53

标签: shell ubuntu cron ubuntu-16.04

我有一个名为 test.sh 的shell脚本。

#! /bin/bash
mysql -u root -p <<dbEmployee1
use dbEmployee1;
UPDATE EMPLOYEE SET EMPLOYEE_NAME = 'Cyndi' WHERE EMPLOYEE_ID ='1'; 
SELECT * from EMPLOYEE;
dbEmployee1

mysql -u root -p <<dbBooks
use dbBooks;
SELECT * FROM Author;
dbBooks

关注this tutorial我想要做的是让我的脚本每10秒运行一次,但我会得到以下结果。

seng@wseng:/$ */10 * * * * /home/seng/Desktop/test.sh
bash: proc/10: Is a directory

我在这里错过了什么或做错了什么?

编辑(执行crontab -e后)

# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
* * * * * cd /home/seng/Desktop/test.sh

1 个答案:

答案 0 :(得分:1)

Cron只允许至少1分钟。因此,要每10秒安排一次,您所能做的就是在另一个每10秒运行一次的脚本中调用该脚本。这可能不是正确的解决方案,但可以满足您的目的。

这是一个简单的脚本,可以完成这项工作:

#!/bin/sh

while true
do

sh test.sh
sleep 10 

done

另外,请记住test.sh执行的时间。因此,您可以在脚本中改变睡眠时间。

如果你想在一分钟内运行它,那么就是这个过程。

  • 您需要确保拥有运行该脚本权限的用户应该是当前登录的用户。

  • 在命令行中输入crontab -e(将打开编辑器)。输入以下

    * * * * * /absolute/path/to/the/script

现在先关闭编辑器,先按ESC键,然后按:wq,然后按ENTER

说明:

 .---------------- minute (0 - 59)
 |  .------------- hour (0 - 23)
 |  |  .---------- day of month (1 - 31)
 |  |  |  .------- month (1 - 12)
 |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)
 |  |  |  |  |
*  *  *  *  * command to be executed

提到每个astrick值,并且可以相应地进行。

例如:

每分钟运行一次:

* * * * * command to be executed

每天午夜运行:

0 0 * * * command to be executed

您可以执行crontab -l命令列出所有cronjobs,然后按crontab -r删除任何内容。

只需确保另外两件事,每次更改文件时重新启动cron守护程序(service crond restart)以及对其执行的脚本的权限级别(检查/var/mail/<user>是否有日志)。