我正在开发一个 Nodejs 应用程序,用户通过 localhost 上的 HTTP 与之交互。几乎没有参数,守护进程几乎没有依赖关系,它只需要在登录时启动。
我想按照每个平台上的习惯用法来启动脚本,这意味着 Ubuntu 上的 Upstart 和 Fedora 上的 systemd。
我找到了这些资源:
我主要是在寻找各种 API 作为参考,以及要遵循的基本格式。
当我输入时,service sshd restart
我收到一个sshd: unrecognized service
错误。
我确实有,在我用来设置 config.js/etc/ssh/
的文件sshd_config
中。我也可以将腻子放入 Ubuntu 盒子(它是远程的)。
当我输入时,/etc/init.d/sshd restart
我得到No such file or directory
下面/usr/sbin/
有一个 sshd 文件,但它是二进制的。
我的 sshd 有问题吗?我该怎么做才能解决这个问题?明确地说,我希望能够输入service sshd restart
(就像所有在线教程所说的那样)能够重新启动我的 sshd。使我的端口更改生效。
是否有任何命令可以显示我的基于 Debian 的操作系统中的所有可用服务?
我知道为了查看您可以使用的所有正在运行的服务service --status-all
。
使用sysvinit
,这样的sudoers
条目就足够了:
%webteam cms051=/sbin/service httpd *
Run Code Online (Sandbox Code Playgroud)
这将允许以下命令:
sudo service httpd status
sudo service httpd restart
现在,使用systemd
,服务名称是最后一个参数。即,服务重启将通过以下方式完成:
systemctl restart httpd.service
Run Code Online (Sandbox Code Playgroud)
自然,我认为定义命令systemctl * httpd.service
会起作用,但这会允许类似systemctl restart puppet.service httpd.service
的效果不是预期的。
考虑到这一点,那么允许非 root 用户控制systemd
服务的最佳方式是什么?这不需要是sudoers
;也许文件权限更改可能就足够了?
在 Windows 中,我有服务管理器,在那里我可以看到所有系统服务,这些服务可以通过 Windows 本身启动,我设置了它使用的用户,权限管理在那里,我可以将变量和其他一些信息传递给服务,我可以命名它们,我可以创建一个程序的重复服务等等。所以我在 Windows 中有一个主要的管理工具。
我如何在 Linux 中做同样的事情?如何在启动时触发运行“svnserve”,或者如何将服务配置为在特殊上下文中运行。如何查看所有“程序化”服务?
我正在使用一个自定义服务,该服务本质上运行一个名为 thisismywebserver 的 Web 服务器。目前它不起作用(即我在尝试访问页面时遇到“无法连接”错误)。
当我运行此命令service thisismywebserver status
查看服务状态时,我看到状态为“活动(退出)”。这是否意味着该服务已停止工作?如果不是,那么这意味着什么?
root@thisismywebserver-testing:~# service thisismywebserver status
? thisismywebserver.service - LSB: ThisIsMyWebServer server
Loaded: loaded (/etc/init.d/thisismywebserver)
Active: active (exited) since Sun 2015-11-08 23:01:33 EST; 18h ago
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
Run Code Online (Sandbox Code Playgroud) 我遇到了一个.service
包含以下内容:
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
原始.service
文件可以在这里找到。
我在 Ubuntu 16.04LTS 上。
这个问题与这个问题非常相似:List of available services
对于我的具体情况,我想知道是否有特定命令可以显示 Ubuntu 下的完整服务列表。
我确实运行了 als /etc/init.d
并且它确实显示了一个非常全面的列表,但是缺少一些条目。我也看到apache2
,myslq
,gdm
,和很多其他人。
但其中一些丢失了。一个例子是plexmediaserver
(我最近安装了 plex 服务器,但在查找它的服务名称时遇到了一些困难)
所以用尽可能少的词来重新表述这个问题:
有没有办法获得{x}
for的完整可能性列表
service {x} status
Run Code Online (Sandbox Code Playgroud)
注意:使用 Ubuntu 15.04
我正在尝试创建一个 systemd 用户单元并让它在系统启动时启动。该服务会手动启动,但不会在启动时启动。
从网上搜索我了解到,为了让用户单元在启动时启动,我应该运行loginctl enable-linger <username>
,但这似乎根本没有效果。事实上,手册页说:
Run Code Online (Sandbox Code Playgroud)Enable/disable user lingering for one or more users. If enabled for a specific user, a user manager is spawned for the user at boot and kept around after logouts. This allows users who are not logged in to run long-running services.
尽管运行此命令,但我的服务并未在启动时启动。
loginctl enable-linger error
Run Code Online (Sandbox Code Playgroud)
那个单位:
$ cat ~/.config/systemd/user/thin\@.service
[Unit]
Description=A fast and very simple Ruby web server
[Service]
Type=simple
EnvironmentFile=/home/error/.config/thin/%i
ExecStart=/usr/bin/bash /home/error/.rvm/wrappers/%i/thin start -a $THIN_BIND -p $THIN_PORT
WorkingDirectory=/srv/www/%i
PrivateTmp=true
[Install]
WantedBy=multi-user.target …
Run Code Online (Sandbox Code Playgroud)