我创建一个systemd。服务文件,我需要帮助理解之间的差异Requires=
和After=
。该手册页说,Requires=
“对其他单位提供配置需求的依赖。” 和After=
“配置单元之间的排序依赖关系”。有什么不同?
我有一个程序,如果它在“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 …
Run Code Online (Sandbox Code Playgroud) 官方 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
Run Code Online (Sandbox Code Playgroud)
我发现以下代码是执行任务的 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
Run Code Online (Sandbox Code Playgroud)
有用。大多。有一些例外:
$ parse_rpm CentOS/6/x86_64/sei_dnsmaster-1.0-99.el6.x86_64.rpm
sei_dnsmaster 1.0 99.el6 x86_64
Run Code Online (Sandbox Code Playgroud)
请注意,它没有正确获取版本(应该是 1.0-99)
我想知道 (1) rpmdev 包中是否有一个工具可以正确执行此操作。(2) 如果没有,是否有我可以使用的官方正则表达式。(3) 那个正则表达式的python 等价物是什么?
提前致谢!
博客文章“为您的域提供 'tinyurl' 服务”说明了如何使用 Google Apps 为您的域设置 ShortName 服务。例如,如果您的域是example.com
并且您使用 Google Apps,您可以将其配置http://go.example.com
为您企业的个人 ShortName 服务。
注意:这不是创建一个供全世界使用的“tinyurl”服务。这是针对企业的。
拥有一个只有您的用户可以使用的短名称服务非常有用,这样您就可以创建指向内部页面的链接。您可以说“今天的午餐菜单位于http://go.example.com/lunch ” ,而不是告诉人们一个长而难懂的 URL 。博客文章记录了授权人们建立自己的链接的一些好处。(最重要的是:他们不必打扰您设置新链接!)
系统的问题是 URL 仍然很长。人们宁愿在他们的网络浏览器中输入“go/lunch”并让它工作。遗憾的是,由于 HTTP 协议工作方式的技术问题,Google Apps 无法支持这一点。HTTP 1.1 中的“Host:”标头列出了用户在其 Web 浏览器中键入的域,而不是FQDN。换句话说,当 Google Apps 收到“ http://go/lunch ”的HTTP 请求时,网络服务器会收到“go”作为主机名。由于谷歌Apps的提供许多领域这项服务,如果你想它不能告诉go.example.com
或go.some-other-example.com
。
因此,用户每次都必须输入“go.example.com/lunch”,这比“go/lunch”要长得多。
谷歌可以通过使用网络 cookie 或其他一些方案来解决这个问题。没有一个是特别干净或容易的。在他们这样做之前,您可以通过设置自己的机器来解决问题,该机器将请求作为“go”接受并重定向它们。
服务器接受名为“go”的站点的 HTTP 请求并将请求重定向到go.example.com
. 然后您创建正确的 DNS 记录以使其正常工作,并调整您的 DHCP 配置,以便您的笔记本电脑/工作站做正确的事情。
此服务器故障文档的重点是解释该过程,然后提供配置示例以帮助您为您的站点执行此操作。由于我无法访问或了解世界上的每个操作系统,因此我将其设为“社区 wiki”,以便人们可以填写配置片段以供他们使用。我已经把“TODO”放在特别需要改进的地方。
在本例中,我们将使用“example.com”作为域。
go.example.com
正常配置服务。测试它并确保类似的 URLhttp://go.example.com/foo
有效。如果这不完整,请不要继续。这就像在你拥有一辆汽车之前试图修理你的汽车一样。
我有一个老式的守护进程,我想使用 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) 有时 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
Run Code Online (Sandbox Code Playgroud)
解决方法是rm -f /var/lib/rpm/__db*
然后下一个“yum”命令重新生成数据。
我的问题是:可能导致这种情况的原因是什么?是否有一些常见的任务会忽略锁或有其他问题导致这种情况?
我们有数百台 CentOS 机器,没有任何模式可以看出这个问题。这可能是一个“百万分之一”的问题,经常看到大规模的问题。
注意:我意识到这是一个非常“开放式”的问题,但是如果答案找到了原因,我将返回并将问题变成与特定问题直接相关的更规范的问题。
我的机器上有很多未使用的(旧的、死的)帐户。他们中的许多人每天收到数以千计的电子邮件,都是垃圾邮件。
如果该帐户被某人使用,我会让电子邮件退回,以便任何试图联系他们的人都知道出了什么问题。但是,我不确定如何处理数百个用于其他目的的帐户,例如我曾经用于要求我提供电子邮件地址的网站的一次性帐户,或者我曾经在网页上列出的地址.
选项 1:将
所有邮件转发到这些帐户/dev/null
。发件人没有收到退回邮件。
选项 2:
让电子邮件退回。
将电子邮件发送到的好处/dev/null
是垃圾邮件发送者不能使用我来生成退回邮件(反向分散垃圾邮件)。即:伪造“来自”行成为他们不喜欢的人,然后使用我向该人发送大量退回邮件。
弹跳它们的好处是对我来说维护更少。我可以从我的别名文件中删除该项目,电子邮件就会退回。此外,我不断发现新的垃圾邮件陷阱并将它们添加到我的“垃圾邮件黑洞”列表中,这是浪费时间。
每种方法的优缺点是什么?
如果有人试图访问我的 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
Run Code Online (Sandbox Code Playgroud)
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 吗?
我的 DNS 服务器曾经是公司域的 DNS 服务器。然而他们搬到了别处。奇怪的是,多年后他们仍然在他们的 whois 记录中列出我的 DNS 服务器(或者更准确地说,在他们的胶水记录中)。
现在我很好奇是否还有其他域在做同样的事情。
有没有办法可以找到哪些域将我的服务器列为其名称服务器?
在过去,人们可以使用 whois 查询“主机记录”,但现在我看不到这样做的方法
假设我想监控 1,000 台主机。对于每台主机,我想要监控 100 个或更多变量:ping、磁盘 IO/延迟、RAM 空闲/交换/等,等等。每 5-10 分钟 100,000 个数据点,存储 5 年。
什么系统规模这么大?
如果我的主机数量是原来的 10 倍怎么办?那你会选什么?