1. 为什么需要定时关机?
作为一名长期使用Ubuntu系统的开发者,我发现定时关机这个需求在实际工作中非常普遍。比如我的工作室里有几台用于持续集成测试的服务器,为了节省电费和延长硬件寿命,就需要在非工作时间自动关机。家用电脑也同样适用,特别是家里有孩子使用时,可以避免他们熬夜玩电脑。
在Linux系统中,定时关机主要有三种实现方式:cron、at命令和图形界面工具。其中cron是最可靠、最灵活的方案,特别适合需要长期执行的定时任务。它就像个尽职的系统管家,能够精确地在指定时间执行你安排的任务。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 使用cron设置定时关机
2.1 cron的基本工作原理
cron是Linux系统自带的定时任务服务,它会在后台持续运行并检查是否有需要执行的任务。这些任务都存储在crontab文件中,每个用户(包括root)都可以有自己的crontab。
重要提示:因为关机操作需要root权限,所以我们必须使用sudo来编辑root用户的crontab,而不是普通用户的。
2.2 具体操作步骤
2.2.1 编辑crontab文件
打开终端,输入以下命令:
bash复制sudo crontab -e
第一次运行时会让你选择默认编辑器,我推荐选择nano(数字2),因为它对新手更友好。
2.2.2 添加关机任务
在文件末尾添加这行内容:
bash复制0 23 * * * /sbin/shutdown -h now
这行配置的意思是:每天的23:00整(0分23时)执行关机命令。
2.2.3 保存并退出
如果你用的是nano编辑器:
- 按Ctrl+O保存
- 按Enter确认文件名
- 按Ctrl+X退出
2.2.4 验证任务是否生效
运行以下命令查看当前设置的定时任务:
bash复制sudo crontab -l
你应该能看到刚才添加的那行关机任务。
2.3 cron时间格式详解
cron的时间格式由5个字段组成,用空格分隔:
code复制分钟 小时 日 月 星期
- 分钟(0-59)
- 小时(0-23)
- 日(1-31)
- 月(1-12)
- 星期(0-7,0和7都代表周日)
特殊符号:
-
- 表示"每",比如*
