unix常用命令

零.入门级SHELL命令

1. man 对你熟悉或不熟悉的命令提供帮助解释

举例:
#man ls //就可以查看ls相关的用法

注:按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行。

2. ls 查看目录或者文件的属*,列举出任一目录下面的文件

举例: ls /usr/man

或者ls -l

(1).d表示目录(directory),如果是一个"-"表示是文件,如果是l则表示是一个连接文件(link)

(2).表示文件或者目录许可权限.分别用可读(r),可写(w),可运行(x)。

3. cp 拷贝文件

举例: #cp filename1 filename2 //把filename1拷贝成filename2

#cp 1.c netseek/2.c //将1.c拷到netseek目录下命名为2.c

4. rm 删除文件和目录

举例: #rm 1.c //将1.c这个文件删除

5. mv 移走目录或者改文件名

举例: #mv filename1 filename2 //将filename1 改名为filename2

#mv qib.tgz ../qib.tgz //移到上一级目录

6. cd 改变当前目录 pwd 查看当前所在目录完整路径

举例: #pwd //查看当前所在目录路径

#cd netseek //进入netseek这个目录

#cd //退出当前目录

7. cat,more命令

将某个文件的内容显示出来。两个命令所不同的是:cat把文件内容一直打印出来,而 more则分屏显示

举例: #cat>1.c //就可以把代码粘帖到1.c文件里,按ctrl+d 保存代码。

#cat 1.c 或more 1.c //都可以查看里面的内容。

#gcc -o 1 1.c //将1.c编译成.exe文件,我们可以用此命编译出代码。

8.chmod 命令 权限修改 用法:chmod 一位8进制数 filename。

举例: #chmod u+x filenmame //只想给自己运行,别人只能读

//u表示文件主人, g 表示文件文件所在组。 o 表示其他人 ;r 表可读,w 表可写,x 表可以运行

#chmod g+x filename //同组的人来执行

9. clear,date命令

#clear:清屏,相当与DOS下的cls;date:显示当前时间。

10. mount 加载一个硬件设备

用法:mount [参数] 要加载的设备 载入点

举例: #mount /dev/cdrom

#cd /mnt/cdrom //进入光盘目录

11. su 在不退出登陆的情况下,切换到另外一个人的身份

用法: su -l 用户名(如果用户名缺省,则切换到root状态)

举例:#su -l netseek (切换到netseek这个用户,将提示输入密码)

12.whoami,whereis,which,id

whoami:确认自己身份

whereis:查询命令所在目录以及帮助文档所在目录

which:查询该命令所在目录(类似whereis)

id:打印出自己的UID以及GID。(UID:用户身份唯一标识。GID:用户组身份唯一标识。每一个用户只能有一个唯一的UID和 GID)

举例: #whoami //显示你自已登陆的用户名

#whereis bin 显示bin所在的目录,将显示为:/usr/local/bin

#which bin

13. grep,find

grep:文本内容搜索;find:文件或者目录名以及权限属主等匹配搜索

举例: #grep success * /*查

找当前目录下面所有文件里面含有success字符的文件

14. kill 可以杀死某个正在进行或者已经是dest状态的进程

举例; #ps ax

15. passwd 可以设置口令

16. history 用户用过的命令

举例: #history //可以显示用户过去使用的命令

17. !! 执行最近一次的命令

18. mkdir命令

举例: #mkdir netseek //创建netseek这个目录

19. tar 解压命令

举例: #tar -zxvf nmap-3.45.tgz //将这个解压到nmap-3.45这个目录里

20. finger 可以让使用者查询一些其他使用者的资料

举例: #finger //查看所用用户的使用资料

#finger root //查看root的资料

一.用来发送消息的命令

1.使用write命令

用户可以使用write命令给其他在线用户发送消息。格式:

#write username [tty]

在Shell提示符号输入write,username指接受发送信息的用户名。如果一个用户多次登录到系统, tty参数指定要发送的终端。使用write发送信息的前提条件是该用户已经登录到系统。否则会出现以下提示:

#write cjh
write:cjh is not logged in

可以使用who命令查询登录用户名称。接着可以输入要发送的信息。当输入完毕后,键入EOF表示信息结束,用Crtl+D组合键发送信息。输入内容会出现在用户的屏幕上,同时通信中止。

如果在网络上可以使用write命令在username后加入主机名称或域名,建立网络通信。如果要和cao主机上的bj用户通信使用命令:

 #write bj@cao

可以使用rusers命令列出所有局域网上的登录用户。

2.wall命令

如果想要发送一条信息给系统中所有用户,可以使用wall命令,wall表示:write all。输入wall,然后编辑信息,如果shell支持可以使用中文。然后使用Crtl+D组合键发送信息。这样系统所有登录用户的桌面会收到信息。如果在网络上,可以使用rwall命令把信息发送到局域网上所有的用户。

3.talk命令

talk命令可以和另一个登录系统用户实现双向对话。系统管理员输入信息,用户也可以输入自己的信息。双方都可以看到交流时的屏幕信息。格式:

