習(xí)慣使用番茄工作法,在Linux上工作時(shí)也需要一個(gè)番茄鐘。 安裝一個(gè)Linux下番茄鐘工作軟件? 其實(shí)根本沒(méi)必要,我們可以用Linux下經(jīng)典的at命令實(shí)現(xiàn)一個(gè)簡(jiǎn)單的番茄鐘。
安裝AT一般Linux基本系統(tǒng)里都包含了at這個(gè)小巧實(shí)用的工具,不需要安裝。
不過(guò)林子大了,什么鳥(niǎo)都有,比如我最近使用的centOS中居然沒(méi)有at命令。 于是我安裝這個(gè)包。
sudo yum install at你可以用 which at 查看有沒(méi)有at命令。如果沒(méi)有,就安裝一個(gè)。
軟件準(zhǔn)備好了,簡(jiǎn)單實(shí)驗(yàn)一下at的用法。
首先我們要啟動(dòng)atd服務(wù) (freeBSD似乎不需要這一步,而且找不到atd服務(wù))。
# service atd start如果你沒(méi)有service命令,你可能需要使用類(lèi)似下面的命令。
# /etc/init.d/atd start或許你的系統(tǒng)已經(jīng)拋棄了initscripts,已經(jīng)再用systemd了, 你可以用systemd啟動(dòng)服務(wù)
# systemctl start atd服務(wù)啟動(dòng)后,我們看看怎么用at添加一個(gè)定時(shí)任務(wù)。
輸入 at now+1 minutes 回車(chē), 命令行顯示 > ,讓你輸入要執(zhí)行的任務(wù)。 我們輸入 echo "hello world!" 按 control 和 d 結(jié)束任務(wù)輸入。
這樣我們就有了一個(gè)job. 輸入 atq 命令可以查看任務(wù)隊(duì)列。 有任務(wù)號(hào)和任務(wù)將執(zhí)行的時(shí)間。
上面添加的任務(wù)表示1分鐘后,在終端輸出 hello world!
想查看某個(gè)任務(wù)的詳細(xì)信息, at -c 任務(wù)號(hào).
想刪除某個(gè)任務(wù), atrm 任務(wù)號(hào) 或者 at -d 任務(wù)號(hào)
這個(gè)交互式的輸入任務(wù)的方式比較麻煩,不利于用腳本添加at任務(wù)。 怎么辦?可以用管道為at指定任務(wù)。 上面添加任務(wù)的過(guò)程可以簡(jiǎn)化為一行命令
echo "echo 'hello, world!'"|at now+1 minutes用AT做番茄鐘一個(gè)番茄鐘是25分鐘, 在at命令中使用 now+25 minutes 就能指定25分鐘的時(shí)間間隔。 當(dāng)一個(gè)番茄鐘的時(shí)間間隔過(guò)去后,用什么方式提醒我們時(shí)間到了呢? 我們可以播放一段音樂(lè),顯示一個(gè)圖片,甚至播放一段視頻。
好,因?yàn)樵谵k公室里使用,播放音樂(lè)會(huì)干擾別人,我們就采用顯示一張圖片的方式吧。 顯示圖片的工具很多。比如 feh,比如 ImageMagick 中的 display。 當(dāng)然別的還有很多。這里以 feh 為例。
我們可以顯示一個(gè)美女圖片,比如其路徑是 ~/pics/girl.png 。 那么我們要執(zhí)行的任務(wù)就是 feh ~/pics/girl.png 。 我們想要25分鐘后,顯示這個(gè)圖片,就這樣做:
echo 'feh ~/pics/girl.png' | at now+25 minutes我們可以先把時(shí)間間隔設(shè)為一分鐘,看看效果。
echo 'feh ~/pics/girl.png' | at now+1 minutes一分鐘到了,怎么回事?不顯示圖片。 atq 查看任務(wù)隊(duì)列,隊(duì)列也空了,證明任務(wù)執(zhí)行完了。 atq 輸出時(shí),告訴我: You have mail in /var/spool/mail/jolly. (其中jolly是我的用戶(hù)名)。 用 mail 命令查看郵件,內(nèi)容是:
(feh:2632): Gdk-WARNING **: cannot open display:display后面是空的,證明feh執(zhí)行的時(shí)候沒(méi)有指定display。 再加入上述任務(wù):
echo 'feh ~/pics/girl.png' | at now+1 minutesat -c 任務(wù)號(hào) 查看它的詳細(xì)內(nèi)容。
發(fā)現(xiàn)在 'feh' 命令之前,還有很多的環(huán)境變量。 但環(huán)境變量里不包含 DISPLAY。怪不得找不到display呢。
echo $DISPLAY ,發(fā)現(xiàn)DISPLAY的值是 :0.
好,我們?cè)趫?zhí)行feh命令的同時(shí),用 env 指定DISPLAY的值。 再實(shí)驗(yàn)一下:
echo 'env DISPLAY=:0 feh ~/pics/girl.png' | at now+1 minutes一分鐘之后,果然開(kāi)始顯示圖片了。 成功!
用腳本包裝為了方便,我們寫(xiě)一個(gè)腳本, new-clock
#!/bin/shecho "env DISPLAY=:0 feh ~/pics/girl.png" |at now+25 minuteschmod +x new-clock把new-clock放入執(zhí)行路徑,比如放入 ~/bin 目錄下。
cp new-clock ~/bin這樣我們敲入 'new-clock' 命令,就啟動(dòng)了一個(gè)番茄鐘。 25分鐘過(guò)后,將顯示圖片提醒我們。
如果你沒(méi)有X環(huán)境,就不能用顯示圖片的方式了,可以播放聲音來(lái)提醒。
2014-04-02
新聞熱點(diǎn)
疑難解答
圖片精選