最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

搞了一個整點報時的小項目,軟路由、樹莓派、和所有l(wèi)inux設備可用

2023-03-07 16:42 作者:timeline_menu  | 我要投稿

搞了一個整點報時的小項目,軟路由、樹莓派、和所有l(wèi)inux設備可用

項目已開源在了 gitlab 和 github 兩大平臺上,項目地址是:
https://gitlab.com/timeline.menu/hourly_chime
https://github.com/rootexplorer/hourly_chime



----

工作的原因,經常在電腦面前一坐幾個小時,自己深知這是對自己的健康十分不負責任的一種行為方式,所以我想到讓電腦每小時提醒我一下,于是就有了這個小項目。
每隔一段時間提醒一下,其實可以是隔任意長的時間,只是我為了同時也可以當作時鐘來用,所以就搞成了整點報時。
整點報時的功能在很多掛鐘上都有,但是放在電腦上時就有些沒那么流行了。我知道的在windows上有不少惡意軟件就在鉆這個空子,里面植入的木馬、病毒、廣告數(shù)不勝數(shù),好在我不用windows...

----

本項目基于 linux 系統(tǒng),并不對硬件平臺作任何限制,只要是能運行 linux 的硬件平臺都行。而且對于發(fā)行版也沒有特殊的要求,不管是redhat系的,還是debian系的,還是別的都可以。這意味著軟路由、樹莓派之類的都可以使用。

----

軟件依賴:
cron 可以是 cronie 或者 別的,只要是 cron 就行 , 本程序默認使用 cronie ,使用其它時就對應的修改 cron 文件
shell 可以是 sh 也可以是 bash 也可以是別的 , 本程序默認使用 sh ,使用其它時就對應的修改 cron 文件
mplayer 這是一個播放器,如果你有自己青睞的播放器也是可以的,但請注意的是,我們這是在后端運行,所在前端很漂亮的播放器并不能發(fā)揮它的特長,而且不同的軟件作者的邏輯設定不會相同,也許會出現(xiàn)前端界面打不開就直接退出的情況,所以選擇時要選擇可以在命令行中運行的播放器。本程序默認使用 mplayer ,使用其它時就對應的修改 cron 文件
XDG 這個... 提供執(zhí)行權限,沒有它的話,shell就不能成功調用播放器,并且提示沒有權限。

----

使用方式:
1. 到需要定時播報的設備上安裝所依賴的程序。因為不同的發(fā)行版有著不同的安裝方式,所以我無法在此列出所有的安裝方式。請自行查閱自己設備上的軟件安裝指南。

2. 下載 audios 里面的聲音文件。當然,如果你覺得那個聲音不好聽,也可以自己錄制。對于聲音的格式是沒有要求的,只要你選擇的播放器能播放就行。
?? 放到設備的存儲當中。比如我放在了 /mnt/apps/hourly_chime/audios/export/ 中
? ?
3. 建立日志文件夾。 我這里使用的日志文件夾是 /mnt/logs/hourly_chime/ 如果你有自己習慣的日志記錄路徑,請對應更改命令中的參數(shù)
sudo mkdir -p /mnt/logs/hourly_chime
sudo chmod 777 /mnt/logs/hourly_chime

