crontab -e 和 vi /etc/crontab的区别

本文详细介绍了如何使用CronTab进行定时任务的编辑与管理,包括用户级和系统级的定时任务设置方法,以及CronTab命令的常用选项解析。
  1. 使用 crontab -e 命令编辑定时任务列表

使用这个命令编辑的定时任务列表是属于用户级别的,初次编辑后在 /var/spool/cron 目录下生成一个与用户名相同的文件,文件内容就是我们的定时任务列表。如没有定时任务,这个文件就是空文件。

crontab命令还有一些其他的选项

-u #指定哪个用户的cron服务,一般是root用户执行这个命令的时候需要

-l #列出用户的定时任务列表,默认当前用户

-r #删除用户的定时任务列表,默认当前用户

-e #编辑用户的定时任务列表,默认当前用户

例子:列出xiaoming用户的cron服务列表

crontab -u xiaoming -l

回到顶部
2. 直接编辑 /etc/crontab 文件,命令如下:

编辑 /etc/crontab 文件只有 root 用户才行

vim /etc/crontab

我们会看到文件内容,如下:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
#For details see man 4 crontabs
#Example of job definition:
#.---------------- minute (0 - 59)
#| .------------- hour (0 - 23)
#| | .---------- day of month (1 - 31)
#| | | .------- month (1 - 12) OR jan,feb,mar,apr …
#| | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
#| | | | |
#* * * * * user-name command to be executed
这配置的定时任务属于系统级别的。

  1. 其他的一些区别
    crontab -e 会进行语法检查、直接编辑 /etc/crontab 文件则不会
