2007年11月 归档

检索进程:ps

| 暂无评论 | 暂无引用通告

  ps这个命令最常见的,我们经常用它来检索进程,但在我认真阅读过ps的man文档之前,我使用的最多的选项是aux,用grep匹配出特定的进程,然后再处理它,现在看来这种做法非常笨拙,呵呵!其实我们完全可以用pgrep快速的完成这一串操作。

  今天暂不讲解pgrep的用法,先让 我们更多的了解一下ps,首先ps支持三种选项格式:unix options这种选项通常需要在其前加横杠-,多值可梱绑;BSD options 选项前不用加任何符号;GNU Long options即GNU长选项,选项前加两个横杠;这三种选项可以混用,在产生冲突时程序会提示。

  ps选项分类:检索类、输出列格式控制、线程信息、其他信息,在此我只列举一些常用到的用法,其他选项在用到时可以查看手册页。


  -e用于显示所有进程,以下是输出的一小部分:

[root@supersun.biz ~]#ps -e
  PID TTY          TIME CMD
    1 ?        00:00:00 init
    2 ?        00:00:00 migration/0
    3 ?        00:00:00 ksoftirqd/0
    4 ?        00:00:00 watchdog/0
    5 ?        00:00:00 events/0


  域定义:

PID    进程ID
TTY    与进程关联的终端
TIME    进程使用CPU累计时间
CMD    执行文件的名称

watch用于周期性的执行某个命令如:
查看lvs中各台服务器的负载

watch 'ipvsadm -L'

使用wget后台下载文件时使用

[root@supersun.biz download]#watch 'ls -lh freemind-bin-max-0_8_0.zip'

来查看文件大小的变化。
还有一个经常用到的是查看本机建立的网络连接:

[root@supersun.biz ~]#watch 'netstat -a |grep ESTAB'

watch默认2秒重新执行一次命令,我们可以使用-n选项设定时间间隔。另外-d选项用于标注发生变更的输出。

[root@supersun.biz root]# watch -d -n 1 'ipvsadm -L'

转自:http://www.unixreview.com/documents/s=10133/ur0706f/

看似简单的知识,但脱离了man文档,有好多题还真是答不上来。

Test Your Knowledge of Users and Groups

by Emmett Dulaney

If there is one thing that all administrators deal with on a regular basis, it is users and groups. If there is one topic that you should know inside and out, it is users and groups. That said, following are 50 questions intended to test your knowledge of user and group fundamentals at an intermediate level. Good luck (answers are at the end of the article)!

1. What is the default UID number assigned to the first user added to a system on most systems?

A. 1
B. 100
C. 1000
D. 10000

Linux系统中添加到系统中的用户的UID是500而在freebsd第一个用户的UID是1001

2. Which command can be used at the command line to change your active GID to a new one?

A. chgroup
B. group
C. newgrp
D. switch

3. Which field of the /etc/passwd file identifies the user's primary group ID?

A. 1
B. 3
C. 4
D. 5
E. 6
F. 7

4. NIS entries are automatically added to your system. What character precedes entries in /etc/passwd for which this is done?

A. +
B. !
C. ?
D. %

5. How many fields does the /etc/shadow file consist of?

A. 7
B. 9
C. 12
D. 15


穿警服的超级跑车

| 暂无评论 | 暂无引用通告
  除非你的座驾是布加迪威龙,否则千万别超速。
  英国伦敦大都会警察局与超级跑车制造商卡帕罗(Caparo)联手推出了这辆令人震撼和敬畏的超级警车--Caparo T1 RRV(快速反应车辆)。它的车身仅有250千克重,却搭载了输出功率高达429千瓦的3.5升V8发动机,创造了功率重量比1.7千瓦/千克的惊人纪录。"这台发动机在10500转/分钟时可输出429千瓦的功率,而在9000转/分钟的时候则能对后轮施加408牛·米的最大扭矩。"而这并不是它的极限,它的技术工程师、原麦凯伦F1车队高级工程师本·斯科特-格迪斯说,"发动机的最高转速可达17500转/分钟。"在如此强大的动力驱使下, 0~100千米/小时加速仅需2.6秒,即便是0~160千米/小时加速也不过5秒,最高车速被限定在320千米/小时。

