首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Crontab似乎启动了脚本,但什么也没有发生

crontab 是 Unix 和类 Unix 操作系统中用于定时执行任务的工具。如果你发现 crontab 启动了脚本但没有任何输出或效果,可能是以下几个原因造成的:

基础概念

  • Crontab: 是一个用于设置周期性被执行的任务的命令。
  • 脚本: 是一系列按顺序执行的命令的集合。

可能的原因及解决方法

  1. 环境变量问题 脚本可能在不同的环境中运行,导致某些命令找不到。可以在脚本开头添加以下内容来指定环境变量:
  2. 环境变量问题 脚本可能在不同的环境中运行,导致某些命令找不到。可以在脚本开头添加以下内容来指定环境变量:
  3. 权限问题 脚本可能没有执行权限。可以使用 chmod 命令添加执行权限:
  4. 权限问题 脚本可能没有执行权限。可以使用 chmod 命令添加执行权限:
  5. 日志记录 检查脚本是否有日志输出,可以通过重定向标准输出和错误输出到日志文件来查看:
  6. 日志记录 检查脚本是否有日志输出,可以通过重定向标准输出和错误输出到日志文件来查看:
  7. 脚本路径问题 确保脚本的路径是绝对路径,而不是相对路径。
  8. Crontab语法问题 检查 crontab 的语法是否正确。例如:
  9. Crontab语法问题 检查 crontab 的语法是否正确。例如:
  10. 脚本内容问题 检查脚本内部是否有错误,可以通过手动执行脚本来验证:
  11. 脚本内容问题 检查脚本内部是否有错误,可以通过手动执行脚本来验证:
  12. 系统日志 查看系统日志,可能会有关于 crontab 执行失败的记录。在 Linux 系统中,通常可以通过查看 /var/log/syslog/var/log/cron 文件来获取相关信息。

示例代码

假设你的脚本 backup.sh 内容如下:

代码语言:txt
复制
#!/bin/bash
# backup.sh
tar cvpzf /backup/home.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/media /

确保脚本有执行权限:

代码语言:txt
复制
chmod +x backup.sh

设置 crontab 定时任务:

代码语言:txt
复制
crontab -e

添加以下行来每天凌晨2点执行备份脚本,并记录日志:

代码语言:txt
复制
0 2 * * * /path/to/backup.sh >> /path/to/backup.log 2>&1

应用场景

  • 定时备份:如上例所示,可以用来定期备份重要数据。
  • 自动报告生成:比如每天自动生成销售报告。
  • 系统维护:例如定期清理日志文件。

总结

如果 crontab 启动了脚本但没有效果,首先检查脚本的执行权限和环境变量,然后查看是否有日志输出可以帮助诊断问题。确保 crontab 的语法正确,并且脚本路径无误。通过这些步骤,通常可以找到并解决问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

mysql服务器重启, 却有2个mysqld进程 ?

次了.得手动到后台强制重启OS)后, 检查发现mysqld进程有2个.说明: 本文所有截图均为测试环境截图.我这里是使用centos模拟的, 真实环境的父进程是 1分析这种现象, 显然是mysqld启动了...我这里可以看到是1028, 单真实环境均是1, 也就是开机自启的.能做到开机自启的情况有:/etc/rc.localcrontab (每分钟检查,没启动就执行启动脚本也能实现)systemctl/service.../etc/crontab 这还有个定时任务呢...首先查看 /etc/rc.local虽然有看到我们的mysql启动脚本, 但还有个莫名其妙的/etc/start.sh脚本在....可能存在脚本调脚本的情况. 但太复杂了, 我们就先看后面几种情况....由于进程是mysql启动的, 所以我们只需要看root和mysql的定时任务就行,遗憾的是并没有相关的定时任务, 也没有配置服务管理, /etc/crontab也是空的.