为什么我运行完这个之后#!/bin/sh /etc/rc.common Copyright © 2016 Shenzhen TP-LINK Technologies Co.Ltd. Author Wang Haowanghao@tp-link.com.cn START=73 #STOP=73 USE_PROCD=1 start() { local bt_enable=$(uci get bluetooth.B1.enable -q) if [[ “$bt_enable” == “on” ]] then local data local factorymode data=$(getfirm MAC | sed ‘s/-//g’) BTHOST_BD_ADDR=0x$data echo " B T H O S T B D A D D R " > / t m p / B T H O S T B D A D D R M O D E L = BTHOST B ​ D A ​ DDR">/tmp/BTHOST B ​ D A ​ DDRMODEL=(getfirm MODEL | sed “s/ /\ /g”) factorymode=$(uci get factory.factorymode.enable -q) if [ “$factorymode” == “yes” ]; then echo “bluetooth start manufactory mode” > /dev/console /tmp/bthost -p /dev/ttyAMA3 -b 115200 -m & else echo “bluetooth MCU support AT protocol(From JieLi ZhuHai)” > /dev/console /tmp/bthost -p /dev/ttyAMA3 -b 115200 -n “$MODEL” -o & echo “30 * * * * /etc/init.d/bluetopia stop” > /tmp/bluetopia crontab -l | grep -v “bluetopia” | cat - “/tmp/bluetopia” | crontab - fi return 0 fi } stop() { echo “Stopping bluetooth…” > /dev/console crontab -l | grep -v “bluetopia” | crontab - uci set bluetooth.B1.enable=off uci commit killall bthost local quicksetup_is_conf=$(uci get quicksetup.quicksetup.to_show) if [ “$quicksetup_is_conf” == “false” ] then echo “Saving conf to user-config…” > /dev/console uci_commit_flash bluetooth fi return 0 } restart() { sleep 15; stop; start; } 在用cat看脚本变样子了 root@Archer BN800:/tmp# vi bluetopia 30 * * * * /etc/init.d/bluetopia stop
最新发布
11-26
<think>首先,用户的问题是:“我想编辑定时任务 请问crontab -e 命令使用方法”。我需要根据系统级指令来构建回答。 系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,例如[^1]。 - 回答结构清晰,帮助用户逐步解决问题,尽量保证回答真实可靠。 - 参考站内引用:我有5个引用([^1]到[^5]),这些是关于crontab命令的。 用户的问题是关于crontab -e命令的使用方法,所以我需要基于这些引用来回答。 关键引用: - [^1]: 解释crontab -e是针对用户的cron,而/etc/crontab是系统级的。crontab -e使用/usr/bin/crontab执行文件。 - [^2]: crontab -e会默认用vi编辑器打开用户的crontab文件,可以添加、修改或删除任务计划。格式是每行一个任务。 - [^3]: 列出crontab命令的选项:-e修改,-l显示,-r删除,-ir删除前提醒。 - [^4]: 在银河麒麟系统中,crontab -e保存问题,需要先运行select-editor选择编辑器(如vim)。 - [^5]: 如何永久设置crontab使用vim编辑器,通过修改~/.bashrc文件。 回答结构: - 结构清晰:逐步解释如何使用crontab -e。 - 使用中文。 - 在引用内容后添加引用标识。 - 生成相关问题。 步骤: 1. 介绍crontab -e是什么。 2. 解释如何使用crontab -e编辑定时任务。 3. 描述任务格式。 4. 解决常见问题,如编辑器选择(基于引用[^4][^5])。 5. 添加引用标识。 6. 最后生成相关问题。 数学表达式:用户问题不涉及数学,但系统指令要求行内数学表达式使用$...$。既然这里没有数学内容,我不需要添加任何数学表达式。但如果提到数字或类似,可以正常处理,不需要强制添加。 生成相关问题:在最后,添加一个“相关问题”部分。 完整回答: - 开头:直接回应用户问题。 - 主体:逐步指南。 - 结尾:相关问题。</think>### crontab -e 命令使用方法 crontab -e 命令是 Linux 系统中用于编辑用户级定时任务的工具。它允许你添加、修改或删除计划任务(cron jobs),这些任务会在指定时间自动运行脚本或命令。以下是详细的使用步骤,我会逐步解释,确保你轻松上手。注意:crontab -e 针对当前用户的任务管理,如果是系统级任务,应编辑 /etc/crontab 文件[^1]。 #### 步骤 1: 启动 crontab -e 编辑器 - 打开终端(Terminal)。 - 输入命令 `crontab -e` 并按 Enter。 - 系统会默认使用一个文本编辑器打开你的 crontab 文件。常见的编辑器有 vi 或 nano(取决于系统配置)。例如: ```bash $ crontab -e ``` 这会打开一个空文件或现有任务列表。如果你是第一次使用,文件可能为空。 #### 步骤 2: 编辑定时任务 - 在打开的文件中,每行代表一个独立的任务计划。格式为: ``` * * * * * command_to_execute ``` 其中,五个星号分别表示分钟、小时、日、月、星期(例如 `0 2 * * *` 表示每天凌晨 2 点运行)。注意:命令部分必须是绝对路径或可执行脚本的路径[^2]。 - **示例任务**: - 每天凌晨 3 点备份日志文件: ``` 0 3 * * * /usr/bin/backup_logs.sh ``` - 每小时运行一次 Python 脚本: ``` 0 * * * * /usr/bin/python3 /home/user/script.py ``` - 编辑完成后,保存并退出: - 如果是 vi/vim 编辑器:按 `Esc` 键,然后输入 `:wq` 保存并退出。 - 如果是 nano 编辑器:按 `Ctrl + O` 保存,按 `Ctrl + X` 退出。 #### 步骤 3: 验证查看任务 - 编辑后,系统会自动检查语法。如果有错误(如格式不对),它会提示你修正。 - 查看当前任务列表:使用 `crontab -l` 命令: ```bash $ crontab -l ``` 这会显示所有已配置的任务,确保编辑成功[^3]。 #### 常见问题解决 - **编辑器无法保存或退出问题**:在某些系统(如银河麒麟),默认编辑器可能不是 vi/vim。运行 `select-editor` 命令选择编辑器(例如选数字 3 对应 vim),然后重试 `crontab -e`[^4]。 ```bash $ select-editor # 选择 3(对应 vim)后回车 $ crontab -e ``` - **永久设置编辑器为 vim**:编辑 `~/.bashrc` 文件,添加 `export EDITOR=vim`,然后运行 `source ~/.bashrc` 使配置生效[^5]。 - **权限问题**:确保你是当前用户(非 root 用户任务无需 sudo)。如果任务需要 root 权限,使用 `sudo crontab -e` 编辑 root 用户的 crontab。 #### 注意事项 - 任务格式必须精确:五个时间字段后紧跟命令。错误格式会导致任务不执行。 - 任务日志:查看 `/var/log/syslog` 或 `journalctl -u cron` 排查执行问题。 - 用户级 vs 系统级:`crontab -e` 只管理当前用户的任务;系统级任务需编辑 `/etc/crontab` 文件[^1]。 通过以上步骤,你应该能成功编辑定时任务。如果遇到问题,提供更多系统细节,我可以进一步帮助优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值