caparo-t1.jpg  你眼前的这辆Caparo T1 RRV警车即将被派往英国伦敦的M25高速公路,专门对付那些倚仗车好而超速的驾驶者。从今以后,除非你拥有目前世界上跑得最快的民用车布加迪威龙(极限速度405千米/小时),否则千万别在M25高速公路上飞车了。

caparo-2.jpg



free查看内存使用状况

| 暂无评论 | 暂无引用通告
free用于显示使用的和剩余的内存和swap空间的量:

[root@supersun.biz ~]#free
             total       used       free     shared    buffers     cached
Mem:        498396     487592      10804          0       5752     134252
-/+ buffers/cache:     347588     150808
Swap:       514072       2128     511944

想了解各参数的含义可以参看:

free输出参数

free只有几个选项:

设定计量单位的选项:

-b -k -m分别以bytes、kilobytes、 megabytes计量,默认以kilobytes,使用-m得到的输出更直观些。

合计选项(Mem+Swap):-t

[root@supersun.biz ~]#free -t -m
             total       used       free     shared    buffers     cached
Mem:           486        477          8          0          6        133
-/+ buffers/cache:        337        149
Swap:          502          2        499
Total:         988        480        508

-o 用于去掉"buffer adjusted"行,即:

-/+ buffers/cache:        337        149

-s 用于设定周期性显示的时间间隔。



procps软件包

| 暂无评论 | 暂无引用通告
  procps软件包主要用于监控系统资源和给指定的进程发送信号,此软件包括以下程序:free, kill, pgrep, pkill, ps, skill, snice, sysctl, tload, top, uptime, vmstat, w 和 watch,以及库文件libproc.so,这些工具依赖于proc文件系统,它们通过libproc.so从/proc下收集系统和进程信息。

  以下是各程序的简要介绍:

kill 向进程发信号。

pgrep 按照名字或者其他属性查找进程。

pkill 按照名字或者其他属性向进程发送信号。

pmap 生成指定进程的内存图报告。

ps 显示当前系统进程的快照。

skill 向符合某个条件的进程发出信号。

snice 改变符合某个条件进程的调度优先级。

sysctl 实时更改内核参数。

tload 在指定的tty终端上显示系统当前平均负载的示意图。

top 实时观察进程的活动情况。

uptime 显示系统运行了多长时间,有多少用户登陆,系统的负载情况。

vmstat 报告虚拟内存状态。包括进程、内存、分页、块设备的读写、中断和CPU的活动。

w 显示当前登录的用户信息,以及其产生的进程。

watch 周期性执行某个命令,满屏显示其输出。

  在以后的一段时间本站将对这些命令的用法进行一一介绍。

一个简单的批量同步脚本

| 评论(2) | 暂无引用通告
为了方便同步多个主机的目录到备份服务器,写了如下脚本:

#!/usr/bin/perl
use strict;
use File::Spec;
use File::Basename;
use File::Path;
#设定存储路径
my $storedir="/backup/";
while(<DATA>){
        chomp;
        my ($host,$s_path)=split /\t/;
        my $project_name=fileparse($s_path);
        my $d_path=File::Spec->catfile($storedir,$host,$project_name);
        $s_path=$s_path."/";
        $d_path=$d_path."/";
        mkpath $d_path,1,0755 unless -d $d_path;
        my $cmdline="rsync -av --delete --rsh=\"ssh\" root\@$host\:".$s_path." ".$d_path;
        print "备份主机:$host   备份目录:$s_path\n";
        system ($cmdline);
}

