瀏覽代碼

update systemd install script (#216)

* add systemd install script

* rename systemd script

* fix

* fix

* fix: update readme, python script

* Update systemd.sh

update

* Update systemd.sh

Co-authored-by: New Future <[email protected]>
空言 5 年之前
父節點
當前提交
0417d15e30
共有 3 個文件被更改,包括 68 次插入3 次删除
  1. 12 2
      README.md
  2. 2 1
      run.py
  3. 54 0
      systemd.sh

+ 12 - 2
README.md

@@ -187,8 +187,18 @@ python run.py -c /path/to/config.json
 
 #### linux
 
-运行 `sudo ./task.sh`
-
+- 使用init.d和crontab:
+`sudo ./task.sh`
+- 使用systemd:
+    ```bash
+    安装:
+    sudo ./systemd.sh install
+    卸载:
+    sudo ./systemd.sh uninstall
+    ```
+  该脚本安装的文件符合 [Filesystem Hierarchy Standard (FHS)](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard):
+  可执行文件所在目录为 `/usr/share/DDNS`
+  配置文件所在目录为 `/etc/DDNS`
 </details>
 
 ## FAQ

+ 2 - 1
run.py

@@ -70,7 +70,8 @@ def get_config(key=None, default=None, path="config.json"):
                     "debug": False,
                 }
                 dumpjson(configure, configfile, indent=2, sort_keys=True)
-            sys.exit("New template configure file `%s` is generated." % path)
+            sys.stdout.write("New template configure file `%s` is generated.\n" % path)
+            sys.exit(1)
         except:
             sys.exit('fail to load config from file: %s' % path)
     if key:

+ 54 - 0
systemd.sh

@@ -0,0 +1,54 @@
+# /bin/bash
+service='[Unit]
+Description=NewFuture ddns
+After=network.target
+ 
+[Service]
+Type=simple
+WorkingDirectory=/usr/share/DDNS
+ExecStart=/usr/bin/env python /usr/share/DDNS/run.py -c /etc/DDNS/config.json
+ 
+[Install]
+WantedBy=multi-user.target'
+
+timer='[Unit]
+Description=NewFuture ddns timer
+ 
+[Timer]
+OnUnitActiveSec=5m
+Unit=ddns.service
+
+[Install]
+WantedBy=multi-user.target'
+
+if [[ "install" == $1 ]]; then
+    echo "$service" > /usr/lib/systemd/system/ddns.service
+    echo "$timer" > /usr/lib/systemd/system/ddns.timer
+    cp -r `pwd` /usr/share/
+    mkdir -p /etc/DDNS
+    if [ ! -f "/etc/DDNS/config.json" ];then
+        if [ -f "config.json" ];then
+            cp config.json /etc/DDNS/config.json
+        fi
+    fi
+    systemctl enable ddns.timer
+    systemctl start ddns.timer
+    echo "installed"
+    echo "useful commands:"
+    echo "  systemctl status ddns       view service status."
+    echo "  journalctl -u ddns.timer    view the logs."
+    echo "config file: /etc/DDNS/config.json"
+                
+elif [[ "uninstall" == $1 ]]; then
+    systemctl disable ddns.timer
+    rm /usr/lib/systemd/system/ddns.service
+    rm /usr/lib/systemd/system/ddns.timer
+    rm -rf /etc/DDNS
+    rm -rf /usr/share/DDNS
+    systemctl daemon-reload
+    echo "uninstalled"
+else
+    echo "Tips:"
+    echo "  $0 install      install the ddns systemd service."
+    echo "  $0 uninstall    uninstall the ddns service."
+fi