首页 > 解决方案 > 如何在 Ubuntu 20.04 启动时自动启动颠覆服务器

问题描述

我正在尝试解压我的旧 svn 服务器,但无法让 svn 在 Ubuntu 20.04 启动时自动启动。我觉得我已经阅读了 100 篇博客和帮助帖子,但我无法让它发挥作用。

当我尝试“systemctl enable svnserve.service”时的最终结果出现错误:

update-rc.d:错误:svnserve 默认启动不包含运行级别,正在中止。

这正是我已经实施的。我已经尝试使用 shell 脚本并使用 $DAEMON_ARGS 直接调用它。两者都行不通。

创建一个 systemd 服务文件

nano /etc/systemd/system/svnserve.service

将以下内容复制到文件中

[Unit]
After=network.service

[Service]
#ExecStart=svnserve -d -r /var/lib/svn
#ExecStart==/etc/default/svnserve $DAEMON_ARGS
ExecStart=/usr/local/bin/start_svn.sh

[Install]
#WantedBy=default.target
WantedBy=multi-user.target

设置权限

chmod 664 /etc/systemd/system/svnserve.service

创建以下文件

nano /etc/default/svnserve

将以下内容添加到文件中

# svnserve options
DAEMON_ARGS="--daemon --pid-file /run/svnserve/svnserve.pid --root /var/lib/svn"

创建脚本文件

nano /usr/local/bin/start_svn.sh

将以下内容添加到文件中

#!/bin/sh
### BEGIN INIT INFO
# Provides:          svnserve.service
# Required-Start:    $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Starts SVN Server
### END INIT INFO
svnserve -d -r /var/lib/svn

使其可执行

chmod u+x /usr/local/bin/start_svn.sh

启用服务单元

systemctl daemon-reload
systemctl start svnserve.service
systemctl enable svnserve.service

任何帮助将不胜感激。

编辑

运行 systemctl status svnserve.service 后

svnserve.service 已加载:已加载(/etc/systemd/system/svnserve.service;已禁用;供应商预设:已启用) 活动:不活动(已死)

另一方面,我在这篇文章中复制了该过程:https ://linuxconfig.org/how-to-run-script-on-startup-on-ubuntu-20-04-focal-fossa-server-desktop

我让该脚本正常工作。然后我补充说:

svnserve -d -r /var/lib/svn

到 shell 脚本。重新启动时,脚本运行并更新驱动器空间,但 SVN 仍不会启动。我查看了一些日记条目,但没有找到任何东西。没有意义为什么它不会在启动时启动。如果我在登录后手动运行 shell 脚本,它确实可以工作。

标签: svnsystemdubuntu-20.04autostart

解决方案


请分享你的/usr/local/bin/start_svn.sh

最初的最佳实践指南是:

  1. 指定每个命令的完整绝对路径。具有相对/隐式路径的命令将失败。
  2. 在以绝对完整路径开头的脚本中加载所有环境变量。
  3. 使用显式日志文件来调试脚本中的每个重要行。

推荐阅读