linux中怎么让一个shell脚本分别在凌晨00点和中午12点运行一次

Linux crontab可实现定时任务。

编辑家目录.profile文件。
设置EDITOR=vi。
创建testcron文件,内容为runtest.sheveryhalfday0,1 2 /home/username/test.sh。
用crontab命令提交testcron。

test.sh在每天00:00和1 2 :00执行。

crontab格式:分钟 小时 日期 月份 星期几 命令。

0,1 2 表示每天00:00和1 2 :00。
/home/username/test.sh是脚本路径。

星号表示任意值。
逗号,表示列举。
连字符-表示范围。
斜杠/表示步长。

确保用户有执行权限。
sudo提升权限。

用crontab -l查看任务列表。
检查/var/log/cron或/var/log/syslog。

crontab -l|syntax检查语法。

你自己掂量。

Linux如何配置定时任务?_Linuxcron与at命令使用技巧

上周我那个朋友问Linux怎么定时备份文件。

Linux定时任务主要靠cron和at。

cron 负责周期性任务。

配置方式很简单。

在终端输入 crontab -e 就能编辑自己的任务。

比如每天凌晨2 点3 0分跑脚本:
3 0 02 /path/to/script.sh
字段顺序是:分钟、小时、日期、月份、星期、要执行的命令。

特殊符号用得很多。

代表任意值。
,
代表列举或范围。
/ 代表步长。

比如每5 分钟跑一次:
/5
系统级任务 需要root权限。

可以编辑 /etc/crontab 文件。

或者把脚本扔进 /etc/cron.d/ 目录。

还有 /etc/cron.{hourly,daily,weekly,monthly}/ 目录,放进去就会按周期执行。

at 负责一次性任务。

比如明天上午1 0点重启服务器:
at 1 0:00 tomorrow sudo reboot Ctrl+D
输入完命令按 Ctrl+D 结束。

排查问题 有几个常见坑。

一是环境变量。

cron的环境变量和普通shell不一样。

最好在脚本前面加 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin。

二是输出。

默认会发邮件。

如果脚本有输出但没收到邮件,可能是邮件服务出问题。

可以改用重定向。

比如:
3 0 02 /path/to/script.sh >> /var/log/script.log 2 >&1
这样错误信息也会记录到日志里。

总结 就这些。

cron和at用对位置,自动化管理就很简单。

你看着办。

Linux 黑话解释:什么是定时任务 | Linux 中国

嘿,你问Linux的cronjob啊?这玩意儿确实挺实用的,上周有个客人问我自动备份怎么搞,我就跟你细说说。

我自己踩过的坑是,刚开始用cron的时候,老是写错时间表达式,比如用"7 "当周日,结果任务总执行不对。
得记住啊,周是0到6 ,0是周日,别跟周几搞混了。

比如,2 02 3 年我在上海某商场上班的时候,为了每天凌晨3 点自动备份网站数据,就是这么设置的:
bash 03 03 /path/to/backup_script
这行cron的意思就是:每天凌晨3 点(03 03 )执行 /path/to/backup_script 这个备份脚本。
简单吧?
那怎么创建这个任务呢?就在服务器上跑个命令 crontab -e,然后把你写的计划时间加上去就行。
比如我那个备份脚本路径是 /home/user/backup.sh,我就这么写:
bash 03 03 /home/user/backup.sh
验证结果怎么看?你可以手动等5 分钟,然后去 /home/user/backup.sh 脚本里加个 echo "Backup ran at $(date)" >> /home/user/backup.log,再过两小时看下 backup.log 文件是不是有两条记录了。
或者直接看 crontab -l 列出当前用户的任务,确保没写错。

备份脚本怎么写?我一般习惯用bash,内容大概像这样:
bash !/usr/bin/bash echo "Backing up at $(date)" mkdir -p /tmp/backup tar -czvf /tmp/backup.tgz /home/user/data mv /tmp/backup.tgz /home/user/remote_backup_folder echo "Backup completed at $(date)" >> /home/user/backup.log
记得用 chmod +x /home/user/backup.sh 给脚本加执行权限,不然cron执行不了。

不过要注意,cron任务里的命令路径最好是绝对路径,别写 ~/backup.sh 这种,容易出错。
特别是你跨了用户执行的时候。
如果不确定,就写成 /home/username/backup.sh。

还有个坑,就是脚本里用不到的环境变量,比如 PATH,你得在脚本开头自己 export 一下,不然脚本里 which ls 可能就找不到 ls 命令了。
我之前就因为这个,写了个脚本在cron里执行,结果 echo $PATH 打印出来是空的,整个脚本崩了。
气死我了!
任务没执行咋办?先 crontab -l 看下任务是不是真的加进去了。
如果加了还是不动,就去看系统日志,Ubuntu是 grep CRON /var/log/syslog,Systemd系统是 journalctl -u cron。
上面一般有提示。

总的来说,cron用起来挺方便的,搞个备份、定期清理日志啥的太合适了。
你写个脚本,cron帮你按点执行,省心。
想复杂点,还能在脚本里加发邮件告警啥的。
不过就是得注意路径和环境变量这些小细节。