【经测试,每隔多少分钟执行并不像自己想象的一样】

比如:每隔50分钟执行一次提醒      */50 * * * * export DISPLAY=:0.0; notify-send -i /home/ths/图片/33.jpg "休息" "[该休息了]喝点水,出去走走"

但并不是精确的每隔50分钟执行一次,而是每隔小时的第50分钟执行一下[即使你在第49分钟设置的命令,也会在一分钟后的第50分钟提醒!],然后整小时的时候执行一次。

一个替代的方法就是用shell脚本:

#!/bin/sh
i=1
while i=1
do
notify-send -i /home/ths/图片/33.jpg "休息" "[该休息了]喝点水,出去走走"
sleep 3000
done

notify-send

notify-send 是 Linux 下发送通知到桌面的命令行程序。Ubuntu16.04 会在桌面右上角出现一个通知提醒框。

基本用法:

  1. 发送一条通知内容
    notify-send "这是通知的内容"

  2. 发送一条有标题的通知
    notify-send "标题" "这是通知的内容"

  3. 发送一条有图片的通知
    notify-send -i /home/tip.png "标题" "这是通知的内容"

crontab

crontab 是 Linux 下的定时任务,服务端一般用于定时重启某些服务、定时清理日志信息等。

  1. 执行命令
sudo crontab -l

查看定时任务列表,如果有的话,将会列出来

  1. 执行命令
sudo crontab -e

进入编辑 crontab 的模式下。

语法是这样的:

minute hour day month week command
参数 说明
minute 分钟,0到59
hour 小时,0到23
day 日期,1到31
month 月份,1到12
week 星期,0到7,这里的0或7代表星期日
command 要执行的命令,命令行命令,或者外部脚本文件

例子:

  1. 每分钟都执行一次 command
    * * * * * command

  2. 每小时的 2 和 3 分钟时执行一次 command
    2,3 * * * * command

  3. 10 点到 18 点之间每个小时的 2 和 3 分钟都执行一次 command
    2,3 10-18 * * * command

  4. 晚上 11 点到早上 7 点之间,每隔 2 小时重启smb
    * 23-7/2 * * * /etc/init.d/smb restart

结合出功能--每两个小时提示用户该休息啦

执行命令 sudo crontab -e 进入定时任务编辑模式【不用sudo对当前用户生效】,在最后一行加入以下代码:

0 */2 * * * export DISPLAY=:0.0; notify-send -i /home/tip.png "休息" "滚去休息吧!!!"

保存退出即可,偶数小时的 0 分钟就会有 “去休息” 的提示。

Note:
要在定时任务里调用图形界面程序,需要加上 export DISPLAY=:0.0; 环境变量,告诉定时任务图形界面程序显示的屏幕。

Ubuntu 利用 crontab 和 notify-send 定时发送桌面通知,提示该休息啦的更多相关文章

  1. Linux命令之Crontab定时任务,利用Crontab定时执行spark任务

    Linux命令之Crontab定时任务,利用Crontab定时执行spark任务 一.Linux命令之Crontab定时任务 1.1 常见Crontab任务 1.1.1 安装crontab 1.1.2 ...

  2. 利用crontab定时备份数据库为sql文件

    测试: 每1分钟执行1次,利用crontab */1 * * * * /opt/nginx/db_bak.sh 每天的0点0分把数据库备份为日期格式 0 0 * * * /opt/nginx/db_b ...

  3. Ubuntu 开启 Crontab 计划任务日志

    Ubuntu 下的 Crontab 日志功能不是自动开启的.开启日志功能的步骤是: ① 修改 rsyslog sudo vim /etc/rsyslog.d/-default.conf 找到: #cr ...

  4. 关于定时发送服务的解决办法(PHP)

    一.定时发送任务解析 在进行手机APP或者微信开发的时候,经常会有需要定时推送消息的场景. 定时发送又分为两种: 一种是在开发的时候固定时间,后台管理人员只能选择将要推送的消息: 另一种是后台管理人员 ...

  5. python实现定时发送消息

    #!/usr/bin/env python#-*- coding:utf-8 -*- @Author : wujf @Time:2018/8/21 15:59# 自动发送消息from threadin ...

  6. Ubuntu下crontab启动、重启、关闭命令

    在Ubuntu14.04环境下,利用crontab编写shell脚本程序,定时执行php相关程序.在这个过程中,经常使用到的crontab命令如下: (root权限下) crontab启动:/etc/ ...

  7. 用python自制微信机器人,定时发送天气预报

    0 引言 前段时间找到了一个免费的天气预报API,费了好段时间把这个API解析并组装成自己想用的格式了,就想着如何实现每天发送天气信息给自己.最近无意中发现了wxpy库,用它来做再合适不过了.以下是w ...

  8. linux利用crontab设置定时任务运行jar包

    参考链接: 1.http://blog.csdn.net/javadhh/article/details/42779505 2.http://blog.csdn.net/cctv_liu/articl ...

  9. C#/Net定时导出Excel并定时发送到邮箱

    一.定时导出Excel并定时发送到邮箱   首先我们先分析一下该功能有多少个小的任务点:1.Windows计划服务 2.定时导出Excel定指定路径 3.定时发送邮件包含附件   接下来我们一个个解决 ...

随机推荐

  1. Http的那些事: Content-Type

    Content-Type 无疑是http中一个非常重要的属性了, request 中可以存在, 也可以不存在( request的Content-Type 默认是 */*, 实际上呢, 如果不存在Con ...

  2. ARCore中Pose类变换点的算法实现

    ARCore中Pose类变换点的算法实现,主要分为两步,分别是平移和旋转. 1. 旋转向量:通过四元数计算旋转后的向量 参数列表:q表示四元数, v是长度为4的float数组,表示待旋转的向量,   ...

  3. Azkaban安装及分布式部署(multiple-executor)

    参考文章:https://blog.csdn.net/weixin_35852328/article/details/79327996 官网:https://azkaban.readthedocs.i ...

  4. __getitem__ __setitem__ __delitem__ 使用

    #__getitem__ __setitem__ __delitem__运行设置key value值了class fun: def __init__(self): print('test') def ...

  5. alert()、confirm()、prompt()的区别

    使用消息框 使用警告.提示和确认 可以使用警告.确认和提示消息框来获得用户的输入.这些消息框是 window 对象的接口方法.由于 window 对象位于对象层次的顶层,因此实际应用中不必使用这些消息 ...

  6. (转)在T-SQL语句中访问远程数据库

    https://www.cnblogs.com/lgx5/p/7821887.html 1.启用Ad Hoc Distributed Queries 在使用openrowset/opendatasou ...

  7. git clone Failed to connect to 127.0.0.1 port 43213: Connection refused

    不知道为什么使用git clone 的时候报了上面的错误,后面发现是 127.0.0.1 port 43213的端口被代理占用了,可以这样查看: $ env|grep -i proxy 结果是: NO ...

  8. 微信小程序 验证码倒计时组件

    https://blog.csdn.net/susuzhe123/article/details/80032224

  9. cdnbest独立主控用户如何开通日志分析

    1.cdn独立主控用户开通日志分析,先用授权的帐号在官网平台登陆,然后购买日志套餐 2.在自已的主控平台还要做两步操作: 1.增加个日志套餐,内容随便,因为设置是无效的,只是需要一个套餐 2. 给用户 ...

  10. NodeJs第3方包说明

    formidable 作用:实现简单文件上传 var formidable = require('formidable'); var form = new formidable.IncomingFor ...