__DATA__
host1   /home/www
host2   /home/bbs


脚本的功能非常简单,即生成简单的命令行,由system命令调用一个shell来执行这个命令来完成备份。

脚本中的__DATA__下定义了需要备份的主机和目录(以TAB分隔开),生成的备份保存在$storedir="/backup/"定义的目录中,该目录下建立以主机名命令的目录,每个主机名目录中为每个一项目名。
脚本需要完善的地方有:
1、没有生成日志;
2、没有保存多份不同时间的备份。

关于备份,你还可以参看一下以前的几篇文章:
2007.08.31: 备份几台服务器的/home分区
2007.08.21: MYSQL数据库导出导入
2007.08.07: 备份Firefox的书签
2007.07.31: 一个差分备份用的小脚本
2007.07.30: 备份技术及基本分类

另外要记得备份一下自己的主目录,只要运行一条命令就行,不然有一天电脑出问题,后悔莫及,<LINUX SERVER HACKS>里有一句说的非常好:唯一比灾难性的磁盘故障、失控的远程主机和险恶的安全性事件更糟糕的事,是发现这些事情本来可以避免时的那种痛彻心扉的感觉。
我的方法是写一个脚本,命名为:rootbackup.sh放入/root/bin下,下班时只要运行:
[root@supersun.biz ~]#rootbackup.sh
就可将/root目录同步到我的移动硬盘中。脚本内容:

#!/bin/sh
echo "开始对/root目录进行备份........"
echo "挂载移动硬盘:"
echo "mount /dev/sda4 /mnt"
mount /dev/sda4 /mnt
echo "进行同步"
rsync -av --delete /root /mnt/sun
echo "同步结束"


在vim的配置文件中添加以下的键绑定:

map ,t <Esc>:!perl -c %<CR>

编写perl脚本的进程中,只要运行,t(逗号t)可以快速的检查脚本是否有语法错误了。

例如使用vim编缉脚本:

#!/usr/bin/perl -w
use strict;
use IO::File;
use Digest::MD5;

my $file=shift;

my $chk_sum=Digest::MD5->new();
$chk_sum->addfile(IO::File->new($file));
print $chk_sum->hexdigest,"\t$file\n";
~

按ESC进行命令模式并运行,t

[root@supersun.biz ~]#vi digmd5.pl

digmd5.pl syntax OK

请按 ENTER 或其它命令继续


再看一个语法有错的情况:

Global symbol "$file" requires explicit package name at digmd5.pl line 6.
Global symbol "$file" requires explicit package name at digmd5.pl line 9.
Global symbol "$file" requires explicit package name at digmd5.pl line 10.
digmd5.pl had compilation errors.

Shell 已返回255

请按 ENTER 或其它命令继续


根椐自己的实际情况,可以设定自己的键绑定。

术语:ISCSI

| 暂无评论 | 暂无引用通告

ISCSI(internet SCSI即Internet 小型计算机系统接口,IETF制订的一项标准,用于将SCSI数据块映射成以太网数据包)是一种基于 TCP/IP 的协议,用来建立和管理 IP存储设备、主机和客户机等之间的相互连接,并创建存储区域网络(SAN)。SAN 使得 SCSI 协议应用于高速数据传输网络成为可能,这种传输以数据块级别(block-level)在多个数据存储网络间进行。




iscsi.jpg


在脚中有时需要检测运行脚本的有效有户ID是否是root用户
#!/bin/bash
# Init
FILE="/tmp/out.$$"
GREP="/bin/grep"
#....
# Make sure only root can run our script
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 2>&1
exit 1
fi
TIPS:这里的临时文件的文件名值得学习.
检测邮件服务器故障时会需要运行telnet来建立这些会话。

建立esmtp会话

用户名和口令信息需要编码,使用以下脚本:

#!/usr/bin/perl

use MIME::Base64;

# encode parameter 1
$encoded_usr = encode_base64($ARGV[0]);
# encode parameter 2
$encoded_pwd = encode_base64($ARGV[1]);

