自动启动脚本

Auto Start Script

所以我正在制作一个脚本,只要服务器 boot/reboot:

就可以 运行 这些命令
sudo bash
su - erp
cd frappe-bench/
bench start >/tmp/bench_log &

我在这里和那里找到了关于如何在脚本中更改用户的指南我使用以下脚本得出:

#! /bin/sh

sudo -u erp bash
cd /home/erp/frappe-bench/
bench start >/tmp/bench_log &

而且,我在 /etc/systemd/system/ 创建了一个服务,并在服务器启动时自动将其设置为 运行。

问题是,每当我 运行 sudo systemctl start erpnextd.service 并检查状态时,都会出现这个

May 24 17:10:05 appbsystem2 systemd[1]: Started ERPNext | Auto Restart.
May 24 17:10:05 appbsystem2 sudo[18814]:     root : TTY=unknown ; PWD=/ ; USER=>erp ; COMMAND=/bin/bash
May 24 17:10:05 appbsystem2 systemd[1]: erpnextd.service: Succeeded.

但是还是没有启动ERPNext。

我想做的就是制作一个脚本,每次服务器重启时都会自动启动 erpnext。

注意:我只在用户 erp 上安装 frappe-bench

因为您使用的是 systemd,所以您已经拥有了脚本中的所有功能,而且更好。所以你甚至不再需要脚本了:

[Unit]
Description=...

[Service]

# Run as user erp.
User=erp
# You probably also want to run as group erp, if it exists.
Group=erp

# Change to this directory before executing.
WorkingDirectory=/home/erp/frappe-bench

# Redirect standard output to the given log file.
StandardOutput=file:/tmp/bench_log
# Redirect standard error to the same log file.
StandardError=file:/tmp/bench_log

# Command line for starting the program. Make sure to use an absolute path!
ExecStart=/full/path/to/bench start

[Install]
WantedBy=multi-user.target

使用 crontab(脚本将在每个 reboot/startup 后启动)

#crontab -e
@reboot sh /full/path/to/bench start >/tmp/bench_log

提供的答案很有帮助。

但是,我找到了另一种解决方法,将我的脚本文件的路径添加到 /etc/rc.local 文件的底部。

两种方法都有效,只是偏好问题;)