unix常用命令.docx
《unix常用命令.docx》由会员分享,可在线阅读,更多相关《unix常用命令.docx(28页珍藏版)》请在冰点文库上搜索。
![unix常用命令.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/770cab29-e585-4b66-a831-b65669c7e7c4/770cab29-e585-4b66-a831-b65669c7e7c41.gif)
unix常用命令
零入门级SHELL命令
1.man对你熟悉或不熟悉的命令提供帮助解释
举例:
#manls//就可以查看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拷贝文件
举例:
#cpfilename1filename2//把filename1拷贝成filename2
#cp1.cnetseek/2.c//将1.c拷到netseek目录下命名为2.c
4.rm删除文件和目录
举例:
#rm1.c//将1.c这个文件删除
5.mv移走目录或者改文件名
举例:
#mvfilename1filename2//将filename1改名为filename2
#mvqib.tgz../qib.tgz//移到上一级目录
6.cd改变当前目录pwd查看当前所在目录完整路径
举例:
#pwd//查看当前所在目录路径
#cdnetseek//进入netseek这个目录
#cd//退出当前目录
7.cat,more命令
将某个文件的内容显示出来。
两个命令所不同的是:
cat把文件内容一直打印出来,而more则分屏显示
举例:
#cat>1.c//就可以把代码粘帖到1.c文件里,按ctrl+d保存代码。
#cat1.c或more1.c//都可以查看里面的内容。
#gcc-o11.c//将1.c编译成.exe文件,我们可以用此命编译出代码。
8.chmod命令权限修改用法:
chmod一位8进制数filename。
举例:
#chmodu+xfilenmame//只想给自己运行,别人只能读//u表示文件主人,g表示文件文件所在组。
o表示其他人;r表可读,w表可写,x表可以运行
#chmodg+xfilename//同组的人来执行
9.clear,date命令
#clear:
清屏,相当与DOS下的cls;date:
显示当前时间。
10.mount加载一个硬件设备
用法:
mount[参数]要加载的设备载入点
举例:
#mount/dev/cdrom
#cd/mnt/cdrom//进入光盘目录
11.su在不退出登陆的情况下,切换到另外一个人的身份
用法:
su-l用户名(如果用户名缺省,则切换到root状态)
举例:
#su-lnetseek(切换到netseek这个用户,将提示输入密码)
12.whoami,whereis,which,id
whoami:
确认自己身份
whereis:
查询命令所在目录以及帮助文档所在目录
which:
查询该命令所在目录(类似whereis)
id:
打印出自己的UID以及GID。
(UID:
用户身份唯一标识。
GID:
用户组身份唯一标识。
每一个用户只能有一个唯一的UID和GID)
举例:
#whoami//显示你自已登陆的用户名
#whereisbin显示bin所在的目录,将显示为:
/usr/local/bin
#whichbin
13.grep,find
grep:
文本内容搜索;find:
文件或者目录名以及权限属主等匹配搜索
举例:
#grepsuccess* /*查找当前目录下面所有文件里面含有success字符的文件
14.kill可以杀死某个正在进行或者已经是dest状态的进程
举例;#psax
15.passwd可以设置口令
16.history用户用过的命令
举例:
#history//可以显示用户过去使用的命令
17.!
!
执行最近一次的命令
18.mkdir命令
举例:
#mkdirnetseek//创建netseek这个目录
19.tar解压命令
举例:
#tar-zxvfnmap-3.45.tgz//将这个解压到nmap-3.45这个目录里
20.finger可以让使用者查询一些其他使用者的资料
举例:
#finger//查看所用用户的使用资料
#fingerroot//查看root的资料
一.用来发送消息的命令
1.使用write命令
用户可以使用write命令给其他在线用户发送消息。
格式:
#writeusername[tty]
在Shell提示符号输入write,username指接受发送信息的用户名。
如果一个用户多次登录到系统,tty参数指定要发送的终端。
使用write发送信息的前提条件是该用户已经登录到系统。
否则会出现以下提示:
#writecjh
write:
cjhisnotloggedin
可以使用who命令查询登录用户名称。
接着可以输入要发送的信息。
当输入完毕后,键入EOF表示信息结束,用Crtl+D组合键发送信息。
输入内容会出现在用户的屏幕上,同时通信中止。
如果在网络上可以使用write命令在username后加入主机名称或域名,建立网络通信。
如果要和cao主机上的bj用户通信使用命令:
#writebj@cao
可以使用rusers命令列出所有局域网上的登录用户。
2.wall命令
如果想要发送一条信息给系统中所有用户,可以使用wall命令,wall表示:
writeall。
输入wall,然后编辑信息,如果shell支持可以使用中文。
然后使用Crtl+D组合键发送信息。
这样系统所有登录用户的桌面会收到信息。
如果在网络上,可以使用rwall命令把信息发送到局域网上所有的用户。
3.talk命令
talk命令可以和另一个登录系统用户实现双向对话。
系统管理员输入信息,用户也可以输入自己的信息。
双方都可以看到交流时的屏幕信息。
格式:
#talkusername
一个例子:
#talkb
对方屏幕显示:
MessagefromTalk_Daemon@at7:
18...
talk:
connectionrequestedbyb@.
talk:
respondwith:
talkb@
然后进入talk分屏界面,双方输入的信息。
会出现的对方的屏幕。
用户完成会话后使用Crth+C断开连接。
和write一样可以使用在username后加入主机名称或域名,建立网络会话连接。
4.mesg命令
用户可以阻止其他用户给自己发送消息打断工作,使用mesgn命令禁止其他用户发送消息。
当别人试图再使用write给他发送信息时,发送者将会看见提示:
#write:
userhasmessagesdisabledonpts/n?
但是超级用户可以给任何用户发送消息,即使用户使用mesgn命令。
要恢复接受信息输入:
#mesg–y
二.系统关机/重启命令
1.shutdown
shutdown命令安全地将系统关机。
有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的。
因为linux与windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失﹐使系统处于不稳定的状态﹐甚至在有的系统中会损坏硬件设备。
而在系统关机前使用shutdown命令﹐系统管理员会通知所有登录的用户系统将要关闭。
并且login指令会被冻结﹐即新的用户不能再登录。
直接关机或者延迟一定的时间才关机都是可能的﹐还可能重启。
这是由所有进程〔process〕都会收到系统所送达的信号〔signal决定的。
这让像vi之类的程序有时间储存目前正在编辑的文档﹐而像处理邮件〔mail〕和新闻〔news〕的程序则可以正常地离开等等。
shutdown执行它的工作是送信号〔signal〕给init程序﹐要求它改变runlevel。
Runlevel0被用来停机〔halt〕﹐runlevel6是用来重新激活〔reboot〕系统﹐而runlevel1则是被用来让系统进入管理工作可以进行的状态﹔这是预设的﹐假定没有-h也没有-r参数给shutdown。
要想了解在停机〔halt〕或者重新开机〔reboot〕过程中做了哪些动作﹐你可以在这个文件/etc/inittab里看到这些runlevels相关的资料。
shutdown参数说明:
[-t]在改变到其它runlevel之前﹐告诉init多久以后关机。
[-r]重启计算器。
[-k]并不真正关机﹐只是送警告信号给每位登录者〔login〕。
[-h]关机后关闭电源〔halt〕。
[-n]不用init﹐而是自己来关机。
不鼓励使用这个选项﹐而且该选项所产生的后果往往不总是你所预期得到的。
[-c]cancelcurrentprocess取消目前正在执行的关机程序。
所以这个选项当然没有时间参数﹐但是可以输入一个用来解释的讯息﹐而这信息将会送到每位使用者。
[-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),init0为关机﹐init1为重启。
关于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|grepabcd|cpio-o〉/u0/temp1.cpio,其意为找出/usr/lib目录下文件名中含有abcd字符的文件予以打包。
ls/usr/lib|grep-vabcd|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).对于文件需要在只读方式下备份的文件,建议进入单用户:
#inits或
>>>boot–fls
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:
设备文件名(比如DDStapedriver)
-u:
更新/etc/vdumpdates,用于增量备份
-v:
备份内容详细列表
-0:
零级备份
/dev/ntape0_d1:
系统执行完毕后,磁带停止在当前位置,可继续往下备份
/;/usr;/var:
各文件系统的MOUNT点
4).其他说明
a、该命令方式对系统当前mounted的文件系统进行备份
b、备份级别说明
备份级别有0~9个级别,如果当前系统采用零级备份,当下一次采用5级备份时,系统仅将会对有变化的文件进行备份。
系统恢复常用命令--vrestore
恢复整个操作系统各文件系统的内容:
1).准备工作:
a.准备一个可用的新硬盘,容量大小和原盘基本相符。
b.准备一套与备份系统相同版本的安装光盘
2).用操作系统安装光盘启动到安装界面,调整新硬盘各分区大小后进入单用户。
*>>>bootdqa0(dqa0为SRM下的光驱设备号)
*按正常安装步骤选着OK—》NEXT—》NEXT---》NEXT—NEXT---NEXT-CUSTOMIZEFILESYSSTEMLAYOUT(调整分区大小)--》QUITORSHELLWINDOW。
*注意:
在调整新硬盘分区时一定要在引导块上选择ADVFS,并定义B区为SWAP
3).创建操作系统的各文件系统。
(如系统新盘为dsk0)
mkfdmn/dev/disk/dsk0aroot_temp(创建文件系统域)
mkfsetroot_temproot(创建文件子集)
mkfdmn/dev/disk/dsk0gusr_temp
mkfsetusr_tempusr
mkfsetusr_tempvar(条件:
在原系统中VAR为单独的文件子集)
注:
在高级文件系统创建过程中,域名只要不和原来冲突,命名是任意的。
但对文件子集命名方面最好和原来一致。
(以避免不必要的修改工作)
4).操作系统各文件系统的的恢复
#mountroot_temp#root/mnt
#cd/mnt
#vrestore-xvf/dev/ntape/tape0_d1(恢复该文件系统上所有数据)
#cd/
#umount/mnt
#mountusr_temp#usr/mnt
#cd/mnt
#vrestore-xvf/dev/ntape/tape0_d1
#cd/
#umount/mnt
#mountusr_temp#var/mnt(条件:
VAR为单独的文件子集)
#cd/mnt
#vrestore-xvf/dev/ntape/tape0_d1
-f:
设备文件名
-x:
恢复磁带当前备份数据段上的所有数据
-v:
备份内容详细列表
5).如果恢复硬盘与备份盘在系统中设备名的不同(如:
备份盘为dsk0,恢复盘为dsk1)需要做以下修改:
#mountroot_temp#root/mnt
#cd/mnt/etc/fdmns
#cdroot_domain
#rm*
#ln–s/dev/disk/dsk1a
#cd..
#cdusr_domain
#rm*
#ln–s/dev/disk/dsk1g
#cd/mnt/etc
#visysconfigtab
将swapdevice=/dev/disk/dsk0b修改为swapdevice=/dev/disk/dsk1b
6).SHUTDOWN系统,在SRM下,用新盘引导
恢复文件系统中某些目录或文件:
#vrestore–if/dev/ntape/tape0_d1(/)addvmunixgenvmunix(在系统根区备份中只恢复vmunix和genvmunix两个文件)(/)extract(开始恢复)
对个别或若干个目录单独恢复同上
操作磁带机需要注意的几个问题
磁带机在备份过程中是分段记录的,在恢复时一定考虑磁带的位置问题。
按上述备份例子,在数据带上一共创建了3段独立的数据备份信息(/;/usr;/var)。
以下命令可调整数据带的位置。
#mtrewind(磁带机回卷磁带到初始位置)
需要单独恢复/usr文件系统或个别文件信息:
#mtrewind
#mtfsf1(跳过第一个数据备份段/)
如果以上需求发生在/var上则:
#mtrewind(跳过前两个数据备份段)
#mtfsf2
五.系统内存管理命令
unixLinux的内存管理,实际上跟windows的内存管理有很相像的地方,都是用虚拟内存这个的概念,说到这里不得不骂MS,为什么在很多时候还有很大的物理内存的时候,却还是用到了pagefile.所以才经常要跟一帮人吵着说Pagefile的大小,以及如何分配这个问题,在Linux大家就不用再吵什么swap大小的问题,我个人认为,swap设个512M已经足够了,如果你问说512M的SWAP不够用怎么办?
只能说大哥你还是加内存吧,要不就检查你的应用,是不是真的出现了memoryleak.夜也深了,就不再说废话了。
在Linux下查看内存我们一般用命令free;
[root@nonamelinux]#freetotalusedfreesharedbufferscached;
Mem:
3860243771168908021280155468;
-/+buffers/cache:
200368185656;
Swap:
3935520393552;
下面是对这些数值的解释:
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会很快地被回收。
所以从应用程序的角度来说,可用内存=系统freememory+buffers+cached。
如上例:
185656=8908+21280+155468接下来解释什么时候内存会被交换,以及按什么方交换。
当可用内存少于额定值的时候,就会开会进行交换。
如何看额定值(RHEL4.0):
#cat/proc/meminfo
交换将通过三个途径来减少系统中使用的物理页面的个数:
1.减少缓冲与页面cache的大小,
2.将系统V类型的内存页面交换出去,
3.换出或者丢弃页面。
(Application占用的内存页,也就是物理内存不足)。
事实上,少量地使用swap是不是影响到系统性能的。
下面是buffers与cached的区别。
buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及trackingin-flightpages.cached是用来给文件做缓冲。
那就是说:
buffers是用来存储,目录里面有什么内容,权限等等。
而cached直接用来记忆我们打开的文件,如果你想知道他是不是真的生效,你可以试一下,先后执行两次命令#manX,你就可以