2014-09-09

定時監視特定軟體(有Desktop檔),在重開機後自動執行

這是既 Ubuntu從GDM登入後,進入桌面時間愈來愈長?改善 Ubuntu 登入桌面時間過長另一解法,的續章,及KDE:利用kioclient在終端機執行.desktop檔實作部份。

但是,我並不滿足於改善進入桌面時間,深深覺得開機後如果能開啟我想要執行的軟體那該有多好。

於是寫了個 bash script 來監視某些我想在重開機後執行軟體的功能,另外加上 crontab 定時執行這個 bash script 保持抓取資料是最新的狀態(這是預防突然當機,而沒有紀錄到資料),最後,在把該 bash script 位置寫入 auto-run 檔即可。

P.S1 此方法只適用 KDE



有點要說明:需要該軟體有 Desktop 檔,執行檔檔名需要跟 Desktop 檔一致
比如 transmission-qt 在 /usr/share/applications 或 ~/.local/share/applications 中有個檔案名稱為 transmission-qt.desktop 若是沒有 Desktop 你可以自已寫一個。

會想寫這個 bash script 就是為了開機自動開啟下載軟體,但 Windows 的 SmartGet 沒有 Linux 版,只有利用 Wine run 可是沒有 Desktop 檔只好自已寫個囉。

P.S Desktop 檔寫入有其規範網上搜就有,這裡只簡略說明。

SmartGet 在應用程式選單是屬於網路類別

  • Categories=Network
  • Exec 執行檔案位置
    這是 Wine 啟動 Windows 方式
    Exec=sh -c "env WINEPREFIX="/home/hepha/.wine" wine /home/hepha/FreeSmg/SmartGet/SMG.exe"

最關鍵的地方是此 bash script 是抓 Exec 中的資料,那麼你的執行檔跟Desktop需要跟 Exec 有部份關連,比如 SMG.desktop 中  Exec 是 SMG.exe

現在實際寫入 desktop
vim ~/.local/share/applications/SMG.desktop

Copy and Pass
After modifying meet your needs

[Desktop Entry]
Categories=Network;
Encoding=UTF-8
Exec=sh -c "env WINEPREFIX="/home/hepha/.wine" wine /home/hepha/FreeSmg/SmartGet/SMG.exe"
Icon=E4B0_SMG.0
Name=SMG

現在就開啟你的文字編輯器,檔案名稱、存放路徑及以下紅色文字都可以自訂

vim /home/hepha/bin/reapp

先看以下程式碼:某些地方請改為符合你需求。

  • 這是會將記錄寫入指定路徑的檔案中
    runapp="/home/hepha/bin/runapp"
  • 這是我所要監視的軟體清單
    for apps in SMG qbittorrent jdownloader vuze transmission-qt
  • 維持一慣風格開機後 auto-run 設定個間隔時間,這裡設為 10秒 後執行下個程式
    sleep 10

實際寫入
vim /home/hepha/bin/reapp

Copy and Pass
After modifying meet your needs
#!/bin/bash
runapp="/home/hepha/bin/runapp"
rm -f $runapp
echo "#!/bin/bash" >  $runapp
chmod +x $runapp
for apps in SMG qbittorrent jdownloader vuze transmission-qt ; do
    if     pgrep "$apps" &>/dev/null
    then
        for dir in /usr/share/applications ~/.local/share/applications
        do
            if [ -f "$dir/$apps.desktop" ]
            then
                echo kioclient exec "$dir/$apps.desktop" >> "$runapp"
                echo sleep 10 >> "$runapp"
            fi
        done
    fi
echo -e '\E[37;44m'"\033[1mCreation Runapp\033[0m"
cat $runapp

現在用 crontab 排程 每 N 分自動執行 reapp

這是設我設為每 5 分執行一次,還有路徑你也需要修改。

現在寫入個人的排程
crontab -e

Copy and Pass
After modifying meet your needs

*/5 命令

crontab 寫法對應
命令

以上關於定時監視軟體已經完成,最後,我們將需要在開機時自動讓他執行 runapp。

vim ~/.kde4/Autostart/auto-run

Copy and Pass
After modifying meet your needs

#!bin/bash
/home/hepha/bin/runapp
路徑是是填入剛剛 runapp="/home/hepha/bin/runapp" 的位置。

到這裡已經全部設定完成,只要在你用電腦的過程中每 N 分就會紀錄特定軟體,重新開機後就會自動重新執行囉。