我的 Debian Wheezy 系统使用deadline
调度程序。我习惯于ionice
在繁忙时间使用重新安排磁盘密集型作业的 I/O 优先级,据说这似乎有帮助(但我没有任何确凿的证据)。
手册ionice
页、内核文档和这个 OpenSUSE 文档都表明只有cfq
调度程序会考虑ionice
干预。他们没有明确声明其他调度程序忽略它,但他们提到的唯一一个是cfq
.
其他调度程序,特别是deadline
,与ionice
?
我有一个运行 Debian Wheezy 的虚拟机,即使解析器立即回复,某些主机名查找也需要几秒钟才能完成。奇怪的是,查找getaddrinfo()
会受到影响,但gethostbyname()
不会。
我已经切换到 Google 解析器以排除本地解析器损坏的可能性,所以我/etc/resolv.conf
看起来像:
search my-domain.com
nameserver 8.8.4.4
nameserver 8.8.8.8
Run Code Online (Sandbox Code Playgroud)
我nsswitch.conf
的线路:
hosts: files dns
Run Code Online (Sandbox Code Playgroud)
而我的/etc/hosts
不包含任何异常。
如果我尝试telnet webserver 80
,它会在获得名称解析之前挂起几秒钟。的ltrace
输出[1]示出了悬挂在一个getaddrinfo()
呼叫:
getaddrinfo("ifconfig.me", "telnet", { AI_CANONNAME, 0, SOCK_STREAM, 0, 0, NULL, '\000', NULL }, 0x7fffb4ffc160) = 0 <5.020621>
Run Code Online (Sandbox Code Playgroud)
然而,tcpdump
显示名称服务器立即回复,并且只有在第二次回复时才telnet
解锁。回复看起来相同:
05:52:58.609731 IP 192.168.1.75.43017 > 8.8.4.4.53: 54755+ A? ifconfig.me. (29)
05:52:58.609786 IP 192.168.1.75.43017 > 8.8.4.4.53: 26090+ AAAA? ifconfig.me. (29)
05:52:58.612188 IP 8.8.4.4.53 > …
Run Code Online (Sandbox Code Playgroud) 我的生产服务器有atop
1.23 版,我有一个由它编写的数据文件,我需要从中提取进程的完整命令行。
很遗憾:
atop
不会显示超出显示第 80 列的数据strings
搜索是行不通的有什么办法可以从我的数据文件中恢复完整的命令行吗?
我只是在看这个问题并编写了一个 noddy 程序来演示unsetenv()
修改/proc/pid/environ
. 令我惊讶的是它没有效果!
这是我所做的:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(void)
{
printf("pid=%d\n", getpid());
printf("sleeping 10...\n");
sleep(10);
printf("unsetenv result: %d\n", unsetenv("WIBBLE"));
printf("unset; sleeping 10 more...\n");
sleep(10);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然而,当我跑
WIBBLE=hello ./test_program
Run Code Online (Sandbox Code Playgroud)
然后我WIBBLE
在unsetenv()
运行前后的环境中看到:
# before the unsetenv()
$ tr '\0' '\n' < /proc/498/environ | grep WIBBLE
WIBBLE=hello
# after the unsetenv()
$ tr '\0' '\n' < /proc/498/environ | grep WIBBLE
WIBBLE=hello
Run Code Online (Sandbox Code Playgroud)
为什么不unsetenv()
修改/proc/pid/environ?
有没有一种方法可以将apt
待处理的升级应用于软件包,但如果未安装则不执行任何操作?
我有许多 Debian 系统,都带有不同的软件包集,我想在特定补丁可用时应用它们。我想在我的所有系统上运行相同的命令,但不安装丢失的软件包。通常我会用来apt-get install package
进行升级,但这会将其安装在尚不存在的位置。
我可以用类似的方法来解决这个问题
(dpkg -l package | grep '^ii') && apt-get install package
Run Code Online (Sandbox Code Playgroud)
但还有更好的办法吗?
在我的 Ubuntu 13.04 笔记本电脑上,CUPS/var/log/cups/error_log
在重启时为每台打印机写入此消息:
W [25/Jun/2013:10:00:26 +0100] AddProfile failed: org.freedesktop.DBus.Error.UnknownMethod:No such interface `org.freedesktop.ColorManager' on object at path /org/freedesktop/ColorManager/devices/cups_Brother_HL_2150N_series
Run Code Online (Sandbox Code Playgroud)
我在打印时没有遇到任何问题,但我想知道为什么会出现该消息以及我能做些什么。理想情况下,我希望在不盲目安装驱动程序和软件包的情况下解决问题;我想确切地了解该消息出现的原因。
CentOS 5.x
当我Banner /path/to/banner
在 sshd 配置文件中启用该参数时,横幅会在login as:
提示后显示。
例如:
login as: foo
***********************************************************
Test Example SSH Banner Text
This is a test
Example 12345
***********************************************************
foo@1.2.3.4's password:
Run Code Online (Sandbox Code Playgroud)
诚然,对于使用在连接之前已指定的用户名进行连接的 ssh 连接来说,这不是问题。但是对于没有预先选择用户名的 ssh 连接,用户在连接时会看到:
login as:
Run Code Online (Sandbox Code Playgroud)
有没有办法让横幅在login as:
提示之前显示?