Articles of linux

需要较慢/caching的Linux文件系统

我知道这听起来很奇怪,但我需要一个较慢或caching的文件系统。 我有很多防火墙将syslog的数据写入一对Linux虚拟机,这些虚拟机将这些文件写入“本地”(实际上是FC SAN连接的)ext3格式的磁盘,并将消息转发到我们的Splunk服务器。 问题在于,系统日志服务器正在将这些系统日志消息每秒写入数百甚至数千次,这些消息每秒写回到我们的FC SAN–目前可以处理这个工作负载,但是我们的FWstream量至less会增长一倍在接下来的几个月里,这个数字会达到5000%(真的),这对SAN来说是一个痛苦,我想在问题出现之前解决根本原因。 所以我需要一些帮助,找出一种方法,使得这些写入以某种方式从“物理”磁盘caching或保留,以便虚拟机发出较大但较不频繁的写入 – 无法避免这些写入,但存在没有必要做这么多小的。 我已经看了各种ext3选项,设置noatime和nodiratime,但这并没有造成太大的问题。 很显然,我正在研究其他文件系统,但是以为如果其他人在将来也遇到同样的问题,我会抛出这个问题。 哦,我不能将这些消息转发给Splunk,我们的防火墙团队坚持认为它们是用于诊断的原始格式。

用tc增加出站UDP数据包的延迟

我想在tc中使用fwfilter强制任意延迟出站UDP数据包; 但是,我不能让filter正常工作: tc qdisc add dev eth0 root handle 1: prio tc qdisc add dev eth0 parent 1:3 handle 30: netem delay 200ms tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 1 fw flowid 1:3 iptables -A PREROUTING -i eth0 -t mangle -p udp -j MARK –set-mark 1 如果我使用下面的u32filter,我会得到所需的效果: tc filter […]

RDP双屏幕Linux

我们有一个Windowsterminal服务器,并希望有通过rdp连接到terminal服务器的Linux客户端。 除了我们无法find一个支持多个屏幕的linux rdp客户端(就像windows rdp客户端一样),所有的工作都很好。 rdesktop -f和相似之处也不起作用,因为它会导致一个大的虚拟屏幕而不是两个单独的虚拟屏幕。 所以如果你在一个远程桌面里面安装一个应用程序,它将跨越两台显示器,而不是一台。 有这样的客户吗?

为什么MySQL使CPU运行在80%左右?

据我所知,MySQL正在吃掉大约80%的CPU。 现在这个服务器很less被使用,更多的是我设置的一个testing网站,一旦我解决了这样的小问题,最终会被用于生产。 我运行3个MySQL实例,但似乎我的第一个实例占用了所有的CPU。 当我closures第一个实例,并让其他两个在一切运行良好。 有什么build议么? 我试过Show Processlist ,除了“睡眠”和查询“显示进程列表”(显然)在使用所有这些CPU时,没有任何语句正在运行。 my.cnf是基本的。 我没有优化或更改任何MySQL设置。 你觉得这会造成这种奇怪的行为吗? 该机器正在运行Linux Centos 5.7 64位和MySQL 5.0.95。 谢谢

期望+如何鉴别期望是否因为超时而破裂?

以下简单期望脚本的目标是获取远程计算机上的主机名称 有时期望脚本不能执行ssh到$ IP_ADDRESS(因为远程机器不活跃等) 所以在这种情况下期望的脚本将在10秒(超时10)之后中断,这可以,但是…… 有两个选项 预期脚本成功执行ssh,并在远程机器上执行命令主机名 期望脚本中断,因为超时时间是10秒 在这两种情况下,预计将退出 在ssh成功的情况下,预计会在0.5-1秒之后破坏,但如果是不好的ssh,则会在10秒之后破坏 但我不知道是否期望脚本执行ssh成功或不成功? 是否有可能确定超时过程? 或validation期望结束,因为超时? 备注我的Linux机器版本 – 红帽5.1 期待脚本 [TestLinux]# get_host_name_on_remote_machine=`cat << EOF > set timeout 10 > spawn ssh $IP_ADDRESS > expect { > ")?" { send "yes\r" ; exp_continue } > > word: {send $PASS\r} > } > expect > {send "hostname\r"} > expect > {send […]

如何testingionice(针对使用cfq调度程序的设备)的影响?

