我无法在 Ubuntu LXC 容器中安装 mongodb。
我已经按照以下说明设置了 Ubuntu 14.10 主机:https : //linuxcontainers.org/lxc/getting-started/
lxc-create --version
1.1.0
Run Code Online (Sandbox Code Playgroud)
按照文档,我通过下载模板创建了 VM,并选择了 Ubuntu 14.10 amd64 来宾(尽管我在 14.04 amd64 上遇到了相同的行为):
我开始依恋它
lxc-start -n test0 && lxc-attach -n test0
Run Code Online (Sandbox Code Playgroud)
在我运行的容器内
apt-get update && apt-get install mongodb
Run Code Online (Sandbox Code Playgroud)
安装失败,输出如下:
...
Setting up mongodb-clients (1:2.6.3-0ubuntu5) ...
Setting up mongodb-server (1:2.6.3-0ubuntu5) ...
Adding system user `mongodb' (UID 101) ...
Adding new user `mongodb' (UID 101) with group `nogroup' ...
Not creating home directory `/var/lib/mongodb'.
Adding group `mongodb' (GID 105) ...
Done. …Run Code Online (Sandbox Code Playgroud) 在使用 SysV init 运行级别的系统上,例如Centos 5,当操作系统启动时,它会直接进入 中定义的运行级别/etc/inittab吗?
如果我使用init命令更改我的运行级别,是否执行当前运行级别的终止脚本,然后执行新运行级别的启动脚本?
例如,如果我处于运行级别 3 并进入init 1,是否会执行 kill 脚本/etc/rc.d/rc3.d,然后在进入运行级别 1 时会运行启动脚本/etc/rc.d/rc1.d?
我想创建一个/在安装根文件系统之前运行的启动脚本,因为我想用dm-cache它来缓存它。该脚本应该包含缓存设置命令。
我需要把这样的脚本放在哪里,它需要什么格式?
我无法通过谷歌搜索找到任何有用的文档。
运行 Fedora 17,内核 3.9.10。
我试图在启动时显示当前运行级别的启动脚本列表。我写了以下代码。
rl=`runlevel | cut -d " " -f2`
ls /etc/rc.d/rc$rl.d/S* | cut -d "/" -f5
sleep 10
Run Code Online (Sandbox Code Playgroud)
如果我将此代码放入rc.local文件中,它会起作用。
但是,如果我将它放在rc文件或单独的脚本文件abc中/etc/init.d并通过在运行级别目录中创建软链接,它就不起作用。
但是像下面这样的简单命令能够在所有方法中运行。
ls /etc/init.d
Run Code Online (Sandbox Code Playgroud)
除非某些脚本已启动,否则某些命令(如运行级别或管道)是否无法工作?或者还有别的什么吗?
如果我把我的代码放在rc文件中,我的代码会在重启前后运行。
rc,rc.local和rc.sysinitfiles之间有什么区别?我也可以在 2、3、4 和 5 个运行级别中找到S99local-> 软链接rc.local。
这是否意味着rc.local不会在运行级别 1 上运行?
文件顶部/etc/init.d有如下注释。
### BEGIN INIT INFO
# Provides: ntp
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 1
# Short-Description: Start NTP daemon
### END INIT INFO
Run Code Online (Sandbox Code Playgroud)
解析这些评论的程序是什么?我有兴趣看看它是如何做到的。它是一个脚本吗?
当我启动我的系统时,我可以在我的物理控制台上看到启动消息tty1。我的X服务器启动后,我可以切换回tty1用CTRLALT+ F1,并且仍然在控制台上看到输出。没有 getty 运行,因为我在 中注释了以下行/etc/inittab:
#1:2345:respawn:/sbin/getty 38400 tty1
Run Code Online (Sandbox Code Playgroud)
但是,我无法在控制台中向后滚动,没有任何效果,甚至输入也没有任何作用。我想回滚,以查看较早的启动消息(初始化脚本的输出,我在 中看不到dmesg)
我使用 Debian 和 SysVinit 作为我的 init
我正在尝试为 Prometheus 和 Node Exporter 创建服务。
\n\n两个 .service 文件的内容几乎相同。
\n\n #!/bin/sh -\n # /etc/systemd/system/node_exporter.service\n [Unit]\n Description=Node Exporter\n\n [Service]\n User=prometheus\n RemainAfterExit=true\n ExecStart=/usr/bin/node_exporter\nRun Code Online (Sandbox Code Playgroud)\n\n我的问题是我无法启动该服务。我收到以下错误
\n\n \xe2\x97\x8f node_exporter.service - Node Exporter\nLoaded: loaded (/etc/systemd/system/node_exporter.service; enabled; vendor preset: enabled)\nActive: active (exited) (Result: exit-code) since Mon 2017-01-30 16:00:31 MST; 7min ago\nProcess: 18693 ExecStart=/usr/bin/node_exporter (code=exited, status=203/EXEC)\nMain PID: 18693 (code=exited, status=203/EXEC)\nRun Code Online (Sandbox Code Playgroud)\n\n我尝试过更改用户、验证路径是否正确以及许多其他迭代。经过几个小时的调整、谷歌和回溯之后,我一生都无法让它发挥作用。有 Upstart 的指南,但我需要它在 16.04 上工作,而不需要 Upstart 作为依赖项。
\n我不确定守护脚本的一般方法是什么。例如,我在网上搜索过,如果我试图编写一个 python 脚本来检查我计算机上每秒的时间,我所能想到的就是使用 systemd 来启动它,然后在 Python 中编写脚本用计时器结束循环。
这对我来说既没有意义,也不是一种很好的守护进程。我对 systemd 所做的只是在启动时使用它来运行脚本(和任何脚本),因此 systemd 本身似乎不是很有用。我想我可能在守护我的脚本时出错了,那么您知道使用 systemd 将 python 脚本转换为守护进程的更好方法是什么吗?
谢谢
我在玩 rc 脚本。我正在从 rc.local 启动一个守护进程。我想知道如何在特定用户而不是 root 下启动进程?
我正在尝试更改用户以在启动期间执行特定命令。它无声地失败,显然没有执行 userchange,因为我可以看出命令没有执行。
我在下面显示的 initscript 中做错了什么?
respawn
console none
start on startup
stop on shutdown
script
su -u anotheruser -c "myCommand" >> "myLogfile.log"
end script
Run Code Online (Sandbox Code Playgroud)