#talk username

一个例子:

#talk b

对方屏幕显示:

Message from Talk_Daemon@https://www.360docs.net/doc/c42029138.html, at 7:18 ...
talk: connection requested by b@https://www.360docs.net/doc/c42029138.html,.
talk: respond with: talk b@https://www.360docs.net/doc/c42029138.html,

然后进入talk分屏界面,双方输入的信息。会出现的对方的屏幕。

用户完成会话后使用Crth+C断开连接。和write一样可以使用在username后加入主机名称或域名,建立网络会话连接。

4.mesg 命令

用户可以阻止其他用户给自己发送消息打断工作,使用mesg n命令禁止其他用户发送消息。当别人试图再使用write给他发送信息时,发送者将会

看见提示:

#write: user has messages disabled on pts/n?

但是超级用户可以给任何用户发送消息,即使用户使用mesg n命令。要恢复接受信息输入:

# mesg -y
二.系统关机/重启命令
1.shutdown

shutdown命令安全地将系统关机。 有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的。因为linux与windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失﹐使系统处于不稳定的状态﹐甚至在有的系统中会损坏硬件设备。而在系统关机前使用shutdown命令﹐系统管理员会通知所有登录的用户系统将要关闭。并且login指令会被冻结﹐即新的用户不能再登录。直接关机或者延迟一定的时间才关机都是可能的﹐还可能重启。这是由所有进程〔process〕都会收到系统所送达的信号〔signal决定的。这让像vi之类的程序有时间储存目前正在编辑的文档﹐而像处理邮件〔mail〕和新闻〔news〕的程序则可以正常地离开等等。

shutdown执行它的工作是送信号〔signal〕给init程序﹐要求它改变runlevel。Runlevel 0被用来停机〔halt〕﹐runlevel 6是用来重新激活〔reboot〕系统﹐而runlevel 1则是被用来让系统进入管理工作可以进行的状态﹔这是预设的﹐假定没有-h也没有-r参数给shutdown。要想了解在停机〔halt〕或者重新开机〔reboot〕过程中做了哪些动作﹐你可以在这个文件/etc/inittab里看到这些runlevels相关的资料。

shutdown 参数说明:

[-t] 在改变到其它runlevel之前﹐告诉init多久以后关机。

[-r] 重启计算器。

[-k] 并不真正关机﹐只是送警告信号给每位登录者〔login〕。

[-h] 关机后关闭电源〔halt〕。

[-n] 不用init﹐而是自己来关机。不鼓励使用这个选项﹐而且该选项所产生的后果往往不总是你所预期得到的。

[-c] cancel current process取消目前正在执行的关机程序。所以这个选项当然没有时间参数﹐但是可以输入一个用来解释的讯息﹐而这信息将会送到每位使用者。

[-f] 在重启计算器〔reboot〕时忽略fsck。

[-F] 在重启计算器〔reboot〕时强迫fsck。

[-time] 设定关机〔shutdown〕前的时间。

2.halt----最简单的关机命令

其实halt就是调用shutdown -h。halt执行时﹐杀死应用进程﹐执行sync系统调用﹐文件系统写操作完成后就会停止内核。

参数说明:

[-n] 防止sync系统调用﹐它用在用fsck修补根分区之后﹐以阻止内核用老版本的超级块〔superblock〕覆盖修补过的超级块。

[-w] 并不是真正的重启或关机﹐只是写wtmp〔/var/log/wtmp〕纪录。

[-d] 不写wtmp纪录〔已包含在选项[-n]中〕。

 

[-f] 没有调用shutdown而强制关机或重启。

[-i] 关机〔或重启〕前﹐关掉所有的网络接口。

[-p] 该选项为缺省选项。就是关机时调用poweroff。

3.reboot

reboot的工作过程差不多跟halt一样﹐不过它是引发主机重启﹐而halt是关机。它的参数与halt相差不多。

4.init

init是所有进程的祖先﹐它的进程号始终为1﹐所以发送TERM信号给init会终止所有的用户进程﹑守护进程等。shutdown 就是使用这种机制。init定义了8个运行级别(runlevel),init 0为关机﹐init 1为重启。关于init可以长篇大论﹐这里就不再叙述。另外还有telinit命令可以改变init的运行级别﹐比如﹐telinit -iS可使系统进入单用户模式﹐并且得不到使用shutdown时的信息和等待时间。
三.系统打包命令
在Unix/Linux系统中,是先通过cpio或tar将众多的文件打包成一个文件库后,再用compress将文件库压缩来达到目的的。下面分别以cpio和tar来说明使用的方法和步骤。


1.文件或目录打包。

打包有如下多种情况:
A)含子目录打包:

find /usr/lib -print|cpio -o〉/u0/temp1.cpio

将/usr /lib目录下的文件与子目录打包成一个文件库为/u0/temp1.cpio。

若通过-o选项来打包整个目录下的所有文件与子目录,常先利用find目录名-print来找出所有文件与子目录的名称,通过管道“|”传给cpio打包。

