当我输入时,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。使我的端口更改生效。
是否有一种简单的方法可以找出正在使用的 initsystem,例如最近的系统Debian wheezy或Fedora系统正在使用哪个 initsystem ?我知道Fedora 21使用systemdinitsystem 但那是因为我读过它并且因为所有相关的脚本/符号链接都存储在/etc/systemd/. 但是,我不确定例如Debian squeeze或CentOS 6 or 7等等。
有哪些技术可以验证这种初始化系统?
我正在使用 Ubuntu 12.04 并希望在系统正常启动时启动服务。
作为“服务”,我理解一些代码,例如 cd my_directory; my_command -host 0.0.0.0 -port 1234 -arg x 应该像在命令行上启动一样运行。有以普通用户启动的服务,也有以 root 启动的服务(实际上并不要求服务在用户级别运行)。
我还需要配置“服务”停止时的行为。我希望它们在我的情况下以相同的参数在指定目录中重新启动。
当系统正常启动时,即按下电源开关时,所有服务都应自动启动。不需要其他操作。
互联网上流传着一些文件,但它们都让我感到困惑。他们谈论init, init.d, rc.d, 但我从来没有看到一个简单易懂的分步说明,可以使用例如 upstart 轻松地作为服务。如果这很容易,如果在此处提供这些步骤,我将不胜感激。
我通常使用service start/stop或initctl start/stop来启动或停止守护进程,但现在我正在寻找的是禁用守护进程在启动示例中启动mysqld。
目前我正在做的是重命名/etc/init/mysql.conf,/etc/init/mysql.conf.bak但在阅读了一些关于systemd我开始知道它为enable & disable上述任务提供选项后。
那么,ubuntu 12.04 中是否有类似的东西upstart?
我在 Ubuntu 中创建了一个新贵脚本,认为它对 Debian 来说也是一样的。但是 Debian 没有/etc/initUbuntu 有的文件夹。我去了 upstart下载页面,看到他们有软件包,做了一个apt-get install upstart,但它要求删除 sysvinit,我知道这会/可能会搞砸我的系统。那么如何让我的 Ubuntu 脚本在 Debian 上运行呢?
使用运行 Ubuntu 12.04 和 Docker 0.8.1 的 Linode VPS 上的Docker 自动启动说明,指定的容器不会在重新启动时启动。
一旦启动,我就可以
~$ sudo start [service-name]
Run Code Online (Sandbox Code Playgroud)
一切都按计划进行,但我也希望容器在重新启动后重新启动。
教程中的脚本是否不是为处理重启而设计的?
/etc/default/docker 文件包含一行:
DOCKER_OPTS="-r=false"
Run Code Online (Sandbox Code Playgroud)
/etc/init/service-name.conf 直接来自 docker 页面:
description "service description"                                                                                                            
author "me"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
    # Wait for docker to finish starting up first.
    FILE=/var/run/docker.sock
    while [ ! -e $FILE ] ; do
        inotifywait -t 2 -e create $(dirname $FILE)
    done
    /usr/bin/docker start -a db5e61a9afa8
end script
Run Code Online (Sandbox Code Playgroud) 我有一些基于 jvm 的进程,我需要确保在我的服务器重新启动时启动,并且如果它由于意外错误等而停止。
我正在运行 Ubuntu 12.04 以防万一。
我看过示例 upstart 脚本,我有点倾向于这种方式,但我想了解 upstart 或 supervisord 之类的东西有何不同。
它们用于完全相同的目的还是在功能上存在差异?
我已经在基于 Ubuntu 的服务器上安装了 redis 服务器,因此我可以启动/停止/重启 redis 服务器。redis_server.sh 已经在 /etc/init.d 中。
现在我想让 redis 在启动时启动。我从一个网站了解到,通过使用 update_rc.d 命令,我可以在启动时添加/删除服务。
我尝试了 update-rc.d 在启动时添加启动,这不起作用:
root@ip-172-31-4-108:/etc/init.d# update-rc.d redis-server defaults
//System start/stop links for /etc/init.d/redis-server already exist.
Run Code Online (Sandbox Code Playgroud)
另外,有一些服务我不想开机就启动,所以我尝试了:
root@ip-172-31-4-108:/etc/init.d# update-rc.d reids_6379 remove
 Removing any system startup links for /etc/init.d/reids_6379 ...
Run Code Online (Sandbox Code Playgroud)
但是下次重新启动时,我仍然看到该服务在启动时运行。
在第一次学习 SMF 之后,我正在学习 Upstart。
当然,我假设它们实现相同的目的,但我知道这是我错的地方。
理想情况下,我希望有人写了一个比较,这样我就不必挖掘 Upstart 中不存在的功能。Solaris 有一个叫做 Contract Subsystem 的东西,它内置在内核中,这实际上是启用 SMF 中大部分功能的原因。我知道在 Linux 中可能没有等价物,这可能是我无法弄清楚在服务停止以及服务监控和故障重启方面我可以从 Upstart 期望什么的原因。
更具体地说明我在 Upstart 中无法真正弄清楚的事情:
停止。对于 SMF,我几乎习惯于让 SMF 执行停止过程。我从来没有真正写过特定的终止脚本,我不需要跟踪 PID,我不需要知道一个进程产生多少次等等。这在 Upstart 中更像是一个 DIY 过程。正确的 ?
失败时重启。我真的不明白这是否是 Upstart 的功能。我看到 Linux 人员将 Upstart 与某种类型的用户进程监控机制相结合。也许这就是我应该做的?
观看。我喜欢 SMFsvcs -p <servicename>命令,它允许我查看(当前)属于服务的所有进程。在 Upstart 中,在我看来“服务”=“进程”意味着在 Upstart 中initctl status <jobname>命令将始终只显示一个进程。如果我有一个从操作系统的角度来看是两个独立进程的服务怎么办?
保证只有一个实例。对于大多数守护进程,您确实希望确保只有一个已启动的实例。对于某些服务,即使尝试启动第二个实例也可能是致命的。我想告诉 Upstart 并让 Upstart 向我保证这一点。因此,即使操作员执行service xyz start并且xyz已经在运行它也不应该导致尝试启动另一个实例,xyz也不应该导致尝试重新启动xyz。我可以这样做吗?
委托。通过 SMF,我将某些服务的责任委托给非特权用户。例如,我有一小组非特权用户已被授予启动/停止他们自己的端口 80 网络服务器的权利。为此,我为此服务分配了权限,以便能够绑定到特权端口 (portno<1024), 而无需为该服务分配任何其他类似 root …