Centos 7 - 服务来自 /etc/systemd/system/san.service 而不是 运行 systemctl start san.service
Centos 7 - service from /etc/systemd/system/san.service not running with systemctl start san.service
我遵循了这个 link 的说明:https://www.thegeekdiary.com/centos-rhel-7-how-to-make-custom-script-to-run-automatically-during-boot/
但是我有问题,因为我的服务不是 运行。
我创建了一个脚本 startSanic2.sh 调用 startSanic.sh 脚本(我需要这个因为当我用 & 手动启动它时只有在这种情况下会话没有过期)
这是我的脚本startSanic2.sh
# cat /opt/horses/startSanic2.sh
#!/bin/bash
cd /opt/horses
./startSanic.sh &
这是我的脚本startSanic.sh
# cat /opt/horses/startSanic.sh
#!/bin/bash
gunicorn horses.server:app --bind 0.0.0.0:9000 --worker-class sanic.worker.GunicornWorker --reload
在此之后 运行 (./startSanic2.sh) 它正在 运行 端口 9000 上成功。
startSanic.sh 和 startSanic2.sh 有权限 755
然后我创建了新的san.service
[root@testnn2 system]# cat /etc/systemd/system/san.service
[Unit]
Description=Description for sample script goes here
After=network.target
[Service]
Type=simple
ExecStart=/opt/horses/startSanic2.sh
TimeoutStartSec=0
[Install]
WantedBy=default.target
我运行这个命令:
systemctl daemon-reload
我运行这个命令
# systemctl enable san.service
Created symlink from /etc/systemd/system/default.target.wants/san.service to /etc/systemd/system/san.service
当我 运行 它时 - 没有任何反应 :(
systemctl start san.service
我检查过 /etc/systemd/system
我的 san.service 看起来像这样:
-rw-r--r-- 1 root root 193 Apr 2 18:07 san.service
请协助我解决这个问题,为什么什么都没有 运行。
更新:环境变量
/etc/systemd/system/san.service
的内容:
[Unit]
Description=Description for sample script goes here
After=network.target
[Service]
Type=simple
ExecStart=/opt/horses/startSanic2.sh
TimeoutStartSec=0
Environment="var1=value1"
[Install]
WantedBy=default.target
将startSanic2.sh
更改为:
#!/bin/bash
/opt/horses/startSanic.sh
确保它是可执行的:
$ sudo chmod +x /opt/horses/startSanic2.sh
还要确保 startSanic.sh
是可执行的:
$ sudo chmod +x /opt/horses/startSanic.sh
重新加载守护进程并启用它:
$ sudo systemctl daemon-reload
$ sudo systemctl enable san.service
$ sudo systemctl start san.service
重启机器。
更新:
在san.service
中设置环境变量:
[Unit]
Description=Description for sample script goes here
After=network.target
[Service]
Type=simple
ExecStart=/opt/horses/startSanic2.sh
TimeoutStartSec=0
Environment="REDIS_HOST=192.168.150.220"
Environment="REDIS_PORT=6379"
[Install]
WantedBy=default.target
我遵循了这个 link 的说明:https://www.thegeekdiary.com/centos-rhel-7-how-to-make-custom-script-to-run-automatically-during-boot/
但是我有问题,因为我的服务不是 运行。
我创建了一个脚本 startSanic2.sh 调用 startSanic.sh 脚本(我需要这个因为当我用 & 手动启动它时只有在这种情况下会话没有过期)
这是我的脚本startSanic2.sh
# cat /opt/horses/startSanic2.sh
#!/bin/bash
cd /opt/horses
./startSanic.sh &
这是我的脚本startSanic.sh
# cat /opt/horses/startSanic.sh
#!/bin/bash
gunicorn horses.server:app --bind 0.0.0.0:9000 --worker-class sanic.worker.GunicornWorker --reload
在此之后 运行 (./startSanic2.sh) 它正在 运行 端口 9000 上成功。
startSanic.sh 和 startSanic2.sh 有权限 755
然后我创建了新的san.service
[root@testnn2 system]# cat /etc/systemd/system/san.service
[Unit]
Description=Description for sample script goes here
After=network.target
[Service]
Type=simple
ExecStart=/opt/horses/startSanic2.sh
TimeoutStartSec=0
[Install]
WantedBy=default.target
我运行这个命令:
systemctl daemon-reload
我运行这个命令
# systemctl enable san.service
Created symlink from /etc/systemd/system/default.target.wants/san.service to /etc/systemd/system/san.service
当我 运行 它时 - 没有任何反应 :(
systemctl start san.service
我检查过 /etc/systemd/system
我的 san.service 看起来像这样:
-rw-r--r-- 1 root root 193 Apr 2 18:07 san.service
请协助我解决这个问题,为什么什么都没有 运行。
更新:环境变量
/etc/systemd/system/san.service
的内容:
[Unit]
Description=Description for sample script goes here
After=network.target
[Service]
Type=simple
ExecStart=/opt/horses/startSanic2.sh
TimeoutStartSec=0
Environment="var1=value1"
[Install]
WantedBy=default.target
将startSanic2.sh
更改为:
#!/bin/bash
/opt/horses/startSanic.sh
确保它是可执行的:
$ sudo chmod +x /opt/horses/startSanic2.sh
还要确保 startSanic.sh
是可执行的:
$ sudo chmod +x /opt/horses/startSanic.sh
重新加载守护进程并启用它:
$ sudo systemctl daemon-reload
$ sudo systemctl enable san.service
$ sudo systemctl start san.service
重启机器。
更新:
在san.service
中设置环境变量:
[Unit]
Description=Description for sample script goes here
After=network.target
[Service]
Type=simple
ExecStart=/opt/horses/startSanic2.sh
TimeoutStartSec=0
Environment="REDIS_HOST=192.168.150.220"
Environment="REDIS_PORT=6379"
[Install]
WantedBy=default.target