Ubuntu 16.04默认使用systemd管理服务的启动、停止、重新启动和状态查看等。由于之前用习惯了sysv的服务管理方式,用sytemd还很不习惯,有很多不甚了了地方。今天中午准备在Ubuntu 16.04上部署一套OpenVPN用于远程管理阿里云的十几台Linux主机,期间遇到了一个关于systemd的问题,在此记录一下,供需要者查看和了解。

systemd所管理的服务通常位于:/lib/systemd/system/,如果细心的话会发现有些xxx.service中有带“@” at符号的。这种符号表示,这是一个支持“模板”(官方叫template,个人觉得称为“参数”更比较形象)的systemd 服务,@符号后面的内容会被当成变量传递到这个服务中,作为参数使用

原文摘录如下:

OpenVPN is a templatized service under systemd. The services are named openvpn@config.service. So you should be starting your /etc/openvpn/myvpn.conf instance with

systemctl start openvpn@myvpn.service

举个例子:

如下图所示,在看过之后都会好奇:

  1. @符号是做什么用?

  2. 文件中%i这个变量是怎么来的有何用?

那么在了解了上文提到的知识后,就会明白@后面的内容实际上就是%i要替换的内容。

Tips:51CTO博客系统的图片可能存在bug或缺陷,如果无法清晰的查看图片,可以使用Chrome浏览器,右键单击图片,选择“在新标签页中打开图片”即可查看高清图片。

image

如果在配置OpenVPN客户端时,配置文件的名字叫做“ebt-aliyun-hangzhou-120.26.161.168.conf”,那么在启动这个服务的时候,如要这样启动:

sudosystemctlstartopenvpn@ebt-aliyun-hangzhou-120.26.161.168

image

查看服务的运行状态也需要类似的语法:

sudosystemctlstatusopenvpn@ebt-aliyun-hangzhou-120.26.161.168

image


附:

排错和搜索类似问题的小技巧:最好使用“Google+英文”的搜索方式,如在Google搜索框内输入“ubuntu 16.04 openvpn client systemd”可能更快的找到问题的解决办法。

参考链接:

Correct way of systemd for OpenVPN client on 16.04 Server?

tag:ubuntu16.04,openvpn client,openvpn systemd

--end--

在Ubuntu 16.04上用sytemd启动OpenVPN Client的正确方式的更多相关文章

  1. 如何使用android的“openvpn connect”应用程序结合意图以编程方式连接和断开vpn连接?

    我正在开发一个Android应用程序,应该在需要时自动启动OpenVPNConnect会话.如何使用android的“openvpnconnect”应用程序结合意图以编程方式连接和断开vpn连接?

  2. 使用systemd部署服务的过程解析

    这篇文章主要介绍了使用systemd部署服务的过程解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. centos – 使用systemd启动程序

    [免责声明:我几天前在StackOverflow上发布了同样的问题,认为这是一个更加以编程为中心的问题,但是没有看到任何活动,我认为这与系统管理相关,其相关性在这里太]systemd单元看起来像这样:然后你可以这样做:mansystemctl应该让你走上正轨.

  4. systemd-journald无法在CentOS 7上启动

    查看两条SERVICE_START消息,一条res=失败,另一条res=success.谷歌告诉我没有其他人有这个问题.有任何想法吗?AVC表示正在读取的文件没有SELinux标签.如果在创建文件时禁用SELinux,或者如果它是在不支持SELinux的文件系统上创建,则会发生这种情况.如果某人已经禁用并重新启用SELinux,那么您应该能够通过重新标记文件系统来解决问题.您可以在线完成以下操作:如果文件所在的文件系统不支持SELinux,则需要将其替换为支持SELinux的文件系统,然后重新标记.

  5. 在CentOS 7上用完文件描述符的Squid

    我在CentOS7上运行Squid3.3(EPEL),最近我在cache.log中收到以下错误消息我有点困惑,因为我似乎有足够的描述符可用:Squid也用这个标志编译:Squid确认这些在启动时实际可用:但是这个错误不断发生.记录此错误后不久,squid进程似乎也达到100%cpu或使用几乎所有系统内存超过90%,导致Internet速度下降到爬行或无限期挂起.杀死进程并重新启动它会解决它但最终会

  6. systemd:如何在没有切换到CentOS 7 root的情况下查看带有journalctl的期刊?

    如果我将journalctl作为nonroot运行,我会收到以下消息:但切换到root,或使用sudo给了我日记.如何在不切换到root的情况下查看期刊?

  7. centos – 等待systemd oneshot服务完成

    并等待,直到脚本完成.假设您使用GDM作为登录管理器,请在[Unit]部分中添加一行Before=gdm.service.如果你不使用gdm,找出哪个服务启动xorg并将其放在Before=行中.这将导致任务在登录管理器显示之前完成.

  8. centos – 如何设置systemd服务依赖?

    在CentOS7系统启动期间,Nginx启动失败,并出现以下错误:我怀疑这种情况正在发生,因为在尝试绑定到该IP地址以通过SSL服务vhost之前,网络接口尚未启动.我的猜测是我需要指定network.service作为Nginx.service的一个要求,但我根本找不到/etc/systemd/中的网络服务.如何在systemd中配置服务订单或依赖项?在单元文件的[Unit]部分中,您至少需要After=network.target,以确保在启动Nginx之前网络已启动.我不知道为什么你的单位文件没有它

  9. 如何在CentOS 7上正确使用kexec和systemd?

    我想用kexec来加速我的CentOS7机器的重启.如何以与现有关机/重启系统目标完美集成的方式实现这一目标?这样做的正确(官方)方法是什么?

  10. 无法使用systemctl在centos 7中启动rabbitmq服务器

    我试图在centos7中启动rabbitmq服务器.我安装了erlang,因为它是对rabbitmq-server的依赖.软件包erlang.x86_640:R16B-03.7.el7.然后使用包rabbitmq-server-3.2.2-1.noarch.rpm安装rabbitmq.安装成功我启用了管理控制台uisngrabbitmq-plugins启用rabbitmq_management.但

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部