centos7定时任务(分隔日志)

nohup是常用的守护后端运行,但时间长文件会变大

export JAVA_HOME=/home/jbr_jcef-17.0.9-linux-x64-b1087.3
nohup /home/batteryplatform/bin/unix-start.sh >>run.log 2>&1&

1.创建Shell脚本nohup_log.sh

#创建文件
touch nohup_log.sh
#增加权限
chmod 777 ./nohup_log.sh

vim nohup_logs.sh
内存如下

#复制粘贴下方内容
#创建日志文件夹
log_dir="/usr/local/debug/logs"
# 拷贝日志文件到昨天的log中
cp $log_dir/nohup.out $log_dir/nohup`date -d yesterday +%Y%m%d`.log
# 清空nohup.out日志
cat /dev/null > $log_dir/nohup.out
# 删除14天以前的日志(可加可不加,自动删除14天以前的日志,只保留近15天的日志,需要就加,然后把#号去掉)
#find $log_dir -mtime +14 -name 'nohup*.log' -exec rm -rf {} \;

2.将脚本执行加入定时任务中

#执行
crontab -e
#加入执行任务 每天凌晨执行
0 0 * * * /usr/local/debug/nohup_log.sh
#按Esc键后再输入:wq!,回车保存
#查看是否创建成功
crontab -l

3.任务重启

#执行任务生效命令
 systemctl restart crond

在这里插入图片描述

<think>好的,用户问的是如何在Linux中创建和管理cron定时任务。首先,我需要回忆一下关于cron的基本知识。根据之前的引用内容,cron是Linux中的守护进程,用于定时任务调度。用户可能需要知道具体的步骤,比如如何编辑crontab文件,如何查看任务,以及如何管理现有的任务。 首先,创建定时任务通常使用crontab命令。用户可能需要知道如何进入编辑模式,比如用crontab -e。同时,权限问题也很重要,普通用户只能编辑自己的任务,而root可以管理系统的任务。这时候需要提到用户级别和系统级别的区别,引用中提到的/etc/cron.d/目录和各个cron.hourly等目录的使用。 接下来,crontab的语法是关键部分。需要详细说明时间字段的含义,比如分、时、日、月、周,以及如何组合它们。比如星号代表所有值,逗号分隔列表,减号表示范围,斜杠表示间隔。这部分需要举例说明,比如每天凌晨执行任务,或者每5分钟运行一次脚本。 然后,管理现有任务,比如用crontab -l查看当前任务,用crontab -r删除所有任务,但可能用户更常用的是直接再次编辑来删除或修改某一行。需要注意提醒用户谨慎使用-r,避免误删。 另外,系统级任务和用户级任务的区别也很重要。引用中提到/etc/crontab和/etc/cron.d/目录用于系统级任务,可能需要sudo权限才能修改。而用户级任务存放在/var/spool/cron/目录下。同时,还可以将脚本放入cron.hourly等目录,让系统自动按周期执行,这可能对用户来说更方便。 日志部分,用户可能需要知道如何查看cron的执行记录,比如查看/var/log/syslog或使用grep过滤。这对于调试任务是否执行很有帮助。 注意事项里,需要提到环境变量的问题,因为cron的执行环境可能与用户shell不同,建议在脚本中使用绝对路径。还有权限问题,比如脚本是否具有执行权限。 最后,生成相关问题的时候,要考虑用户可能进一步想知道的内容,比如如何调试不执行的cron任务,系统级和用户级任务的区别,或者如何设置每分钟任务等。这些相关问题可以帮助用户深入学习。 现在需要组织这些信息,结构要清晰,分步骤说明创建、管理、系统级任务、日志查看和注意事项。同时,引用相关的引用内容来支持说明,比如引用[4]中提到的目录结构,引用[3]中的系统级任务存放位置等。确保每个步骤都有对应的例子和命令,让用户能够跟着操作。</think>### 如何在Linux中创建和管理cron定时任务 #### 一、创建用户级定时任务 1. **编辑当前用户的crontab文件** 使用命令 `crontab -e` 进入编辑模式。首次操作时会提示选择编辑器(如nano或vim)[^4]。 2. **编写定时任务规则** cron语法格式为: `分钟 小时 日 月 周 命令` 例如每天凌晨3点执行备份脚本: ```bash 0 3 * * * /home/user/backup.sh ``` 每5分钟执行一次监控任务: ```bash */5 * * * * /usr/bin/monitor-script ``` 3. **保存并生效** 保存文件后,任务会自动载入系统,无需重启服务[^2]。 #### 二、管理现有任务 | 操作 | 命令 | 说明 | |----------------------|--------------------|---------------------------------------| | 查看当前用户的定时任务 | `crontab -l` | 列出所有已配置的任务 | | 删除所有定时任务 | `crontab -r` | 谨慎操作!会清除全部任务 | | 编辑其他用户的任务 | `crontab -u user -e` | 需要管理员权限(如root用户) | #### 三、系统级定时任务配置 1. **直接编辑系统任务文件** 修改 `/etc/crontab` 文件(需sudo权限),语法需额外指定用户: ```bash 0 4 * * * root /usr/sbin/logrotate ``` 2. **使用专用目录** 将脚本放入以下目录实现周期性任务: - `/etc/cron.hourly`:每小时执行 - `/etc/cron.daily`:每天执行(默认凌晨6:25) - `/etc/cron.weekly`:每周执行 - `/etc/cron.monthly`:每月执行 3. **自定义系统任务文件** 在 `/etc/cron.d/` 目录中新建任务文件,适合需要自定义时间的系统级任务[^3]。 #### 四、日志查看与调试 1. **查看执行记录** ```bash grep CRON /var/log/syslog ``` 或使用特定发行版的日志路径(如Ubuntu的 `/var/log/syslog`,CentOS的 `/var/log/cron`)[^2]。 2. **调试建议** - 在命令中使用绝对路径 - 脚本开头添加环境变量(如 `#!/bin/bash`) - 输出重定向调试信息: `* * * * * /path/script.sh > /tmp/debug.log 2>&1` #### 五、注意事项 1. **环境变量问题** cron执行环境与用户shell环境不同,建议在脚本中显式设置PATH变量。 2. **权限控制** - `/etc/cron.allow` 和 `/etc/cron.deny` 文件控制用户访问权限 - 系统级任务文件需root权限修改 3. **时间同步** 确保系统时间准确,可通过 `ntpdate` 或 `timedatectl` 同步时间。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁晓山(ben)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值