[3] 操作系统 · 2021年8月8日

计划任务 at/crontab

在指定的时间段自动启用或停止某些服务或命令

一次性计划任务

为了提交一个at作业步骤:

  1. 输入at命令同时指定作业执行的时间 ,按下Enter键;
  2. 在at命令提示符“at >”下,输入命令或者shell脚本
  3. Ctrl+D 提交at作业。
liupei@T470:$ at 2111
warning: commands will be executed using /bin/sh
at> notify-send '该休息了!'
at> <EOT>
job 7 at Sun Aug  8 21:11:00 2021

echo "notify-send '该休息了'" | at 20:54

显示at作业及作业队列

liupei@T470:~$ at -l
8	Sun Aug  8 21:30:00 2021 a liupei

liupei@T470:~$ atq 
8	Sun Aug  8 21:30:00 2021 a liupei

显示已经设置的任务内容

at -c 任务号

liupei@T470:~$ at -c 8
notify-send '该休息了!

删除at作业

atrm  任务号 或者 atrm 文件名
at -d 任务号     at -d 文件名

atrm 8

参考文献

长期性计划任务

设定任务

liupei@T470:~$ crontab -e 
no crontab for liupei - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]: 2   

在接下来的文本最下面输入,以下内容表示每一个小时提醒休息一次

0 */1 * * * notify-send "休息" "该休息了!!!"

输入参数依次是:

minute hour day month week command

查看定时任务列表

如果有的话,将会列出来

liupei@T470:~$ crontab -l

# m h  dom mon dow   command
0 */2 * * * notify-send "休息" "该休息了!!!"

取消定时任务

liupei@T470:~$ crontab -r

liupei@T470:~$ crontab -l
no crontab for liupei

参考文献

把notify-send写在一个脚本里:

root@pc:~$ cat cmdfile
#!/bin/bash
export DISPLAY=:0
notify-send "test"
root@pc:~$ 

然后直接在crontab -e里调用脚本:

*/30 * * * * sh /path_to_file/cmdfile

参考文献

弹窗提醒

notify-send "Title" "Message"
notify-send -i face-crying "System Malfunction" "Something bad happened."
notify-send -i weather-storm "Storm Alert" "There's a storm coming your way."
notify-send -i /usr/share/icons/cab_view.png 'rest' 'have a rest'

参考文献a list of icons you can use in your applications