我在 path 有一个 systemd-machined 插件/etc/systemd/system/systemd-machined.service.d/10-machined-pid-file.conf。当我跑步时,systemctl status systemd-machined我确实看到了线条
Drop-In: /etc/systemd/system/systemd-machined.service.d
??10-machined-pid-file.conf
Run Code Online (Sandbox Code Playgroud)
但是,我在 /var/run/ 中没有看到 PID 文件。基于我的访问:
[Serivce]
PIDFile=/var/run/machined.pid
Run Code Online (Sandbox Code Playgroud)
我相信创建该 PID 文件应该没有任何问题。有什么我想念的吗?
我正在遵循中提到的说明:
在 Ubuntu 中安装和配置 MongoDB 的基本元素。在“配置 MongoDB 用户名和密码”期间,在第 4 阶段“第 4 步 - 启用 mongodb 身份验证”中出现错误。
$ systemd daemon-reload
Excess arguments.
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
我有这两项服务,一项是Google启动脚本服务,第二项是redis服务,我想在启动脚本服务启动并完成后启动redis服务,我有以下systemd配置,但我的redis服务无法启动有了这些配置
google-startup-scripts.service
[Unit]
Description=Google Compute Engine Startup Scripts
After=network-online.target network.target rsyslog.service
After=google-instance-setup.service google-network-daemon.service
After=cloud-final.service multi-user.target
Wants=cloud-final.service
After=snapd.seeded.service
Wants=snapd.seeded.service
[Service]
RemainAfterExit=yes
ExecStart=/usr/bin/google_metadata_script_runner --script-type startup
KillMode=process
Type=oneshot
StandardOutput=journal+console
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
redis.service
[Unit]
Description=Redis In-Memory Data Store
After=google-startup-scripts.service
[Service]
Type=notify
PIDFile=/run/redis-6378.pid
ExecStart=/usr/bin/redis-getdevice /etc/redis-getdevice/6378.conf
ExecStop=/usr/bin/redis-cli -p 6378 shutdown
Restart=always
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
一旦 google-startup-script.service 运行并执行操作并进入退出状态。并且 redis 服务根本没有启动(我After在单元中使用)我在这里做错了什么
我有一台远程服务器,运行 Linux 5.19.0-41-generic x86_64,我试图找出它是如何启动的。
显然,它不使用 systemd :
PID 1 进程是bash。
ps -p 1 -o comm=
bash
Run Code Online (Sandbox Code Playgroud)
显然,没有 GRUB,至少 /usr/sbin 中没有,并且
grub-install --version
-bash: grub-install: command not found
Run Code Online (Sandbox Code Playgroud)
我猜想,启动时并没有使用GRUB。
看起来不是虚拟机。我检查了一些文件。它似乎在裸机上运行。但配置很小:顶部仅显示少数进程,并且在 ssh 上,如果我需要更完整的功能,系统会提示我“取消最小化”。
我倾向于认为使用了 SysV:
ls /etc/init.d
apport bluetooth hwclock.sh network-manager procps rsync udev
avahi-daemon dbus iwpmd nfs-common pulseaudio-enable-autospawn saned unattended-upgrades
binfmt-support gdm3 kmod pppd-dns rpcbind ssh x11-common
Run Code Online (Sandbox Code Playgroud)
但:
runlevel
unknown
Run Code Online (Sandbox Code Playgroud)
并且 /etc/inittab 不存在。
Q1:如何诊断是什么东西启动的?
Q2:如何重启?理想情况下,使用 systemd。
sudo reboot
System has not been booted with systemd as init system (PID 1). Can't …Run Code Online (Sandbox Code Playgroud) 我有一个在 Amazon EC2 上运行的Fedora 20 云映像(以下称为“实例”)。我对持续设置其主机名有一些不确定性。
在这种情况下,假设我想将实例的主机名设置为penpen.homelinux.org。(此名称也将使用 注册到 DynDNS ddclient,但这是我们在这里不感兴趣的另一个方面。)
主机名当然可以在引导完成后手动设置(使用hostnamectl等等)。但是我们希望在第一次登录之前设置正确的主机名。
传统上,要持久地配置主机名,需要修改/etc/hostname. 不幸的是,这在这里不起作用。
默认情况下,实例将其主机名设置为内部 EC2 名称。启动后,我们可以查看所有产生主机名的不同地方,我们发现:
Kernel hostname via 'sysctl' : ip-10-164-65-105.ec2.internal
Kernel domainname via 'sysctl' : (none)
File '/etc/hostname' : contains 'ip-10-164-65-105.ec2.internal'
File '/etc/sysconfig/network' : exists but has no 'HOSTNAME' line
According to the shell : HOSTNAME = ip-10-164-65-105.ec2.internal
Nodename given by 'uname --nodename' : ip-10-164-65-105.ec2.internal
Hostname ('hostname') : ip-10-164-65-105.ec2.internal
Short hostname ('hostname --short') : ip-10-164-65-105 …Run Code Online (Sandbox Code Playgroud) 我有一个老式的守护进程,我想使用 systemd 来控制它。当它的配置文件发生变化时,需要将其杀死并重新启动。换句话说,在编辑配置文件后,systemctl reload MYSERVICE应该终止进程并重新启动它。
尝试 1:尝试默认设置。这告诉 systemd 如何启动守护进程,而不是如何重新加载它。
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
Run Code Online (Sandbox Code Playgroud)
其结果是,start和restart工作,但reload给出了这样的错误:
# systemctl reload MYSERVICE
Failed to reload MYSERVICE.service: Job type reload is not applicable for unit MYSERVICE.service.
Run Code Online (Sandbox Code Playgroud)
尝试 2:告诉它如何终止进程。这会杀死进程,但 systemd 不会为我重新启动它。
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
ExecReload=/bin/kill -HUP $MAINPID
Run Code Online (Sandbox Code Playgroud)
...其次是...
# systemctl daemon-reload
# systemctl reload MYSERVICE
Run Code Online (Sandbox Code Playgroud)
...杀死进程,但它不会自动重新启动。
尝试 3:也使用 ExecReload 重新启动进程。这失败有几个原因:
ExecReload=/bin/kill -HUP $MAINPID ; /usr/bin/MYSERVICE
Run Code Online (Sandbox Code Playgroud)
...我收到的错误消息...:
# systemctl daemon-reload
# systemctl reload MYSERVICE
Job for MYSERVICE.service failed because the …Run Code Online (Sandbox Code Playgroud) 在 CentOS-7 中,systemd 的 /etc/systemd/system.conf 中的选项更改需要重新启动还是“systemctl daemon-reload”就足够了?
我已经为它构建了一个应用程序和一个 systemd 单元。systemd 单元工作正常,但随着开发和生产环境的不同,我开始将配置移到环境变量中,但似乎无法让它们在 systemd 中工作。
我已经尝试过系统范围的环境变量,它们对操作系统可见,但对程序不可见,所以我开始考虑将它们构建到 systemd 单元中。
首先我尝试使用 EnvironmentFile
我创建了一个简单的环境文件
LCSQLH=localhost
LCSQLU=application
Run Code Online (Sandbox Code Playgroud)
在它作为/etc/lc.sh和
[Unit]
Description=Service for this app
[Service]
EnvironmentFile=/etc/lc.sh
ExecStart=/usr/bin/env python /opt/app/__init__.py
Run Code Online (Sandbox Code Playgroud)
做了systemctl --system daemon-reload但没有,我的应用程序出错:
Jan 27 14:24:59 machine.host env[630]: KeyError: 'LCSQLU'
我看到一些有:
EnvironmentFile=-/etc/lc.sh
我试过了……不……
所以我试着把它们单独放进去
[Service]
Environment="LCSQLH=localhost"
Environment="LCSQLU=application"
ExecStart=/usr/bin/env python /opt/app/__init__.py
Run Code Online (Sandbox Code Playgroud)
再一次,没有...
所以我听说了这样的想法,/etc/systemd/service_name.service.d所以我在那里放了一个 service.conf 和环境(与上面的格式相同)但没有......
我的应用程序无法访问这些环境变量。
如果我导出它们(在我的 shell 中手动或使用 /etc/profile.d/)并直接运行我的应用程序,它就可以工作,所以这些不是被设置而不是应用程序问题。
这是 Centos 7.3,我选择了环境变量而不是硬编码的配置,因为它可以在 linux 或 windows 上运行,所以不想将配置文件埋在 /etc/ 中
我在 CentOS7 虚拟机中玩弄 CHEF,脚本由于问题而失败:
systemd[1]: start request repeated too quickly for fail2ban.service
Run Code Online (Sandbox Code Playgroud)
我知道这在 systemd 中是可配置的,但我只想知道,出于测试目的,是否有办法“重置”systemd,这样我就可以执行start fail2ban service而不会永远收到此错误。现在我必须重新启动操作系统,以便我能够执行它。
谢谢
我有一台有很多磁盘的机器,还有一个 HBA 模式下的额外 SAS 控制器。这似乎导致 Linux 在磁盘实际出现之前在 initramfs 中思考至少 8-10 秒。磁盘检测超时时间为 10 秒。这会导致 BTRFS/MDADM/etc 无法挂载我系统中的 RAID1,将我置于紧急 shell 中,从那里我可以实际挂载磁盘并继续正常工作。
我的问题是,如何从 10 秒增加启动时的超时时间?它在systemd中吗?是在udev吗?别的地方?我不确定从哪里开始寻找,谷歌搜索这个问题似乎主要是让人们希望提高 I/O 超时或其他一些(scsi/lun/etc)超时,但我不是在寻找那个。