16420
  • 如何优雅的在 Linux 下开机自动重启脚本

    1 简介 经常碰到机器断电之后需要重启一大堆服务,为了防止这种事情发生,设置开机自启的脚本十分的重要,我们习惯性的做法就是编写一个重启脚本,然后在 /etc/rc.local 中去完成开机执行。...例如下面这样: $ cat /etc/rc.local bash /root/script/restart.sh 这样的方法虽然可行,但并不优雅。...今天我们就给大家介绍两种更好的实现方式: 2 通过 Crontab 实现 Crontab 可以使用 @reboot 来执行主机启动之后的命令。...首先在命令行输入: $ crontab -e 然后添加以下内容: @reboot /root/script/restart.sh 完成后,这个脚本就可以在重启的时候自动执行了。...default.target 然后启用这个 Systemd 服务: $ systemctl daemon-reload $ systemctl enable restart.service 完成后,这个服务对应的脚本就可以自动开机自启了

    4.4K31

    如何优雅的在 Linux 下开机自动重启脚本

    1简介 经常碰到机器断电之后需要重启一大堆服务,为了防止这种事情发生,设置开机自启的脚本十分的重要,我们习惯性的做法就是编写一个重启脚本,然后在 /etc/rc.local 中去完成开机执行。...例如下面这样: $ cat /etc/rc.local bash /root/script/restart.sh 这样的方法虽然可行,但并不优雅。...今天我们就给大家介绍两种更好的实现方式: 2通过 Crontab 实现 Crontab 可以使用 @reboot 来执行主机启动之后的命令。...首先在命令行输入: $ crontab -e 然后添加以下内容: @reboot /root/script/restart.sh 完成后,这个脚本就可以在重启的时候自动执行了。...default.target 然后启用这个 Systemd 服务: $ systemctl daemon-reload $ systemctl enable restart.service 完成后,这个服务对应的脚本就可以自动开机自启了

    4.8K10

    如何正确设置CRON定时任务

    相信很多人看了标题后都会纳闷:设置 CRON 定时任务有什么难的?不过请相信我,正确设置 CRON 真的不是一件简单的事情!各位看官不妨听我慢慢道来。...关于 CRON,出镜率最高的一个问题莫过于:为什么手动执行一切正常,放到 CRON 里就不执行呢?...此外,有人喜欢直接在 /etc/crontab 里配置定时任务,这同样是十恶不赦的做法,多数时候,我们都应该使用 crontab -e 的方法来设置,原因是这样有语法检查。...如果本文的内容仅限于此类小菜,那么未免有些太对不起各位看官,下面上一道硬菜:设置一个 PHP 脚本,每分钟执行一次,怎么搞?...看起来似乎完美解决了问题,不过让我们在加入一点特殊情况:假如因为某些无法预知的原因,导致脚本不能正常结束请求,进而导致不能正常释放锁,那么后续所有其它的 CD 等请求也都无法执行了,如何避免?

    1K10

    crontab中如何实现每隔多少天执行一次脚本

    * */2 * * * /etc/init.d/apache2 restart 下面是每隔多少分钟,每隔多少小时,每天/每周/每月/每年的crontab的归纳总结 如果说是每个月的每隔10天来执行某个脚本的话...但如果是按自然天数,比如说每27天,执行一次脚本,这个要如何实现呢? 如果是这种情况,显然不能通过crontab直接实现,必须迂回实现。 下面是能想到的两种方法。...【方法一】通过脚本控制时间来实现 思路:  1) 在脚本running.sh中设置要执行的次数,这里假如10次,每次间隔27天,script.sh为要执行的脚本 2) 然后执行nohup bash running.sh...【方法二】通过crontab间接实现 思路: 1) 每天定时执行running.sh脚本,再在脚本running.sh里面判断,当间隔时间满足条件时 2) 执行script.sh脚本,同时修改上次执行时间...0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart 一月一号的4点重启apache 名称 : crontab 使用权限 : 所有使用者 使用方式

    9K20

    Linux命令之crontab

    3.服务启停 安装crontab: yum install crontabs 服务操作说明: /sbin/service crond start //启动服务 /sbin/service crond stop...如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些 系统中,用tty1来表示控制台,可以根据实际情况对上面的例子进行相应的修改。...我就有过类似的经历,有数次误删了crontab文件(因为r键紧挨在e键的右边)。这就是为什么有些系统文档建议不要直接编辑crontab文件,而是编辑该文件的一个副本,然后重新提交新的文件。...,后面就可以写要运行的某个脚本名,而不是目录名了 6.几点注意事项 有时我们创建了一个crontab,但是这个任务却无法自动执行,而手动执行这个任务却没有问题,这种情况一般是由于在crontab文件中没有配置环境变量引起的...所以注意如下3点: 1)脚本中涉及文件路径时写全局路径; 2)脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如: cat start_cbp.sh #!

    2.4K20

    一个备库中ORA错误信息的分析 (r6笔记第69天)

    自从上次在社群分享了DB time的抖动案例之后,有不少的朋友似乎对这个工具很感兴趣,我做这个分享的一个主要原因就是希望大家在有些细节中发现问题,至于我分享的问题原因,都是各种各样的小问题,有些朋友也纳闷这种错误似乎还是比较低级的...前几天又收到一条报警短信,提示某个备库报了ora错误,但是短信中也没有提到更多的ora信息,首先连接到主库看看是否dg出了问题,使用dgmgrl进行验证,没有发现任何问题。...应该是crontab或者scheduler来触发的了。 查看crontab,查看时间点相近的配置,就发现了两条相关的记录,时间戳和ORA的时间戳是一致的。...ora错误,那么为什么查询还会需要一次又一次的read only呢,还是因为这是一个10gR2的库。...简单的讨论和核查后,确认这两个job已经不再需要了,这样这个问题就基本解决了,早上再也没有这两个ORA报警了,想想心里又会少咯噔几下。

    75850

    Linux之crontab命令

    通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。...如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些系统中,用tty1来表示控制台,可以根据实际情况对上面的例子进行相应的修改。...30 21 * * * /etc/init.d/smb restart 每月1、10、22日的4 : 45重启smb 45 4 1,10,22 * * /etc/init.d/smb restart...所以你要保证在shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。...所以注意如下3点: 脚本中涉及文件路径时写全局路径; 脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:: cat start_cbp.sh #!

    3.3K20

    Linux之crontab命令

    通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。...如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些系统中,用tty1来表示控制台,可以根据实际情况对上面的例子进行相应的修改。...30 21 * * * /etc/init.d/smb restart 每月1、10、22日的4 : 45重启smb 45 4 1,10,22 * * /etc/init.d/smb restart...所以你要保证在shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。...所以注意如下3点: 脚本中涉及文件路径时写全局路径; 脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:: cat start_cbp.sh #!

    71320

    Linux之crontab命令

    通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。...如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些系统中,用tty1来表示控制台,可以根据实际情况对上面的例子进行相应的修改。...30 21 * * * /etc/init.d/smb restart 每月1、10、22日的4 : 45重启smb 45 4 1,10,22 * * /etc/init.d/smb restart...所以你要保证在shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。...所以注意如下3点: 脚本中涉及文件路径时写全局路径; 脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:: cat start_cbp.sh #!

    91800

    Linux定时任务Crontab命令详解

    command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。...] file crontab [-u user] [ -e | -l | -r ] 2.命令功能: 通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。...如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些 系统中,用tty1来表示控制台,可以根据实际情况对上面的例子进行相应的修改。...我就有过类似的经历,有数次误删了crontab文件(因为r键紧挨在e键的右边)。这就是为什么有些系统文档建议不要直接编辑crontab文件,而是编辑该文件的一个副本,然后重新提交新的文件。...所以注意如下3点: 1)脚本中涉及文件路径时写全局路径; 2)脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如: cat start_cbp.sh #!

    1.7K10

    【腾讯云的1001种玩法】关于Web服务器Nginx反向代理GitHub Page的一点思考(bash脚本)

    2 主要步骤 在服务器某个安稳的地方写一个脚本。例如新建/etc/myshell文件夹,在其下撰写一个myshell_1.shShell脚本。...完成 3 关于crontab命令的相关小结 通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。...如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些系统中,用tty1来表示控制台,可以根据实际情况对上面的例子进行相应的修改。...30 21 * * * /etc/init.d/smb restart 实例7:每月1、10、22日的4 : 45重启smb 45 4 1,10,22 * * /etc/init.d/smb restart...实例8:每周六、周日的1 : 10重启smb 10 1 * * 6,0 /etc/init.d/smb restart 实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb 0,30

    2.4K10

    10.23 linux任务计划cron

    只要周2和周5执行该文件 0 3 1-10 */2 2,5 /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log 为什么没有年份...systemctl start crond.service //启动crond服务 若想检查服务是否成功启动, 方法一:可使用ps aux |grep cron 命令查看 若有这个进程,说明这个服务已经启动了...方法二:使用systemctl start crond 查看状态 若是 绿色 ,则表示该服务已经启动了 若是该服务已经停掉了,则不会有颜色 任务计划不执行的原因分析 在写了一个计划,放入到配置文件中...,但就是不执行 不执行的原因很有可能是你写的脚本里面,没有使用 绝对路径 的原因导致不执行 因为很有可能,你在使用的命令不在PATH里面,所以要么将命令写一个绝对路径,要么将命令的路径加入到PATH变量里面去...建议:在写一个脚本的时候,都要写追加一个日志,这样可以保证这个任务有据可查,再不执行的时候,查看错误日志即可 任务计划备份 crontab -l //列出 crontab文件存在位置/var

    2K90
    领券