4. 建立 cron 的定時任務
4.1. 查詢用于播報的用戶的 uid
???? 在 .sh 中執(zhí)行時需要用到 XDG ,因此需要指定 XDG_RUNTIME_DIR,格式為 XDG_RUNTIME_DIR=/run/user/<uid> <command> ,其中 uid 的查詢方式是 cat /etc/passwd | grep <username> 。
???? 例如:本例中用到的播報用戶名是 expl
????????? 所以查詢命令是
cat /etc/passwd | grep expl
?? ?? 返回信息是
expl:x:1000:984::/home/expl:/bin/bash
?? ?? 所以我們得到 expl 的 uid 是 1000
4.2. 新建文件 /etc/cron.d/hourly_chime_cron 在里面寫入以下內容,每行頂格開始寫,可以直接復制,但要記得對應修改 用戶名, uid , 聲音文件地址 , 日志文件地址 這四種項目。
# hourly_chime's cron job
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=expl
HOME=/home/expl/
#
#
#
#
#
#
0 0 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 15 /mnt/apps/hourly_chime/audios/export/00.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 1 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 15 /mnt/apps/hourly_chime/audios/export/01.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 2 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 15 /mnt/apps/hourly_chime/audios/export/02.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 3 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 15 /mnt/apps/hourly_chime/audios/export/03.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 4 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 15 /mnt/apps/hourly_chime/audios/export/04.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 5 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 15 /mnt/apps/hourly_chime/audios/export/05.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 6 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 15 /mnt/apps/hourly_chime/audios/export/06.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 7 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 35 /mnt/apps/hourly_chime/audios/export/07.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 8 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 50 /mnt/apps/hourly_chime/audios/export/08.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 9 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 50 /mnt/apps/hourly_chime/audios/export/09.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 10 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 50 /mnt/apps/hourly_chime/audios/export/10.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 11 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 50 /mnt/apps/hourly_chime/audios/export/11.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 12 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 50 /mnt/apps/hourly_chime/audios/export/12.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 13 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 50 /mnt/apps/hourly_chime/audios/export/13.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 14 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 50 /mnt/apps/hourly_chime/audios/export/14.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 15 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 50 /mnt/apps/hourly_chime/audios/export/15.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 16 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 50 /mnt/apps/hourly_chime/audios/export/16.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 17 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 50 /mnt/apps/hourly_chime/audios/export/17.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 18 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 50 /mnt/apps/hourly_chime/audios/export/18.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 19 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 50 /mnt/apps/hourly_chime/audios/export/19.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 20 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 50 /mnt/apps/hourly_chime/audios/export/20.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 21 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 50 /mnt/apps/hourly_chime/audios/export/21.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 22 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 25 /mnt/apps/hourly_chime/audios/export/22.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 23 * * * expl XDG_RUNTIME_DIR=/run/user/1000 mplayer -volume 20 /mnt/apps/hourly_chime/audios/export/23.wav >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_play.txt
0 0 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 1 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 2 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 3 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 4 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 5 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 6 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 7 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 8 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 9 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 10 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 11 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 12 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 13 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 14 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 15 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 16 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 17 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 18 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 19 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 20 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 21 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 22 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt
0 23 * * * expl date +'\%Y-\%m-\%d.\%H:\%M:\%S.\%N' >> /mnt/logs/hourly_chime/hourly_chime_`date +'\%Y-\%m-\%d'`_log.txt

4.3. 更改這個 cron 文件的權限
sudo chown root:root /etc/cron.d/hourly_chime_cron
sudo chmod 644 /etc/cron.d/hourly_chime_cron
???? 改完后我習慣性的查看一下
ls -laZh /etc/cron.d/hourly_chime_cron
cat /etc/cron.d/hourly_chime_cron

4.4. 如果你的 cron 需要重啟才能生效的話,記得就要重啟cron服務喔。

5. 給你的設備接上音箱吧。當然你也可以使用耳機,但耳機并不總是戴在耳朵上,會造成即使播報了你也沒聽見的情況。


搞了一個整點報時的小項目,軟路由、樹莓派、和所有l(wèi)inux設備可用的評論 (共 條)

分享到微博請遵守國家法律
疏附县| 思茅市| 洛宁县| 汤原县| 会理县| 紫云| 江门市| 屯留县| 民和| 赞皇县| 炉霍县| 莱西市| 天镇县| 汝南县| 百色市| 鄂伦春自治旗| 齐河县| 星子县| 侯马市| 黎川县| 榆林市| 马尔康县| 贡山| 西盟| 南华县| 隆德县| 运城市| 山阴县| 鄂州市| 望江县| 鹿泉市| 杂多县| 伊宁县| 江门市| 镶黄旗| 台江县| 平罗县| 蒙山县| 民勤县| 和政县| 宁武县|