Linux/mac crontab 命令格式与详细例子

本文详细介绍了在Linux/Mac环境下如何使用CronTab进行定时任务的设置,包括CronTab的基本格式、命令示例及常见用法。通过具体实例展示了如何精确控制任务的执行时间。

在linux/mac下,使用控制台输入命令:crontab -e进入编辑。

crontab基本格式 : 
* * * * * command 
分 时 日 月 周 命令

第1列表示分钟1~59 每分钟用*或者 */1表示 
第2列表示小时1~23(0表示0点) 
第3列表示日期1~31 
第4列表示月份1~12 
第5列标识号星期0~6(0表示星期天) 
第6列要运行的命令

crontab文件的一些例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart 
上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart 
上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart 
上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart 
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart 
上面的例子表示每星期六的11 : 00 pm重启apache。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart 
每一小时重启apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart 
晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart 
每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart 
一月一号的4点重启apache

 

名称 : crontab

使用权限 : 所有使用者

使用方式 :

crontab file [-u user]-用指定的文件替代目前的crontab。

crontab-[-u user]-用标准输入替代目前的crontab.

crontab-1[user]-列出用户目前的crontab.

crontab-e[user]-编辑用户目前的crontab.

crontab-d[user]-删除用户目前的crontab.

crontab-c dir- 指定crontab的目录。

crontab文件的格式:M H D m d cmd.

 

M: 分钟(0-59)。

H:小时(0-23)。

D:天(1-31)。

m: 月(1-12)。

d: 一星期内的天(0~6,0为星期天)。

cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量

说明 :

crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定

user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设

定自己的时程表。

 

 

参数 :

crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数

来指定使用那个文字编辑器(比如说 setenv VISUAL joe)

crontab -r : 删除目前的时程表

crontab -l : 列出目前的时程表

crontab file [-u user]-用指定的文件替代目前的crontab。

时程表的格式如下 :

f1 f2 f3 f4 f5 program

其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执

行的程序。

当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推

当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推

当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推

当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推

使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。

例子 :

#每天早上7点执行一次 /bin/ls :

0 7 * * * /bin/ls

在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /usr/bin/backup :

0 6-12/3 * 12 * /usr/bin/backup

周一到周五每天下午 5:00 寄一封信给 alex@domain.name :

0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata

每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"

20 0-23/2 * * * echo "haha"

注意 :

当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之

后加上 > /dev/null 2>&1 即可

 

例子2 :

#每天早上6点10分

10 6 * * * date

#每两个小时

0 */2 * * * date

#晚上11点到早上8点之间每两个小时,早上8点

0 23-7/2,8 * * * date

#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

0 11 4 * mon-wed date

#1月份日早上4点

0 4 1 jan * date

范例

$crontab -l 列出用户目前的crontab.

