[企业职业危害与预防之铸件清理]钢铸件清理作业中出现的噪声级为115~120分贝;而铁铸件的清理作业实际噪声为105~115分贝。英国钢铁铸造研究协会明确了铸件清理时噪声来源于: 1)清理工具排气; 2)锤或砂轮在铸件上...+阅读
尽管现在的磁盘容量越来越大,但它终究有被塞满的可能,如果遇上粗枝大叶的系统管理员,磁盘被塞满的时间将变得更短。一个unix/linux运行环境,一旦遇到某个分区(也称文件系统)被塞满,后果也许会十分糟糕—我曾有过在凌晨2点起来干活的经历—分区/tmp满了,导致某个守护进程不能写入磁盘而异常终止。想必其他人也有类似的情况,怎样处理和避免这样的麻烦呢?这里有些意见供大家参考。
先谈非技术方面的因素,简单的讲就是规章制度。Linux/unix大多是公共服务器,应该禁止上传与工作无关的私人数据。某君买了一个NAS(网络附属存储)设备,4个73G的硬盘,考试,大提示本来打算做web的后台数据存储,但是,但是….后来据我所知,这个大容量磁盘不到2个月所剩空间不到20G,私下浏览,嘿!大部分数据是他私人的,他本来就有收藏废品的嗜好,难怪呢。因此在这个方面,制度应该严厉一些,避免同事放垃圾数据在公共空间。
磁盘上的数据可能随时增长,任何人不可能24小时盯着它,因此实现自动化监控手段是十分必要的,对于更大规模的网络环境,这也许是的途径。下面是一个用perl写的监控磁盘容量的脚本(大宇对此有贡献):
#!/usr/bin/perl -w
# this program will check disk capacity $full and send the warning message
# to $email_address
# (set the threshold to 90 and check it in the daytime so no paging
# is needed)
my $email_address = ’sa#your.’;
my $hostname = `/sbin/ifconfig -a|grep i|head -1|cut -f2 -d":"|cut -f1 -d" "`;
my $dmesg = `dmesg`;
chomp(my $now = `date +"%x %X"`);
my $full = 90; # the threshold to send the warning
my $warn = 95;
my $count = 0;
my ($dev,$total,$used);
my #df_messages = `df|grep -v proc`;
print #df_messages;
shift(#df_messages);
foreach $message (#df_messages) {
chomp($message);
($dev, $total, $used, $ailable, $capacity, $mount) = split(/\s+/, $message);
$capacity =~ s/(\d+)\%/$1/;
if ($capacity >$full) {
$ailable[$count] = $ailable;
$capacity[$count] = $capacity;
$mount[$count] = $mount;
++$count;
$email_address = ’sa#your.’ if ($capacity >$warn);
}
}
if ($count >0) {
open(MAIL, "|/usr/sbin/sendmail -t");
print MAIL "To: $email_address \n";
print MAIL "Subject: Disk almost full on $hostname ($now)\n";
print MAIL "\n";
for ($i = 0; $i< $count; ++$i) {
print MAIL "There are only $ailable[$i] KB ($capacity[$i]\% full) left on $mount[$i] \n";
}
}
if ( $dmesg =~ m/ERROR/ )
{
open(EMAIL, "|/usr/sbin/sendmail -t") or die "Can’t fork for sendmail: $!\n";
print EMAIL