我正在尝试构build一个实验来测量ionice的效果。 我想做的是( 在serverfault上的另一个答案 )导致足够频繁的I / O,足够的“nice”进程饿死任何I / O。 基于serverfault上的另一个答案 ,我认为我需要每250毫秒至less一个实际的I / O操作到一个通用的CFQ预定的设备。 我的想法是写一个有一个循环的小程序 写入普通设备上的(可configuration)文件, 做一个fsync() (强制一个确定的I / O操作), 使用usleep()来延迟可configuration的时间量 定期使用lseek()截断文件(这样我就不会填充文件系统) 然后,我使用ionice -c3 ( 空闲调度类)针对普通设备上的一个文件启动程序的一个实例。 我同时使用默认( 尽力而为 )调度类运行各种实例,在通用设备上指定不同的文件(改变延迟值)。 我的假设是,在“尽力而为”的过程中,对于250ms或更长的延迟值,我将看到“闲置”过程取得的进展; 对于小于250毫秒的值,我会看到“闲置”过程所取得的进展甚微。 我的观察是这两个过程的performance没有差别, 他们都取得了相似的进展。 可以肯定的是(如果挂钟指示“尽力而为”的进程比每250ms执行I / O的速度快),我开始同时执行“尽力而为”进程的多个实例,延迟。 不过,我看到两个调度类中的进程在性能上没有差别。 可以肯定的是,我重新检查了调度程序类: $ cat /sys/block/xvda/queue/scheduler noop anticipatory deadline [cfq] 我错过了关于cfq调度器的工作原理的是什么? 如果重要的话,这是2.6.18内核。

获得一个进程的交换使用

我正在寻找一种方法,从一个shell脚本,以获得特定进程的交换使用。 顶部可以显示此信息,但仅限于交互模式。 批处理模式将仅显示.toprc存在时的自定义设置,但不能在命令行上指定特定的.toprc。 我发现这个脚本 ,但是在我的服务器上/ proc / * / smaps中没有交换项: # find /proc/ -maxdepth 1 -type d -regex '^/proc/[0-9]+$' -exec grep -Hi swap '{}'/smaps \; # 所以脚本只为每个进程输出0。 有没有办法find这些信息? 我在RHEL5.1 2.6.18-53.el5 x86_64上。 编辑: 要清楚的是,当我询问“交换使用情况”时,我指的是已经被分页到交换文件系统(当前不在主内存中)的进程使用的内存量。 假设没有更好的方法,我将默认使用(虚拟 – rss)通过ps -o vsz,rss的值来计算它。

'lsof -i`的逆

运行lsof -i (不带lsof -i参数)“select所有Internet和x.25(HP-UX)networking文件的列表。 我正在寻找一种可靠的方法来做相反的事情:显示除Internet文件以外的所有内容。 通过可靠的,我的意思是一种只需要运行一次的方法 。 随后的两次运行(即正常的lsof然后是lsof -i以便比较)是不可靠的,因为stream失的可能性很大。 提前致谢!

如何让活动目录authentication用户使用Nagios的networking界面?

我把.htaccess文件放在Nagios html根目录和CGI根目录下,所以为了访问web界面,用户需要一个有效的Active Directory帐户。 我有的问题是在/etc/nagios/cgi.cfg里面说的 use_authentication=1 authorized_for_system_information=nagiosadmin authorized_for_configuration_information=nagiosadmin authorized_for_system_commands=nagiosadmin authorized_for_all_services=nagiosadmin authorized_for_all_hosts=nagiosadmin authorized_for_all_service_commands=nagiosadmin authorized_for_all_host_commands=nagiosadmin 设置use_authentication=0 “解决”的问题,但我已阅读 此外,禁用身份validation会导致各种事情不起作用,因为程序员不想为发生什么负责最好使用身份validation,然后正确设置它;-) 所以我并不太热衷于此。 应该可以用一个组来代替nagiosadmin 基本上所有这些“authorized_for_”的东西是允许“pipe理”用户访问系统。 他们没有告诉你的一个便利是你可以把组名称而不是用户帐户,所以如果你有一个ITpipe理员组定义,把它,而不是所有的成员组 题 当用户使用Apache的mod_authz_ldap.so通过htaccess进行身份validation时,如何定义这样的组?

如何限制系统中每个用户同时进程的数量?

是的,我知道这个问题被问了很多次,但不幸的是我没有find完整的答案。 那么,如何限制每个用户同时进程的数量呢? 我发现两个解决scheme: 使用pam_limits。 在这种情况下,我需要configuration/etc/security/limits.conf文件。 不幸的是,这个解决scheme只适用于pam意识到的应用程序,这不是通用的。 使用从$ HOME / profile调用的ulimit。 不幸的是,它在所有情况下都不起作用。 我试图设置“ulimit -u 100”,然后在相同的shell“压力–vm 200 –vm – bytes 100”中启动。 应用程序已成功启动,我得到超过200个用户根下的进程。 我需要build立一个健全的系统,所以只有在某些情况下工作的解决scheme是不合适的。