#$decoded = decode_base64($encoded);

print $encoded_usr;
print $encoded_pwd;

将脚本命名为base64encoder.pl。
使用方法:
./base64encoder.pl username password
dXNlcm5hbWU=
cGFzc3dvcmQ=
然后使用生成的信息登陆:
  因为考虑到有可能要重新启用该用户或不改变原用户的密码,因此最适当快速停用用户账号的方法就是在存放用户信息的/etc/passwd文件的密码域(第二域)前添加!即可,如果系统启用了影子密码文件,则只要在/etc/shadow文件的第二域(密码)前添加!即可,需要重新启用用户的话,直接去掉!就行了。
  用户被禁用与输错密码的反馈是一样的,如下:
用户被禁用:
[root@supersun.biz nagios]#ssh supersun@ws1
supersun@ws1's password:
Permission denied, please try again.
输错密码:
[root@supersun.biz nagios]#ssh supersun@ws1
supersun@ws1's password:
Permission denied, please try again.
supersun@ws1's password:
Last login: Thu Nov 15 14:31:57 2007 from supersun.biz
[supersun@ws1 ~]$
当然更简单的是使用passwd命令,passwd有-l和-u两个选项分别用于锁定和解锁用户,当然这个命令只允许root来使用:
[root@supersun.biz unixreview]#passwd -l oracle
Locking password for user oracle.
passwd: Success
[root@supersun.biz unixreview]#passwd -u oracle
Unlocking password for user oracle.
passwd: Success.
[root@supersun.biz unixreview]#
如果想查看用户口令寿命信息,可以使用chage,当然这个命令还可以设定口令的寿命:
[root@supersun.biz unixreview]#chage -l oracle
最近一次密码修改时间                                    :11月 22, 2007
密码过期时间                                    :从不
密码失效时间                                    :从不
帐户过期时间                                            :从不
两次改变密码之间相距的最小天数          :0
两次改变密码之间相距的最大天数          :99999
在密码过期之前警告的天数        :7




  Mega Structures: Itaipu Dam

  巴拉那河全长4000公里,是南美第二大河。河道中有一段是巴西和巴拉圭的边界。这里矗立着一座人工建筑,将河道截断。它就是伊泰普水坝。这是全球最大的水力发电大坝,每年输出9万千兆瓦电力。水坝全长7公里,水流从大坝倾泻而下,如同巨大的人工瀑布。4万名工人的努力和200亿美元的资金,历时7年的时间,才建成了这座水坝。
.
  数千年的地壳运动造成了希腊的伯罗奔尼萨半岛和大陆的分离,而2004年8月建成的、横跨科林斯海湾里永-安蒂里永大桥将被自然界分离了几千年的这两块陆地连接在了一起。它不仅仅是世界上最长的斜拉桥--桥面直接用悬索吊在龙门架上,而且还是世界上技术最先进的桥梁之一。

  尽管在一个世纪之前意大利人就提出了修建这样一座大桥的计划,但是由于技术的原因,直到2004年这个计划才得以实现。科林斯海湾的水深超过了60米,而且岩床位于海湾下面松软的泥土的深处--这些都是修建大桥的阻碍因素。为此,工程师们在桥墩下面的泥土中打入了大量的钢管来对这些泥土进行强化,这些巨大的钢管可以在地震发生时将海床连接成一个整体--过去的40年中,在科林斯海湾附近有7次地震的震级都超过了里氏6级。为了进一步提高大桥的抗震能力,设计者们让桥面像钟摆一样悬挂在龙门架上,并在桥面底部安装了阻尼器以减弱地震时桥面的晃动。这些设计使得里永-安蒂里永大桥能抵抗住速度超过240千米/小时的大风、里氏7.5级的地震和18万吨的油轮以18节航速的撞击。

