Debian Jessie 带有systemd. 设置主机名的建议是对 systemd 使用 hostnamectl。但是,此命令在 EC2 上启动的 Debian Jessie映像上不起作用(甚至无法显示当前主机名):
sudo hostnamectl
sudo: unable to resolve host ip-172-30-0-17
Failed to create bus connection: No such file or directory
Run Code Online (Sandbox Code Playgroud)
所以我尝试在这里继续使用 Debian 的推荐。
echo "myhostname" > /etc/hostname
echo "127.0.0.1 myhostname" >> /etc/hosts
/etc/init.d/hostname.sh start
/etc/init.d/networking force-reload
Run Code Online (Sandbox Code Playgroud)
但是,注销并重新登录后,主机名不会更改。然而,它在重新启动后会发生变化,但这对我来说并不理想。
这种方法曾经在 Debian Wheezy 中工作。
任何有关正确处理的帮助表示赞赏。
我正在尝试$HOME在ExecStart. 我尝试了很多不同的东西$HOME,${HOME}但似乎没有任何效果
ExecStart=${HOME}/bin/some-binary
Run Code Online (Sandbox Code Playgroud)
有人知道这个的正确格式吗?
如果我以 nonroot 身份运行 journalctl,我会收到以下消息:
No journal files were found.
Run Code Online (Sandbox Code Playgroud)
但是切换到 root 或使用 sudo 给了我日志。
如何在不切换到 root 的情况下查看期刊(例如,我应该将自己添加到哪个组中)?在文档中找不到它。
我正在从事一个涉及 IOT 设备(现已弃用的 Intel Galileo)的项目。我正在考虑强化这些设备,我注意到该systemd-resolved服务正在侦听所有接口 ( 0.0.0.0)。
root@hostname:~# netstat -altnp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 240/systemd-resolve
Run Code Online (Sandbox Code Playgroud)
在阅读了 freedesktop.org 对这里服务的描述后,它指出,
systemd-resolved 是一个系统服务,它为本地应用程序提供网络名称解析。
我跑了一个测试,我跑了ping到google.com了哪里systemd-resolved正在运行。然后我禁用了该服务并发送了一个ping到
yahoo.com. 两个请求都没有丢包。
我的问题如下:
这项服务是做什么的?
如果它为本地应用程序提供名称解析,它为什么要监听0.0.0.0接口?
这是安全问题吗?
禁用此服务有哪些潜在影响?
提前感谢您提供任何信息/帮助。如果我没有遵守问题格式,第一次发帖,请见谅。请根据需要进行编辑。
我有一台运行 Debian 和 sshd 的服务器,如果我需要重新启动服务器,我的 SSH 会话会在客户端挂起,直到 TCP 超时。我认为这是因为在sshd终止时它没有明确关闭与主机的打开的 SSH 会话。我应该怎么做才能让sshd所有人先断开连接,然后正常终止?到目前为止,我没有看到man sshd_config与关闭行为相关的参数。
在我的组织中,我们有许多易于使用的基础 AMI,用于不同的服务,例如 ECS 和 Docker。由于我们的许多项目都涉及 CloudFormation,我们正在使用cfn-bootstrap,它由几个脚本和一个服务组成,这些脚本和服务在启动时运行以安装某些包并为我们执行某些配置管理任务。
在系统启动时,必须执行与以下脚本等效的脚本:
#!/bin/bash
# capture stderr only
output="$(cfn-init -s $STACK_NAME -r $RESOURCE_NAME --region $REGION >/dev/null)"
# if it failed, signal to CloudFormation that it failed and include a reason
returncode=$?
if [[ $returncode == 0]]; then
cfn-signal -e $returncode -r "$output"
exit $returncode
fi
# otherwise, signal success
cfn-signal -s
Run Code Online (Sandbox Code Playgroud)
我想把它作为一个 systemdoneshot服务来运行After=network.target,它运行WantedBy=multi-user.target.
唯一的问题是我希望我的 AMI 是灵活的,并且只有在某个文件存在时才执行它。与其将上述脚本嵌入到 EC2 用户数据中,我还可以让用户数据只定义一个环境文件,该文件定义了我需要的变量,并且如果该环境文件存在,则仅运行我的一次性服务:
#cloud-init
write_files:
- path: /etc/sysconfig/cloudformation
# ...
content: |
CFN_STACK_NAME="stack-name" …Run Code Online (Sandbox Code Playgroud) journalctl没有颜色的输出确实看起来很乱。是否可以为其输出添加颜色?在我的系统上,似乎只有重要的行被突出显示。甚至dmesg可以通过添加--color开关来输出颜色!
最新版本的 Ubuntu 和 Debian (stretch) 带来了新的网络接口命名方案。
现在,当从使用旧样式名称(如“eth0”)的系统进行更新时,我想在启动之前知道新名称是什么。
我怎样才能做到这一点?是否有一个神奇的“systemd”调用,我可以用来在启动前编辑 /etc/network/interface(随后失去网络连接)?
我有一个由 systemd 作为服务运行的关键应用程序。
它设置为一旦出现故障就重新启动。
如果应用程序重新启动,如何发送电子邮件?
我已经在 ubuntu 16.04 机器上安装了 redis,如果我运行/usr/local/bin/redis-server /etc/redis/cluster/7000/redis.conf它,它会启动并且我可以毫无问题地连接到它。
但是我想使用它来启动它systemctl start redis,所以我在以下位置创建了以下文件/etc/systemd/system/redis7000.service
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/cluster/7000/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
并且 redis 配置已supervised systemd设置
我认为看起来不错,但我收到以下错误:
Jan 19 14:54:27 ip-172-31-42-18 systemd[1]: Started Redis In-Memory Data Store.
Jan 19 14:54:27 ip-172-31-42-18 redis-server[21661]: 21661:C 19 Jan 14:54:27.680 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
Jan 19 14:54:27 ip-172-31-42-18 redis-server[21661]: 21661:C 19 Jan 14:54:27.680 # Redis version=4.0.6, bits=64, commit=00000000, modified=0, pid=21661, just started …Run Code Online (Sandbox Code Playgroud)