“uname”会告诉我正在运行的内核的版本。我如何知道这是否与已安装的内核不同(即,将在下次重新启动时加载的内核)?
理想情况下,我想编写一个可以输出“需要重新启动”或“运行和安装的内核匹配”的脚本。
“uname”会告诉我正在运行的内核的版本。我如何知道这是否与已安装的内核不同(即,将在下次重新启动时加载的内核)?
理想情况下,我想编写一个可以输出“需要重新启动”或“运行和安装的内核匹配”的脚本。
我有一个老式的守护进程,我想使用 systemd 来控制它。当其配置文件发生变化时,需要将其杀死并重新启动。换句话说,在编辑配置文件后,systemctl reload MYSERVICE
应该杀死进程并重新启动它。
尝试 1:尝试默认设置。这告诉 systemd 如何启动守护进程,但不告诉如何重新加载它。
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
结果,start
并且restart
工作,但reload
给出了这个错误:
# systemctl reload MYSERVICE
Failed to reload MYSERVICE.service: Job type reload is not applicable for unit MYSERVICE.service.
尝试 2:告诉它如何终止进程。这会杀死进程,但 systemd 不会为我重新启动它。
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
ExecReload=/bin/kill -HUP $MAINPID
...其次是...
# systemctl daemon-reload
# systemctl reload MYSERVICE
...杀死进程,但不会自动重新启动。
尝试 3:也使用 ExecReload 重新启动进程。这失败有几个原因:
ExecReload=/bin/kill -HUP $MAINPID ; /usr/bin/MYSERVICE
...我收到的错误消息...:
# systemctl daemon-reload
# systemctl reload MYSERVICE
Job for MYSERVICE.service failed because the control process exited with error code. See "systemctl status MYSERVICE.service" and "journalctl -xe" for details.
我希望会有 ReloadType=kill_and_restart 或其他东西,但没有这样的运气。
如何告诉 systemd 在重新加载时杀死并重新启动守护进程?
我正在尝试将 DNS 域从第三方转移到我们公司的帐户。第三方使用 NameCheap.com,也称为 enom.com。
Namecheap 向第三方提供了一个授权代码(“EPP 代码”),我们使用它来开始转移过程。
我们得到的错误信息是:
我们无法从注册表中获取权威域信息。这通常意味着提供的域名或验证码不正确。
更多信息:
whois
显示它已解锁并且已经解锁了几天。我们应该做什么?
如果有人尝试访问我的 Web 服务器上的特定路径,我想返回 HTTP 204 错误代码。我可以将我的一个网络服务器设置为返回 204 错误并将 haproxy 指向它作为后端。但是,由于没有发送任何信息,我认为这应该可以从 haproxy 本身完成。无需打扰我的实际 Web 服务器。
我尝试创建一个会生成 204 错误的后端,如下所示:
frontend ...
...
acl is_always204 path_beg /thisone
use_backend always204 if is_always204
...
backend always204
errorfile 404 /etc/haproxy-shared/errors/204.http
204.http 文件包含:
HTTP/1.0 204 No Content
Cache-Control: no-cache
Connection: close
Content-Type: image/png
当我启动 haproxy 时,我收到此错误:
parsing [/etc/haproxy/haproxy:51] : status code 404 not handled, error customization will be ignored.
我想我可能会以错误的方式解决这个问题。任何人都可以建议一种方法来强制 haproxy 为给定的 acl 匹配返回 204 吗?
有时 yum 的缓存会损坏,我们会看到如下错误:
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 - (-30974)
error: cannot open Packages database in /var/lib/rpm
解决方法是rm -f /var/lib/rpm/__db*
然后下一个“yum”命令重新生成数据。
我的问题是:什么可能导致这种情况?是否有一些常见的任务忽略了锁或有其他导致这种情况的问题?
我们有数百台 CentOS 机器,没有任何模式可以看到这个问题。这可能是一个“百万分之一”的问题,在大范围内经常出现。
注意:我意识到这是一个非常“开放式”的问题,但如果答案找到了原因,我将返回并将问题转化为与特定问题直接相关的更规范的问题。
我的 DNS 服务器曾经是公司域的 DNS 服务器。然而,他们搬到了别处。奇怪的是,多年后他们仍然在他们的 whois 记录中列出我的 DNS 服务器(或者,更准确地说,在他们的胶水记录中)。
现在我很好奇是否有其他域在做同样的事情。
有没有办法可以找到哪些域将我的服务器列为其名称服务器?
在过去,人们可以使用 whois 查询“主机记录”,但我现在没有办法做到这一点
我想通过 Puppet 在每台 Mac 上为公司的 Wifi 创建条目。这可能吗?(或者如果可以从命令行,我可以弄清楚如何在 Puppet 中做到这一点)
我有一个程序,如果它在“sudo”下运行,它的行为应该不同。有没有办法确定它是否在 sudo 下运行?
更新:有人问我为什么要这样做。在这种情况下,在使用 MacPorts 的 Mac 上会有输出告诉您剪切和粘贴特定命令。如果 MacPorts 命令使用“sudo”运行,它应该在示例命令中包含 sudo:
$ sudo port selfupdate
---> Updating MacPorts base sources using rsync
MacPorts base version 2.2.1 installed,
MacPorts base version 2.2.1 downloaded.
---> Updating the ports tree
---> MacPorts base is already the latest version
The ports tree has been updated. To upgrade your installed ports, you should run
port upgrade outdated
^^^^^^^^^ it would be really sweet if it output "sudo port upgrade outdated" instead. It would be even better if it just did it for you :-)
是否有作为官方 RPM 工具包一部分的名称解析工具?
我有一个文件名列表。每个都是 RPM 包的文件名。我没有实际的包,只有文件名。对于每个我需要提取包名称和版本($NAME 和 $VERSION)。我需要这个的原因是我正在编写一个脚本,然后确保“yum install $VERSION”安装 $VERSION。这是构建包并验证它们是否正确上传的系统的一部分。
文件名列表如下所示:
$ cat /tmp/packages.txt
/home/builder/packages/testing-dev/CentOS/6/x86_64/emacs-mercurial-2.8-3.el6.x86_64.rpm
/home/builder/packages/testing-dev/CentOS/6/x86_64/emacs-mercurial-el-2.8-3.el6.x86_64.rpm
/home/builder/packages/testing-dev/CentOS/6/x86_64/mercurial-2.8-3.el6.x86_64.rpm
/home/builder/packages/testing-dev/CentOS/6/x86_64/mercurial-hgk-2.8-3.el6.x86_64.rpm
/home/builder/packages/testing-dev/CentOS/6/x86_64/python-redis-2.8.0-2.el6.noarch.rpm
/home/builder/packages/testing-dev/CentOS/6/x86_64/redis-2.6.16-1.el6.1.x86_64.rpm
/home/builder/packages/testing-dev/CentOS/6/x86_64/sei_dnsmaster-1.0-99.el6.x86_64.rpm
我发现以下代码是执行该任务的 BASH 函数:
function parse_rpm() { RPM=$1;B=${RPM##*/};B=${B%.rpm};A=${B##*.};B=${B%.*};R=${B##*-};B=${B%-*};V=${B##*-};B=${B%-*};N=$B;echo "$N $V $R $A"; }
for i in $(</tmp/packages.txt) ; do
parse_rpm $i
done
有用。大多。有一些例外:
$ parse_rpm CentOS/6/x86_64/sei_dnsmaster-1.0-99.el6.x86_64.rpm
sei_dnsmaster 1.0 99.el6 x86_64
请注意,它没有正确获取版本(应该是 1.0-99)
我想知道 (1) rpmdev 包中是否有一个工具可以正确执行此操作。(2) 如果没有,是否有我可以使用的官方正则表达式。(3) 那个正则表达式的 python 等价物是什么?
提前致谢!
有很多网站解释了如何管理 YUM 存储库的镜像。我想为我自己开发的包运行一个 repo。有没有管理此类回购的好方法?
我需要做什么:
建议?
我曾经在 Ubuntu 环境中工作。机器将指向三个存储库之一:不稳定、测试或稳定。引用Ubuntu 常见问题解答:
“稳定”发行版包含 Debian 的最新正式发行版。“测试”发行版包含尚未被“稳定”发行版接受的软件包,但它们正在排队等待。使用此发行版的主要优点是它具有更新版本的软件。“不稳定”(代号为 sid)发行版是 Debian 积极开发的地方。通常,此发行版由开发人员和喜欢生活在边缘的人运行。
更多细节在Debian 发布页面。
现在我在 CentOS 环境中工作。CentOS 是否使用相似的名称或完全不同的方法?
我问的原因是我想为本土软件包设置一个 repo,我想获得不稳定/测试/稳定的好处,但我想以 CentOS 友好的方式来做。
假设我想监控 1,000 台主机。对于每台主机,我要监控 100 个或更多变量:ping、磁盘 IO/延迟、RAM 空闲/交换/等,等等。每 5-10 分钟 100,000 个数据点,存储 5 年。
什么系统规模这么大?
如果我有 10 倍的主机数量怎么办?那你会选择什么?