<think>嗯,用户的问题是关于内网服务器IP乱跳的情况,需要指导如何用Linux命令排查。首先,我需要理解用户所说的“IP乱跳”具体指什么。可能的情况包括IP地址冲突、DHCP租约问题,或者是服务器配置了多个IP导致的变化,甚至可能是ARP欺骗之类的网络攻击。 接下来,我得考虑用户的技术背景。用户可能有一定的Linux使用经验,但可能对网络排查不太熟悉。因此,回答需要结构清晰,步骤明确,命令具体,并且给出解释,让用户能够理解每个步骤的目的。 首先,我会想到检查当前的IP配置,使用ip addr或者ifconfig命令。这能帮助用户确认服务器当前使用的IP地址,是否有多个地址绑定,或者是否有意外的虚拟接口。 然后,查看DHCP客户端的日志,因为如果服务器使用DHCP获取IP,租约到期或DHCP服务器的问题可能导致IP变化。日志路径可能在/var/log/syslog或messages,根据发行版不同,可能需要用journalctl。 接下来,检查网络配置文件,比如/etc/network/interfaces或Netplan的YAML文件,确认是否是静态IP配置错误,或者DHCP配置导致的问题。 ARP表的情况也很重要,使用arp或ip neigh命令查看是否有异常的MAC地址对应同一个IP,这可能意味着ARP欺骗或IP冲突。 抓包分析可能更深入,用tcpdump监听ARP请求或DHCP流量,但这对用户来说可能有点复杂,需要适当指导。 另外,检查系统日志中的网络相关错误,如dmesg或/var/log/syslog,寻找DHCP错误或接口状态变化的记录。 最后,确认是否有定时任务或脚本在修改网络配置,这可能导致IP变化。检查crontab和/etc/cron.*目录。 需要考虑用户可能遇到的困难,比如如何过滤日志,如何正确使用tcpdump命令,可能需要给出具体的例子。同时,提醒用户权限问题,部分命令需要sudo。 可能的误区是用户可能混淆了IP变化的原因,比如认为是外部的攻击,而实际上是内部配置错误。因此,步骤需要从简单到复杂,先排除配置问题,再考虑网络攻击的可能性。 总结下来,回答应该分步骤,每个步骤给出命令和解释,帮助用户逐步排查,同时语言要简洁明了,避免使用过于专业的术语,必要时给出注意事项,比如备份配置、小心抓包时的数据量等。</think>内网服务器IP异常变化("乱跳")的排查可按以下步骤进行: 1. **确认当前网络配置** ```bash ip addr show # 查看所有接口的IP/MAC地址 ifconfig -a # 传统方式查看网络配置(部分系统需安装net-tools) ``` 重点观察: - 是否有多个IP绑定到同一接口 - 是否存在意料之外的虚拟接口 - MAC地址是否发生变化(可能硬件更换或虚拟化问题) 2. **检查DHCP日志(如使用动态IP)** ```bash journalctl -u dhclient # 查看dhcp客户端日志 grep -i dhcp /var/log/syslog | tail -50 # 筛选最近50条DHCP相关日志 ``` 注意观察: - 是否存在频繁的IP续约失败 - DHCP服务器是否强制变更IP地址 - 租约时间是否设置过短 3. **检查静态配置(如使用固定IP)** ```bash cat /etc/network/interfaces # Debian系配置文件 cat /etc/sysconfig/network-scripts/ifcfg-* # RedHat系配置文件 cat /etc/netplan/*.yaml # Ubuntu新版配置 ``` 需确认: - 配置中是否包含`dhcp`关键字(可能静动态混合配置) - 是否有重复的IP地址配置 - 子网掩码是否网关匹配 4. **ARP表检查** ```bash arp -n # 查看ARP缓存表 ip neigh show # 新版ARP表查看命令 watch -n1 "arp -n" # 实时监控ARP表变化 ``` 注意: - 同一IP是否对应多个MAC地址(可能ARP欺骗) - 网关MAC地址是否突然变化 5. **抓包分析网络流量** ```bash tcpdump -i eth0 -nn 'arp or udp port 67' # 捕获ARP和DHCP流量 tshark -i eth0 -Y "bootp.option.dhcp == 2" # 使用wireshark工具过滤DHCP Offer ``` 关键点: - 检测是否有多个DHCP服务器响应 - 观察ARP请求是否异常频繁 6. **检查系统日志** ```bash dmesg | grep -i eth0 # 查看网卡驱动日志 journalctl -k --since "10 minutes ago" | grep -i link # 查看内核网络事件 ``` 7. **排查定时任务** ```bash crontab -l # 查看当前用户的计划任务 ls -l /etc/cron.* # 检查系统级定时任务 grep -r "ifconfig\|ip " /etc/cron* /var/spool/cron/ # 搜索可能修改网络的脚本 ``` **常见原因及处理建议:** 1. DHCP地址池冲突 → 检查DHCP服务器配置 2. 静态IP配置错误 → 核对子网掩码/网关 3. 虚拟网卡配置残留 → 清理无效的network-manager配置 4. ARP欺骗攻击 → 部署ARP防火墙 5. 网卡硬件故障 → 更换物理网口测试 **注意事项:** - 排查前建议备份网络配置 - 生产环境操作应在维护窗口进行 - 使用`nmcli`(NetworkManager)管理的系统需要同时检查GUI配置 - 虚拟机环境需同步检查宿主机网络配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值