巨大的支撑

  在对科林斯海湾的海底进行了调查后,工程师们发现,岩床深深地位于海底的泥沙下面,无法用来固定大桥。于是他们采用了如下的解决办法:将4个桥墩的下面各安放了一个巨大、中空的沉箱。这些沉箱用径向的梁加固,直径达90米,是人类桥梁史上建造的最大的同类构件。为了强化这些巨大的支撑下面松软的泥土,工人们在泥土中打入了数以百计的巨大钢管-- 这些直径2米的钢管长达24.4米--并在这些钢管的上面铺了一层砾石。


  厄勒海峡大桥(也称欧尔松大桥Oresund Bridge),连接哥本哈根和瑞典第三大城市马尔默,于1995年开始动工。全球第十大桥。该桥全长16公里,由西侧的海底隧道、中间的人工岛和跨海大桥三部分组成。西侧的海底隧道长4050米,宽38·8米,高8·6米,位于海底10米以下,由五条管道组成。它们分别是两条火车道、两条双车道公路和一条疏散通道。它是目前世界上最宽敞的海底隧道。中间的人工岛长4050米,将两侧工程连在一起。东侧的跨海大桥长7845米,上为4车道高速公路,下为对开火车道,共有51座桥墩,中间是斜拉索桥,跨度490米,高度55米,是目前世界上承重量最大的斜拉桥。

  欧尔松大桥的东桥建有200米高的中央桥墩和57米高的船舶通过空间,保证过往海峡的船只从桥底顺利通行。大桥工程经过两国政府的认真论证和调查研究,对确保大桥不影响进入波罗的海的水流及减少对海洋生物破坏等都作了严格的规定。

  欧尔松大桥西部的起点哥本哈根国际机场早就进入了各项前期准备工作。如扩建机场、修建连接市中心的公路、铁路,建设新的国际列车站。一系列的基础设施建设将使哥本哈根国际机场进一步提高知名度和扩大客货流量,进一步加强丹、瑞两国和它们与欧洲大陆的联系。欧尔松大桥完工后,它所连接的丹麦东部地区和瑞典南部地区将成为北欧及波罗的海地区国际性都市群最密集、经济最活跃、文化交流最频繁的地区。大桥建成后两岸的交流量增加了四倍,而丹麦迁往瑞典的人数也翻了六番。

BSD:BSD系统全家福

| 暂无评论 | 暂无引用通告
转自:freebsdchina.org 原文链接:http://www.freebsdchina.org/forum/viewtopic.php?t=1859
  BSD是Berkeley Software Distribution的简称,它最初是用来发布由Berkeley大学的Computer Systems Research Group(CSRG)开发的UNIX系统(Berkeley UNIX)。后来出现的BSD系统都是源自于Berkeley UNIX。现在主要的BSD系统有下面这些:

386/BSD

  386/BSD是最初的BSD操作系统,是在1992年由William F.Jolitz在4.3BSD的Networking Release 2基础上开发的。它主要运行在386PC的体系结构上。它的发行版主要是在网络上完成的,任何人都可以从网络上自由下载。386/BSD在发展了一定阶段后,就再也没有进展:取而代之的是,从此引出了两个操作系统,NetBSD和FreeBSD。现在,大家都认为386/BSD已经死了。

NetBSD

  在386/BSD版本发布几个月以后,一群具有敏锐眼光的用户成立了一个小组,他们收集资源以帮助维护和增强后来的系统。他们把他们的版本命名为 NetBSD。NetBSD侧重于支持尽可能多的平台,并继续按照CSRG的风格进行开发。现在,NetBSD能够支持包括从Algor到 VAX在内的近70种平台。你可以去看看NetBSD的官方网站http://www.NetBSD.org了解更多信息。

关于此归档

这里是2007年11月的所有日记,它们按照时间从新到老排序。

上一篇日记2007年10月

下一篇日记2007年12月

首页归档页可以看到最新的日记和所有日记。