B)不含子目录的打包:

ls /usr/lib|cpio -o〉/u0/temp1.cpio

将/usr/lib目录下的文件(不含子目录下的文件)打包成一个文件库为/u0/temp1.cpio。

C)特定文件打包:

可利用文本搜索命令grep与管道配合,可以排除或选择特定类型的文件传给cpio打包。如:ls /usr/lib/*.c|cpio -o〉/u0/temp1.cpio

或ls /usr/lib|grep ′.c$′|cpio -o〉/u0/temp1.cpio

意思均为找出/usr/lib目录下以.c结尾的文件予以打包。

又如:ls /usr/lib|grep abcd|cpio -o〉/u0/temp1.cpio ,其意为找出/usr/lib目录下文件名中含有abcd字符的文件予以打包。

ls /usr/lib|grep -v abcd|cpio -o〉/u0/temp1.cpio,其意为找出/usr/lib目录下文件名中不含 abcd 字符的文件予以打包。-v选项在grep命令中的意思是排除含有字符串的行列。



2.压缩:

compress /u0/temp2.tar
压缩为/u0/temp2.tar.Z

3.解压:

uncompress /u0/temp2.tar.Z
则还原为/u0/temp2.tar。

4.解包展开:

tar -xvf /u0/temp2.tar

若以相对路径打包的,解包时,以相对路径存放展开的文件数据;若以绝对路径打包的,解包时,以绝对路径存放展开的文件数据。

若指定展开的文件名,须注意文件的目录路径。

5.显示:

tar -tvf /u0/temp2.tar 显示文件库内的文件名称。当指定

文件名时,亦须注意文件的路径。

相对来说这两个命令各有优缺点。

1)tar速度比cpio慢,且不能跨越两份存储媒体,但文件格式几乎在所有的Unix系统中都能通用,且使用简便。

2)cpio则由于可通过管道功能,使得其打包时的文件选择、排除功能非常强,且能跨越多份媒体,并能备份特殊的系统文件。

另外,压缩命令compress比DOS下的Pkzip的压缩率要低些。经测试,在一个目录下527个文本文件共15.7MB,在Unix打包后用compress压缩,大小为 2.1MB;相同的文件拷到DOS系统用Pkzip压缩,则大小为1.4MB。
四.系统备份常用命令
Unix/Linux系统在多数情况下都是运行在服务器环境下的,在服务器上数据就是至关重要,需要格外重视的财产。所以,数据的保护——备份就成了每一个服务器管理员每天的必修课。

vdump的常用方式:

1). 对于文件需要在只读方式下备份的文件,建议进入单用户:

# init s 或

>>>boot –fl s


2). 对操作系统各MOUNT点进行备份


3). # mount -a

# vdump -0uvf /dev/ntape/tape0_d1 /

# vdump -0uvf /dev/ntape/tape0_d1 /usr

# vdump -0uf /dev/ntape/tape0_d1 /var (如过var区是做为单独的文件子集也需要单独备份)


-f : 设备文件名 ( 比如 DDS tape driver)

-u : 更新/etc/vdumpdates,用于增量备份

- v: 备份内容详细列表

- 0 : 零级备份

/dev/ntape0_d1: 系统执行完毕后,磁带停止在当前位置,可继续往下备份

/;/usr;/var : 各文件系统的MOUNT点


4). 其他说明

a、该命令方式对系统当前mounted的文件系统进行备份

b、备份级别说明

备份级别有0~9个级别,如果当前系统采用零级备份,当下一次采用5级备份时,系统仅将会对有变化的文件进行备份。




系统恢复常用命令--vrestore

恢复整个操作系统各文件系统的内容:


1). 准备工作:

a. 准备一个可用的新硬盘,容量大小和原盘基本相符。

b. 准备一套与备份系统相同版本的安装光盘


2). 用操作系统安装光盘启动到安装界面,调整新硬盘各分区大小后进入单用户。

* >>>boot dqa0 (dqa0 为SRM下的光驱设备号)

* 按正常安装步骤选着OK—》NEXT—》NEXT---》NEXT—NEXT---NEXT-CUSTOMIZE FILE SYSSTEM LAYOUT(调整分区大小)--》QUIT OR SHELL WINDOW。

* 注意:在调整新硬盘分区时一定要在引导块上选择ADVFS,并定义B区为SWAP


3). 创建操作系统的各文件系统。(如系统新盘为 dsk0)

mkfdmn /dev/disk/dsk0a root_temp ( 创建文件系统域)

mkfset root_temp root (创建文件子集)

mkfdmn /dev/disk/dsk0g usr_temp

mkfset usr_temp usr

mkfset usr_temp var (条件:在原系统中VAR为单独的文件子集)

注:在高

级文件系统创建过程中,域名只要不和原来冲突,命名是任意的。但对文件子集命名方面最好和原来一致。(以避免不必要的修改工作)


4). 操作系统各文件系统的的恢复

#mount root_temp#root /mnt

#cd /mnt

#vrestore -xvf /dev/ntape/tape0_d1 (恢复该文件系统上所有数据)

#cd /

#umount /mnt

#mount usr_temp#usr /mnt

#cd /mnt

#vrestore -xvf /dev/ntape/tape0_d1

#cd /

#umount /mnt

#mount usr_temp#var /mnt (条件:VAR为单独的文件子集)

#cd /mnt

#vrestore -xvf /dev/ntape/tape0_d1


-f: 设备文件名

-x: 恢复磁带当前备份数据段上的所有数据

- v: 备份内容详细列表


5). 如果恢复硬盘与备份盘在系统中设备名的不同(如:备份盘为dsk0,恢复盘为dsk1)需要做以下修改:


#mount root_temp#root /mnt

#cd /mnt/etc/fdmns

#cd root_domain

#rm *

#ln –s /dev/disk/dsk1a

#cd ..

#cd usr_domain

#rm *

#ln –s /dev/disk/dsk1g

#cd /mnt/etc

#vi sysconfigtab

将swapdevice=/dev/disk/dsk0b修改为swapdevice=/dev/disk/dsk1b


6). SHUTDOWN系统,在SRM下,用新盘引导


恢复文件系统中某些目录或文件:

#vrestore –if /dev/ntape/tape0_d1

(/) add vmunix genvmunix (在系统根区备份中只恢复vmunix和genvmunix两个文 件)

(/) extract (开始恢复)

对个别或若干个目录单独恢复同上


操作磁带机需要注意的几个问题


磁带机在备份过程中是分段记录的,在恢复时一定考虑磁带的位置问题。按上 述备份例子,在数据带上一共创建了3段独立的数据备份信息(/;/usr;/var)。以下命令可调整数据带的位置。


#mt rewind (磁带机回卷磁带到初始位置)

需要单独恢复/usr文件系统或个别文件信息:

#mt rewind

#mt fsf 1 ( 跳过第一个数据备份段 / )

如果以上需求发生在/var上则:

#mt rewind (跳过前两个数据备份段)

#mt fsf 2
五.系统内存管理命令
unixLinux的内存管理,实际上跟windows的内存管理有很相像的地方,都是用虚拟内存这个的概念,说到这里不得不骂MS,为什么在很多时候还有很大的物理内存的时候,却还是用到了pagefile. 所以才经常要跟一帮人吵着说Pagefile的大小,以及如何分配这个问题,在Linux大家就不用再吵什么swap大小的问题,我个人认为,swap设个512M已经足够了,如果你问说512M的SWAP不够用怎么办?只能说大哥你还是加内存吧,要不就检查你的应用,是不是真的出现了memory leak. 夜也深了,就不再说废话了。

在Linux下查看内存我们一般用命令 free;

[root@nonamelinux ]# free total used free shared buffers cached;

Mem: 386024 377116 8908 0 21280 155468;

-/+ buffers/cache: 200368 185656;


Swap: 393552 0 393552;

下面是对这些数值的解释:

total:总计物理内存的大小。

used:已使用多大。

free:可用有多少。

Shared:多个进程共享的内存总额。

Buffers/cached:磁盘缓存的大小。

第三行(-/+ buffers/cached):

used:已使用多大。

free:可用有多少。

第四行就不多解释了。

区别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是8908KB,已用内存是377116KB,其中包括,内核(OS)使用+Application(X,oracle,etc)使用的+buffers+cached.

第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。

所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。

如上例:

185656=8908+21280+155468 接下来解释什么时候内存会被交换,以及按什么方交换。 当可用内存少于额定值的时候,就会开会进行交换。

如何看额定值(RHEL4.0):

#cat /proc/meminfo

交换将通过三个途径来减少系统中使用的物理页面的个数: 

1.减少缓冲与页面cache的大小,

2.将系统V类型的内存页面交换出去, 

3.换出或者丢弃页面。(Application 占用的内存页,也就是物理内存不足)。

事实上,少量地使用swap是不是影响到系统性能的。

下面是buffers与cached的区别。

buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages. cached是用来给文件做缓冲。 那就是说:buffers是用来存储,目录里面有什么内容,权限等等。而cached直接用来记忆我们打开的文件,如果你想知道他是不是真的生效,你可以试一下,先后执行两次命令#man X ,你就可以明显的感觉到第二次的开打的速度快很多。

实验:在一台没有什么应用的机器上做会看得比较明显。记得实验只能做一次,如果想多做请换一个文件名。

#free
#man X
#free
#man X
#free

你可以先后比较一下free后显示buffers的大小。

另一个实验:

#free
#ls /dev
#free

你比较一下两个的大小,当然这个buffers随时都在增加,但你有ls过的话,增加的速度会变得快,这个就是buffers/chached的区别。
六.UNIX系统常用管理命令资料汇总(上)
对于unix系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用

户等都是文件,UNIX系统管理的命令是它正常运行的核心本文主要是针对UNIX系统管理员,以SUN SOLARIS 2.6 系统为例,列举了一些UNIX常用的管理命令的使用及其使用中遇到的问题和解决方法,供大家参考。

下面是常用系统管理命令介绍:
1. share 和 mount 命令

这是系统管理员常用的两个命令,share命令用于把本机的目录共享出来,以便其它UNIX系统可以使用;mount命令则用于把其它UNIX系统共享出来的目录挂接到本机的挂接点上,从而可以使用其它UNIX系统的资源。 例如:
在机器A上输入 machineA# share -F nfs -o rw /share-dir
在机器B上输入 machineB# mount -F nfs machineA:/share-dir /mount-point
第一条命令把机器A的 share-dir 目录共享出来,并且共享的权限是可读写;
第二条命令把机器A的共享目录挂接到机器B的 mount-point 目录上。
完成这两个命令后,用户在机器B上通过对mount-point的访问就可以操作机器A上的
share-dir目录了。

但是有时我们操作时,在机器B上执行了mount命令后,会返回
"RPC: Program not registered"这样的错误,这是因为在机器A上缺少mountd和nfsd 这两个守护进程(daemon)。UNIX系统启动时,系统会自动检查/etc/dfs/dfstab文件,如果文件中有要共享的资源,则启动这两个守护进程,反之,则不启动。所以如果我们在/etc/dfs/dfstab中没有内容,则系统不能启动mountd和nfsd这两个守护进程,用share命令共享的目录也不能真正被别的系统共享。

解决这个问题的方法很简单,我们可以把要共享的目录放入/etc/dfs/dfstab中,则下一次系统启动时会自动共享这个目录;另外,我们也可以手动启动这两个守护进程,方法是首先用超级用户(root)登陆,在命令行输入如下命令:
machine_A# /etc/rc3.d/S15nfs.server start
或输入:
machine_A# /usr/lib/nfs/mountd
machine_A# /usr/lib/nfs/nfsd -a 16
就可以启动这两个守护进程了。

守护进程启动后,共享目录才真正被共享出去,这时再在机器B上用mount命令就可以把机器A的目录挂接到机器B上了。

2. quota 系列命令

UNIX作为一种多用户系统,它允许多个用户共同使用系统的资源,包括系统的内存,CPU和硬盘。在默认情况下,系统并不会限制每个用户可以使用硬盘空间的大小,所以如果用户恶意使用硬盘,或用户由于疏忽,将硬盘空间全部占用,将导致其他用户无法使用硬盘,从而使系统性能下降,甚至有崩溃的危险。

其实,UNIX提供的quota系列命令可以帮助我们解决这个问题,这些命令包括:
quota : 显示用户的硬盘限额和使用情况。
edquota : 为每个用户设定硬盘限额。
quotaon: 启动文件系统硬盘限额服务
quotaoff : 关闭文件系统硬盘限额服务
repquot

a : 显示当前硬盘限额状态
配置这项服务的方法很简单。但在使用硬盘限额服务之前,我们要明白硬限制和软限制这两个概念。所谓硬限制是指对资源节点和数据块的绝对限制,在任何情况下都不允许用户超过这个限制;而软限制是指用户可以在一定时间范围内(默认时为一周,在/usr/include/sys/fs/ufs_quota.h文件中设置)超过软限制的额度,在硬限制的范围内继续申请资源,同时系统会在用户登录时给出警告信息和仍可继续申请资源剩余时间。如果达到时间期限,用户的硬盘使用仍超过软限制的额度,则系统将不允许用户再申请硬盘资源。

明白了这两个概念,我们就可以配置硬盘限额服务了,首先我们必须在要限制的文件系统的根目录下建立一名字为quotas的文件,该文件的所有者应是root,且其它用户不可以对它进行写操作。方法是:
# cd /home (进入文件系统根目录,注意并不是系统根目录,本例为/home目录)
# touch quotas (创建一名字为quotas的空文件)
# chmod 644 quotas (更改文件属性,使只有root可以对它进行写操作)

然后,我们编辑/etc/vfstab文件,找到要进行硬盘限额服务的文件系统,并将
mount option字段的值设为rq,然后并存盘退出。

完成这两步后,我们使用edquota命令为每个用户设置硬盘限额,在root权限下输入以下命令:
#edquota username
这时系统会自动生成一个临时文件,并且有如下内容:
fs /users blocks (soft = 0, hard = 0) inodes (soft = 0, hard = 0)
其中fs字段表明使用硬盘限额的文件系统,本例为/users,block和inodes表明用户可以使用的硬盘千字节数和I节点数,即用户可使用的硬盘空间和可建立的文件数,soft和hard分别对于前面提及的软限制和硬限制。

编辑这个文件,把软,硬限制设置到合适的数值,然后存盘退出。这时我们可以看到quotas文件的大小已经被改变,说明用户的限额已经储存。重复这条命令,给每一个用户都配置硬盘限额。另外,如果我们分配给用户的硬盘限额都相同,我们可以使用 "-p" 参数而不用为每个用户都编辑一个文件,它的使用方法是:
#edquota -p reference-username username

编辑完文件后,我们就可以用quotaon来启动服务了,在root权限下输入
#quotaon /users
就可以启动限额服务。如果我们要查看各个用户的当前使用情况,可以使用
repquota 命令,在root权限下输入:
#repquota /users
系统会显示:


从中我们可以很容易看到用户的硬盘和文件的使用情况以及超过软限制后仍可申请资源的时间等等。

当然我们可以用quotaoff取消硬盘限额服务。另外,系统还提供quotacheck 命令对限额的一致性进行检查。

3. ifconfig命令

ifconfig命

令用于查看和更改网络接口的地址和参数,如果要显示某台UNIX主机的IP地址,我们可以在命令行下输入:
$ifconfig -a
系统会显示网络接口的名称,接口的状态(up or down),接口的IP地址和掩码等信息。

如果我们要更改网络接口的IP地址,可以在root权限下输入:
#ifconfig hme0 down
#ifconfig hme0 202.1.2.3 netmask 255.255.255.0 up
首先,使用down命令参数把网络接口hme0的服务暂时停止,然后再用ifconfig命令给接口分配新的IP地址和掩码,并启动网络接口服务。本例中把hme0接口的IP地址设为202.1.2.3,掩码为255.255.255.0。

我们也可以通过改变文件/etc/hosts中的IP地址的值并重新启动系统来更改机器的IP地址。

在系统启动时,网络接口服务时自动被启动的,我们不需要手动地创建网口服务,但有时我们更改了网卡或增加了网卡后,系统不能自动启动该接口服务,这时我们需要手动创建网口服务,在root权限下输入:
#ifconfig hme0 plumb
即可以为接口le0创建网口服务。
相应地,用ifconfig带unplumb参数可以停止服务并关闭网络接口,这时我们再用ifconfig -a 命令将看不到该网络接口。
七.UNIX系统常用管理命令资料汇总(下)
对于unix系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,UNIX系统管理的命令是它正常运行的核心本文主要是针对UNIX系统管理员,以SUN SOLARIS 2.6 系统为例,列举了一些UNIX常用的管理命令的使用及其使用中遇到的问题和解决方法,供大家参考。

4. format命令
format也是一个重要的系统管理命令,但由于它的破坏性极大,使用时一定要小心。format命令主要有两个用途,即格式化硬盘和重新对硬盘分区,下面分别加以说明:
1) 格式化硬盘
和DOS一样,UNIX的硬盘在使用之前也需要格式化,在对它格式化之前,我们要用单用户形式重启动系统
#reboot -s
启动后用root用户登录,然后在命令行下输入:
#format
系统会显示所有的硬盘并让我们选择要格式化的硬盘:

本例中系统有两个SUN2.1G的硬盘,我们选择1并回车,系统会显示如下菜单:

在提示符下输入type来选择硬盘类型,系统会列出它支持的硬盘类型,选择合适的硬盘类型并输入相应的代码(也可以输入0让系统自动检测)。选择完硬盘类型后,就可以配置硬盘分区,有关分区的具体操作请参见"2)重新分区"一节。

配置结束后,输入format命令进行格式化,这将花费一定的时间,具体时间的长短受机器型号和硬盘大小的影响。格式化完成后,就可以输入quit命令退出了。

硬盘格式化后,并不能立即被使用,我们还需要在上面创建文件系统,使用命令newfs来为每一个分

区创建文件系统:
#newfs /dev/rdsk/c0t1d0s0
#newfs /dev/rdsk/c0t1d0s1

参数的具体数值根据分区的情况来设置。

另外,如果该硬盘包含启动分区(根分区),我们需要手动安装启动模块,安装之前首先要有UNIX系统安装光盘,我们通过光盘启动后,将系统根分区挂接上,并从光盘安装启动模块,具体方法如下:
#reboot cdrom -s (从光盘启动,并进入单用户模式)
#mount /dev/dsk/c0t1d0s0 /mnt (将系统根分区挂接到mnt目录下)
#cp /ufsboot /mnt
#installboot /lib/fs/ufs/bootblk /dev/rdsk/c0t1d0s0 (安装启动模块)
#umount /mnt (卸下挂接)
#reboot (重启动)

至此,硬盘的格式化操作已经完成,我们可以使用该硬盘了。
2) 重新分区
format命令也可以对硬盘进行重新分区。重新分区后,受影响分区上的所有文件将被清除,所以在进行这个操作前,我们应注意要先对文件系统进行备份。重新分区的具体方法如下:
首先我们要进入单用户形式,并用root用户登录,然后在命令行下输入:
#format
系统会显示所有的硬盘并让我们选择硬盘: 我们选择0并回车,系统会显示如下菜单:
输入partition,再输入modify,回车,系统提示用户选择分区基础(partitioning base) ,选择1,回车,系统会显示:

我们把分区6作为自由分区,这意味如果其它分区大小变化,自由分区6用来作为硬盘空间的积累或减少。然后按系统要求输入期望的分区值,format会自动调整分区柱面边界,使各个分区之间没有空隙。回车确认该分区表,并给该分区表命名,确认后退出format 命令。
分区结束后,我们要用newfs命令为改变的分区创建文件系统
# newfs /dev/rdsk/c0t0d0s6
然后将备份的文件拷回,完成硬盘分区的更改工作。

这里要再一次提到的是,format命令具有极大的破坏性,很容易导致数据丢失,甚至系统崩溃,所以在使用它的时候一定要小心。

5. fsck命令
fsck命令也是一个经常使用的命令,它用于对文件系统进行检查,并对损害的文件系统进行修复。

fsck的语法如下:
fsck (-F fstype) (-v) (-m) (-special…)
fsck (-F fstype) (-v) (-y|Y|n|N) (-o fstype options) (special…)
其中:
-F fstype : 说明被检查的文件系统的类型
-v : 返回完成的命令行,但不运行
-y|Y: 对所有问题均回答Yes
-n|N: 对所有问题均回答No
-m: 对文件系统进行检查,不修复文件系统,如果文件系统经检查后是可安装
的,则显示 ufs fsck : sanity check : /dev/rdsk/c0t0d0s0 okay.
-o: 文件系统类型选项,选项由逗号分隔,最常用的选项有两个:
P: 整理(preen)模式
F: 强制检查模式,此选项忽略文件系统状态标志。

运行fsck后,该命令会分6个阶段对文件系统进行检查,这六个阶段分别是:

阶段1: 检查块和块的大小
阶段2: 检查路径名
阶段3: 检查连接性
阶段4: 检查参考记数
阶段5: 检查自由块列表
阶段6: 补救自由块列表

fsck在对每个阶段进行检查时,如果发现错误,会提示用户进行修改,常见的一些错误有:
1) 移去一个没有相关文件的目录入口

这时用户可以回答Yes或Y来删除该目录入口。
2) 重连接一个已分配但不能访问的文件:
fsck找到了一个已分配的I节点,但却不可访问(该节点没与任何目录连接),这时一般对fsck的"RECONNECT?"回答Yes,即把该I节点连接到lost+found目录下,文件名即是I节点号,之后管理员应检查该文件类型,判明该文件用途,再将该文件拷贝到相应目录下。


3) 连接数调整
在交互方式下,fsck若发现连接数不一致,将询问用户采取何种行动,本例发现一目录的I节点连接数与该目录的真实连接数不一致。 这时用户应该回答Yes或Y来改正连接数。

4) 自由块表不一致
fsck查出未分配块数与超级块中所给出的自由块表不一致。这时用户应该回答Yes或Y来修正超级块。从上面的出错信息和处理方法可以发现,对于fsck询问的问题大多数情况下都可以用Yes来回答,所以在实际应用时,可以用" -y"选项来执行该命令对硬盘进行检查和修复。

6. route命令
route命令主要用于手动配置静态路由表。例如我们要增加一条通过网关到达令一子网的路由,命令如下:
#route add net remote_net_ip gateway_ip 1
其中add代表要增加路由,net表示路由到达的是一个网络而不是一台主机,1代表远端网络需通过网关才能到达,而不是直接与它相连(直接通过网络接口相连时,该参数用0)。

在Solaris 2.6 中,也可以使用如下命令:
#route add -net remote_net_ip gateway_ip -netmask netmask
#route add -host host_ip local_interface_ip -interface
其中第一条命令与上面介绍的命令完成相同的任务,而第二条命令则代表要建立一条通过网络接口到达另一台主机的路由。

当然,我们使用"delete","change"命令参数可以对路由表中的路由信息进行删除和修改。
执行完route命令后,我们可以?quot;netstat -rn"命令查看当前的路由信息:

从路由表中可以知道当前共有5条路由,其中到达224.0.0.0和127.0.0.1的路由分别是广播路由和本地路由,是由系统默认设置的。到达主机202.77.111.22的路由是通过本机网络接口连接的,到达网络202.77.112.0的路由则是通过网关202.77.111.1连接的。
通过route配置路由表后,该路由信息会一直保存到下次系统重启。系统重启后,则要重新配置路由表。通过修改文件/etc/defaultrouter可以设置一些默认路由,这些路由在系统每次启动时都会被加到路由表中,

而不必每次启动都用route命令来配置路由表。/etc/defaultrouter文件的格式如下:
$cat /etc/defaultrouter
202.77.111.1
该文件中现在只有一条默认路由,IP地址是202.77.111.1,这代表系统将把所有不属于本地的数据包都通过网关202.77.111.1发送出去。
有时UNIX系统安装完成后,/etc目录下并不存在defaultrouter文件,这时我们可以手工创建该文件,并编辑好默认路由,然后重启。系统启动后,就会自动使用配置好的默认路由信息了。

三. UNIX系统管理常见问题及解决方法
1. 忘记root 密码

root用户又被称为超级用户,它是权限最高的用户,一旦它的密码被忘记,将给系统的维护和管理带来很多困难,下面是忘记root密码时的处理方法:

首先,我们需要从CD-ROM 启动系统,命令是:
#boot cdrom -s

系统启动后,我们要把硬盘根分区挂接到光盘文件系统的/mnt目录上,执行:
#mount /dev/dsk/c0t0d0s0 /mnt
(该例假设根文件系统是/c0t0d0s0)
编辑硬盘根分区的shadow文件,将root的密码项位置设为空。
#cd /mnt/etc
#vi shadow

注意,有的系统要编辑/etc/passwd 文件而不是/etc/shadow文件。

改完文件后,将挂接的根文件系统卸下。
#umount /mnt

重新启动系统,并设置新的root密码。
2. 系统无法启动
系统无法启动的原因大致如下:
1) 错误的引导设备
假如因为指定了错误的引导设备使系统不能引导,我们可以在PROM监控等级下利用"probe-scsi","probe-scsi-all"和"probe-ipi"命令来查看有什么设备被连
到系统上,并得到启动设备的devalias名。进入PROM的方法是当系统启动时,同时按下"STOP"键和"a"键, 这时系统出现提示符ok>,即表明系统当前处于PROM
监控等级。

用printenv显示当前配置情况,如果发现引导设备不正确,可用setenv来重新设置:
ok>setenv boot-device devalias

用reset命令重新启动系统,或set-defaults 恢复缺省值。

2) 缺少重要的系统文件,或文件无效
这时可以用"-a"选项来引导系统,系统将提供交互式的引导过程,如果有找不
到文件时,系统会提示用户给出适当的文件名。

3) 缺少关键的系统文件,或文件无效
例如缺少/etc/passwd文件,这时系统可能会引导,但是没有任何用户可以注册。修复方法是用光盘启动,挂接根文件系统并编辑/etc/passwd文件。

4) 无法挂接远程文件系统
系统启动时,会自动执行/etc/vfstab文件,如果在文件中有无法挂接的远程文件系统,则系统会一直处于等待和重试状态,无法进入登录界面。解决办法是用单用户启动,编辑/etc/vfstab文件,删除错误的挂接内容。
3. 键盘失效

如果出现键盘失效的情况,即用户在键盘上输入信息而屏幕上没有响应,首先要检查

硬件的连接,即查看键盘与主机的连接是否完好,连接导线是否有折断或损害情况。
如果硬件连接没有问题,则查看是否不小心使用了锁屏命令。方法是,按下"Ctrl+q"键,如果系统有响应,则说明是因为用户按下了"ctrl+s"键将屏幕暂时锁住的原因。锁住后的屏幕将不显示用户从键盘输入的信息,但输入的信息依然能够执行。
如果系统仍没有响应,我们则要重新启动系统,进入PROM状态,输入printenv命令,并查看input device项的值,如果它的值不是keyboard,用
ok>setenv inputdevice keyboard
来使键盘成为输入设备,然后再次重启系统,这时系统将会响应用户的输入了。

4. cron 或 at 命令不能执行

UNIX系统并不允许任何用户都可使用cron进行作业调度,对用户的限制有两个文件,它们是/etc/cron.d/cron.allow和/etc/cron.d/cron.deny。
如果用户名被添加到/etc/cron.d/cron.allow文件中,则该用户被允许使用cron,而不在该文件中的用户则不允许使用,如果用户被添加到/etc/cron.d/cron.deny中,则该用户不能使用cron,其它用户则可以使用cron。通常我们根据需要配置其中一个文件就可以了。
如果用户被允许使用cron,则可以用命令
$crontab myCronFile
在系统的/var/spool/cron/crontabs目录中安装自己的作业调度控制文件。
at 和 cron 相似,要使用at, 需要配置/etc/cron.d/at.allow或/etc/cron.d/at.deny文件。

5. 在Telnet时不能用root登录

在默认情况下,出于安全性考虑,UNIX系统不允许在系统操作台(console) 以外的终端用root登录,所以有时我们通过Telnet用root登录时,会返回
"not on system console"
这样的错误,这时,我们可以通过修改/etc/default/login文件来允许root通过Telnet登录。具体方法是,编辑login文件,找到下面的一行:
CONSOLE=/dev/console
将这一行注释掉,即在行首加上"#"符,存盘退出,再次使用Telnet时,root就可以登录了。
6. 关于目录的访问权限

我们都知道UNIX系统中的每一个文件都有相应的访问权限,系统根据该权限来控制用户对文件的访问,UNIX系统中的目录也有相应的访问权限,但它的定义与文件有些不同。

读权限:
对目录的读权限表示用户可以查看该目录的内容,即可以对该目录使用象"ls"这样的命令。

写权限:
对目录的写权限表示用户可以在该目录下建立新文件或将其中的文件删除,不论此时用户对该文件是否有写权限。

执行权限:
执行权限指用户可以在该目录下搜索文件,也即可以使用该目录下具有相应访问权限的文件。

四. 总结
以上介绍的管理维护命令只是UNIX系统维护管理命令的极少的一部分,UNIX还提供了其它很多有用的命令,这需要我们在工作中不断的

学习和研究。







相关文档
最新文档