- 论坛徽章:
- 0
|
DOS 和 Linux 常用命令的对比
许多在 shell 提示下键入的 Linux 命令都与你在 DOS 下键入的命令相似。事实上,某些命令完全相同。
本附录提供了 Windows 的 DOS 提示下的常用命令以及在 Linux 中与它们等同的命令。附录中还提供了如何在
Linux shell 提示下使用这些命令的简单实例。请注意,这些命令通常有许多选项,要进一步学习每一个命令,请阅读相关的说明书(man)页(例如,在 shell 提示下键入
man ls 就可以读到关于 ls 命令的信息)。
命令的目的MS-DOSLinuxLinux 的简单实例复制文件copycpcp thisfile.txt /home/thisdirectory转移文件movemvmv thisfile.txt
/home/thisdirectory列举文件dirlsls清除屏幕clsclearclear关闭 shell 提示exitexitexit显示或设置日期datedatedate删除文件delrmrm thisfile.txt把输出“回响”到屏幕上echoechoecho this message用简单文本编辑器来编辑文件editgedit(
[a]
)gedit
thisfile.txt比较文件内容fcdiffdiff file1
file2在文件中寻找字串findgrepgrep
词或词组
thisfile.txt格式化软盘format
a:(如果软盘是在 A: 中的话)mke2fs 或
mformat(
)/sbin/mke2fs /dev/fd0(/dev/fd0 是 Linux 中与
A: 等同的驱动器)显示命令帮助命令
/?man(
[c]
)man
命令创建目录mkdirmkdirmkdir 目录查看文件moreless(
[d]
)less
thisfile.txt重新命名文件renmv(
[e]
)mv
thisfile.txt
thatfile.txt显示你在文件系统中的位置chdirpwdpwd用指定的路径(绝对路径,absolute path)来改换目录cd 路径名cd 路径名cd /directory/directory用一个相对路径(relative path)来改换目录cd ..cd ..cd ..显示时间timedatedate显示已被使用的内存数量memfreefree注:
a. Gedit 是图形化文本编辑器;你可以使用其它文本编辑器来代替
Gedit,包括
Emacs 和
vi。
b. 这个命令为 DOS
文件系统格式化软盘。
c. 某些命令你还
可以使用 info。
d. more 分页器也可以用来一个屏幕一个屏幕地在文件中逐页查看。
e. mv
命令可以转移文件或重新命名在同一目录下的文件。如果你想重新命名文件,如例中所示,把这个文件“转移”到同一目录中的新名称。
Linux必學的系统信息查看命令
最近看了一些Linux命令行的文章,在系统信息查看方面学到不少命令。
想起以前写过的一篇
其实Linux这样用更简单
,
发现这些系统信息查看命令也可以总结出一篇小小的东西来了。
另外
这里
还有非常多的命令,
可以作为参考。
系统
# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量
资源
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载
磁盘和分区
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况
网络
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息
进程
# ps -ef # 查看所有进程
# top # 实时显示进程状态
用户
# w # 查看活动用户
# id # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务
服务
# chkconfig --list # 列出所有系统服务
# chkconfig --list | grep on # 列出所有启动的系统服务
程序
# rpm -qa # 查看所有安装的软件包
Linux必学的系统管理命令
Linux必学的系统管理命令
作者:曹元其 发文时间:2004.10.18
对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心。熟悉了Linux常用的文件处理命令以后,这一讲介绍对系统和用户进行管理的命令。
df
1.作用
df命令用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。
2.格式
df [options]
3.主要参数
-s:对每个Names参数只给出占用的数据块总数。
-a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
-k:以1024字节为单位列出磁盘空间使用情况。
-x:跳过在不同文件系统上的目录不予统计。
-l:计算所有的文件大小,对硬链接文件则计算多次。
-i:显示inode信息而非块使用量。
-h:以容易理解的格式印出文件系统大小,例如136KB、254MB、21GB。
-P:使用POSIX输出格式。
-T:显示文件系统类型。
4.说明
df命令被广泛地用来生成文件系统的使用统计数据,它能显示系统中所有的文件系统的信息,包括总容量、可用的空闲空间、目前的安装点等。
超级权限用户使用df命令时会发现这样的情况:某个分区的容量超过了100%。这是因为Linux系统为超级用户保留了10%的空间,由其单独支
配。也就是说,对于超级用户而言,他所见到的硬盘容量将是110%。这样的安排对于系统管理而言是有好处的,当硬盘被使用的容量接近100%时系统管理员
还可以正常工作。
5.应用实例
Linux支持的文件系统非常多,包括JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、vfat、MSDOS等。使用df -T命令查看磁盘空间时还可以得到文件系统的信息:
#df -T
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/hda7 reiserfs 5.2G 1.6G 3.7G 30% /
/dev/hda1 vfat 2.4G 1.6G 827M 66% /windows/C
/dev/hda5 vfat 3.0G 1.7G 1.3G 57% /windows/D
/dev/hda9 vfat 3.0G 2.4G 566M 82% /windows/E
/dev/hda10 NTFS 3.2G 573M 2.6G 18% /windows/F
/dev/hda11 vfat 1.6G 1.5G 23M 99% /windows/G
从上面除了可以看到磁盘空间的容量、使用情况外,分区的文件系统类型、挂载点等信息也一览无遗。
top
1.作用
top命令用来显示执行中的程序进程,使用权限是所有用户。
2.格式
top [-] [d delay] [q] [c] [S] [n]
3.主要参数
d:指定更新的间隔,以秒计算。
q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。
c:显示进程完整的路径与名称。
S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。
s:安全模式。
i:不显示任何闲置(Idle)或无用(Zombie)的行程。
n:显示更新的次数,完成后将会退出top。
4.说明
top命令是Linux系统管理的一个主要命令,通过它可以获得许多信息。这里我们结合图1来说明它给出的信息。
图1 top命令的显示
在图1中,第一行表示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。第二行显示的是所有启动的进程、目前运行的、挂起
(Sleeping)的和无用(Zombie)的进程。第三行显示的是目前CPU的使用情况,包括系统占用的比例、用户使用比例、闲置(Idle)比例。
第四行显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、缓冲区占用的内存。第五行显示交换分区使用情况,包括总的交换分区、使用
的、空闲的和用于高速缓存的大小。第六行显示的项目最多,下面列出了详细解释。
PID(Process ID):进程标示号。
USER:进程所有者的用户名。
PR:进程的优先级别。
NI:进程的优先级别数值。
VIRT:进程占用的虚拟内存值。
RES:进程占用的物理内存值。
SHR:进程使用的共享内存值。
S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。
%CPU:该进程占用的CPU使用率。
%MEM:该进程占用的物理内存和总内存的百分比。
TIME+:该进程启动后占用的总的CPU时间。
Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。
top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。
:立刻刷新。
P:根据CPU使用大小进行排序。
T:根据时间、累计时间排序。
q:退出top命令。
m:切换显示内存信息。
t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
M:根据使用内存大小进行排序。
W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
可以看到,top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要。但是,它的缺点是会消耗很多系统资源。
5.应用实例
使用top命令可以监视指定用户,缺省情况是监视所有用户的进程。如果想查看指定用户的情况,在终端中按“U”键,然后输入用户名,系统就会切换为指定用户的进程运行界面,见图2所示。
图2 使用top命令监视指定用户
free
1.作用
free命令用来显示内存的使用情况,使用权限是所有用户。
2.格式
free [-b|-k|-m] [-o] [-s delay] [-t] [-V]
3.主要参数
-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。
-s delay:显示每隔多少秒数来显示一次内存使用情况。
-t:显示内存总和列。
-o:不显示缓冲区调节列。
4.应用实例
free命令是用来查看内存使用情况的主要命令。和top命令相比,它的优点是使用简单,并且只占用很少的系统资源。通过-S参数可以使用free命令不间断地监视有多少内存在使用,这样可以把它当作一个方便实时监控器。
#free -b -s5
使用这个命令后终端会连续不断地报告内存使用情况(以字节为单位),每5秒更新一次。
quota
1.作用
quota命令用来显示磁盘使用情况和限制情况,使用权限超级用户。
2.格式
quota [-g][-u][-v][-p] 用户名 组名
3.参数
-g:显示用户所在组的磁盘使用限制。
-u:显示用户的磁盘使用限制。
-v:显示没有分配空间的文件系统的分配情况。
-p:显示简化信息。
4.应用实例
在企业应用中磁盘配额非常重要,普通用户要学会看懂自己的磁盘使用情况。要查询自己的磁盘配额可以使用下面命令(下例中用户账号是caojh):
#quota caojh
Disk quotas for user caojh(uid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 58 200000 400000 41 500 1000
以上显示ID号为502的caojh账号,文件个数设置为500~1000个,硬盘空间限制设置为200MB~400MB。一旦磁盘配额要用完时,就需要删除一些垃圾文件或向系统管理员请求追加配额。
at
1.作用
at命令用来在指定时刻执行指定的命令序列。
2.格式
at [-V] [-q x] [-f file] [-m] time
3.主要参数
-V:显示标准错误输出。
-q:许多队列输出。
-f:从文件中读取作业。
-m:执行完作业后发送电子邮件到用户。
time:设定作业执行的时间。time格式有严格的要求,由小时、分钟、日期和时间的偏移量组成,其中日期的格式为MM.DD.YY,MM是分钟,DD是日期,YY是指年份。偏移量的格式为时间+偏移量,单位是minutes、hours和days。
4.应用实例
#at -f data 15:30 +2 days
上面命令表示让系统在两天后的17:30执行文件data中指明的作业。
lp
1.作用
lp是打印文件的命令,使用权限是所有用户。
2.格式
lp [-c][-d][-m][-number][-title][-p]
3.主要参数
-c:先拷贝文件再打印。
-d:打印队列文件。
-m:打印结束后发送电子邮件到用户。
-number:打印份数。
-title:打印标题。
-p:设定打印的优先级别,最高为100。
4.应用实例
(1)使用lp命令打印多个文件
#lp 2 3 4
request id is 11 (3 file(s))
其中2、3、4分别是文件名;“request id is 11 (3 file(s)) ”表示这是第11个打印命令,依次打印这三个文件。
(2)设定打印优先级别
#lp lp -d LaserJet -p 90 /etc/aliases
通过添加“-p 90”,规定了打印作业的优先级为90。它将在优先级低于90的打印作业之前打印,包括没有设置优先级的作业,缺省优先级是50
useradd
1.作用
useradd命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户。
2.格式
useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
3.主要参数
-c:加上备注文字,备注文字保存在passwd的备注栏中。
-d:指定用户登入时的启始目录。
-D:变更预设值。
-e:指定账号的有效期限,缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。
-g:指定用户所属的群组。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。
-u:指定用户ID号。
4.说明
useradd可用来建立用户账号,它和adduser命令是相同的。账号建好之后,再用passwd设定账号的密码。使用useradd命令所建立的账号,实际上是保存在/etc/passwd文本文件中。
5.应用实例
建立一个新用户账户,并设置ID:
#useradd caojh -u 544
需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特殊用户,一般0到499之间的值留给bin、mail这样的系统账号。
groupadd
1.作用
groupadd命令用于将新组加入系统。
2.格式
groupadd [-g gid] [-o]] [-r] [-f] groupname
3.主要参数
-g gid:指定组ID号。
-o:允许组ID号,不必惟一。
-r:加入组ID号,低于499系统账号。
-f:加入已经有的组时,发展程序退出。
4.应用实例
建立一个新组,并设置组ID加入系统:
#groupadd -g 344 cjh
此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。
kill
1.作用
kill命令用来中止一个进程。
2.格式
kill [ -s signal | -p ] [ -a ] pid ...
kill -l [ signal ]
3.参数
-s:指定发送的信号。
-p:模拟发送信号。
-l:指定信号的名称列表。
pid:要中止进程的ID号。
Signal:表示信号。
4.说明
进程是Linux系统中一个非常重要的概念。Linux是一个多任务的操作系统,系统上经常同时运行着多个进程。我们不关心这些进程究竟是如何分配的,或者是内核如何管理分配时间片的,所关心的是如何去控制这些进程,让它们能够很好地为用户服务。
Linux
操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。交互进程是由一个Shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。
批处理进程和终端没有联系,是一个进程序列。监控进程(也称系统守护进程)时Linux系统启动时启动的进程,并在后台运行。例如,httpd是著名的
Apache服务器的监控进程。
kill命令的工作原理是,向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操
作。比如在top命令中,我们看到系统运行许多进程,有时就需要使用kill中止某些进程来提高系统资源。在讲解安装和登陆命令时,曾提到系统多个虚拟控
制台的作用是当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作关闭这个程序。此时使用的命令就是kill,因为kill是大多数Shell内
部命令可以直接调用的。
5.应用实例
(1)强行中止(经常使用杀掉)一个进程标识号为324的进程:
#kill -9 324
(2)解除Linux系统的死锁
在Linux
中有时会发生这样一种情况:一个程序崩溃,并且处于死锁的状态。此时一般不用重新启动计算机,只需要中止(或者说是关闭)这个有问题的程序即可。当
kill处于X-Window界面时,主要的程序(除了崩溃的程序之外)一般都已经正常启动了。此时打开一个终端,在那里中止有问题的程序。比如,如果
Mozilla浏览器程序出现了锁死的情况,可以使用kill命令来中止所有包含有Mozolla浏览器的程序。首先用top命令查处该程序的PID,然
后使用kill命令停止这个程序:
#kill -SIGKILL XXX
其中,XXX是包含有Mozolla浏览器的程序的进程标识号。
(3)使用命令回收内存
我们知道内存对于系统是非常重要的,回收内存可以提高系统资源。kill命令可以及时地中止一些“越轨”的程序或很长时间没有相应的程序。例如,使用top命令发现一个无用 (Zombie) 的进程,此时可以使用下面命令:
#kill -9 XXX
其中,XXX是无用的进程标识号。
然后使用下面命令:
#free
此时会发现可用内存容量增加了。
(4)killall命令
Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:
# killall -HUP inetd
crontab
1.作用
使用crontab命令可以修改crontab配置文件,然后该配置由cron公用程序在适当的时间执行,该命令使用权限是所有用户。
2.格式
crontab [ -u user ] 文件
crontab [ -u user ] { -l | -r | -e }
3.主要参数
-e:执行文字编辑器来设定时程表,内定的文字编辑器是vi。
-r:删除目前的时程表。
-l:列出目前的时程表。
crontab 文件的格式为“M H D m d
cmd”。其中,M代表分钟(0~59),H代表小时(0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天(0~6,0为星期
天)。cmd表示要运行的程序,它被送入sh执行,这个Shell只有USER、HOME、SHELL三个环境变量。
4.说明
和at命令相比,crontab命令适合完成固定周期的任务。
5.应用实例
设置一个定时、定期的系统提示:
[cao @www cao]#crontab -e
此时系统会打开一个vi编辑器。
如果输入以下内容:35 17 * * 5 wall "Tomorrow is Saturday I will go CS",然后存盘退出。这时在/var/spool/cron/目录下会生产一个cao的文件,内容如下:
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.2707 installed on Thu Jan 1 22:01:51 2004)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
35 17 * * 5 wall "Tomorrow is Saturday I will play CS "
这样每个星期五17:35系统就会弹出一个终端,提醒星期六可以打打CS了!显示结果见图3所示。
图3 一个定时、定期的系统提示
动手练习
1.联合使用kill和top命令观察系统性能的变化
首先启动一个终端运行top命令,然后再启动一个终端使用kill命令,见图4所示。
图4 观察kill命令对top终端的影响
这时利用上面介绍的kill命令来中止一些程序:
#kill SIGKILL XXX
然后再看top命令终端的变化,包括内存容量、CPU使用率、系统负载等。注意,有些进程是不能中止的,不过学习Linux命令时可以试试,看看系统有什么反应。
2.使用at和halt命令定时关机
首先设定关机时间是17:35,输入下面代码:
#at 17:35
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at>halt `-i -p
at>
job 6 at 2004-01-01 17:35
此时实际上就已经进入Linux系统的Shell,并且编写一个最简单程序:halt -i
-p。上面Shell中的文本结束符号表示按“Ctrl+D”组合键关闭命令,提交任务退出Shell。“Job 6 at 2004-01-01
17:35”表示系统接受第6个at命令,在“2004-01-01 17:35”时执行命令:先把所有网络相关的装置停止,关闭系统后关闭电源。
3.用crontab命令实现每天定时的病毒扫描
前面已经介绍了一个简单的crontab命令操作,这里看一些更重要的操作。
(1)建立一个文件,文件名称自己设定,假设为caoproject:
#crontab -e
(2)文件内容如下:
05 09 * * * antivir
用vi编辑后存盘退出。antivir是一个查杀Linux病毒的软件,当然需要时先安装在系统中。
(3)使用crontab命令添加到任务列表中:
#crontab caoproject
这样系统内所有用户在每天的9点05分会自动进行病毒扫描。
4.用kill使修改的配置文件马上生效
Windows用户一般都知道,重要配置文件修改后往往都要重新启动计算机才能使修改生效。而Linux由于采用了模块化设计,可以自己根据需要实时设定服务。这里以网络服务inetd为例介绍一些操作技巧。
inetd
是一个监听守护进程,监听与提供互联网服务进程(如rlogin、telnet、ftp、rsh)进行连接的要求,并扩展所需的服务进程。默认情况下,
inetd监听的这些daemon均列于/etc
/inetd.conf文件中。编辑/etc/inetd.conf文件,可以改变inetd启动服务器守护进程的选项,然后驱使inetd以
SIGHUP(signal 1)向当前的inetd进程发送信号,使inetd重读该文件。这一过程由kill命令来实现。
用vi或其它编辑器修改inetd.conf后,首先使用下面命令:
#ps -ef |grep inetd
上面代码表明查询inetd.conf的进程号(PID),这里假设是1426,然后使用下面命令:
# kill -1426 inetd
这样配置文件就生效了。
这一讲介绍的系统管理命令都是比较重要的,特别是crontab命令和quota命令使用起来会有一定难度,需要多做一些练习。另外,使用kill命令要注意“-9“这个参数,练习时最好不要运行一些重要的程序。
Linux必学的系统安全命令
虽然Linux和Windows NT/2000系统一样是一个多用户的系统,但是它们之间有不少重要的差别。对于很多习惯了Windows系统的管理员来讲,如何保证Linux操作系统安全、可靠将会面临许多新的挑战。本文将重点介绍Linux系统安全的命令。
passwd
1.作用
passwd命令原来修改账户的登陆密码,使用权限是所有用户。
2.格式
passwd [选项] 账户名称
3.主要参数
-l:锁定已经命名的账户名称,只有具备超级用户权限的使用者方可使用。
-u:解开账户锁定状态,只有具备超级用户权限的使用者方可使用。
-x, --maximum=DAYS:最大密码使用时间(天),只有具备超级用户权限的使用者方可使用。
-n, --minimum=DAYS:最小密码使用时间(天),只有具备超级用户权限的使用者方可使用。
-d:删除使用者的密码, 只有具备超级用户权限的使用者方可使用。
-S:检查指定使用者的密码认证种类, 只有具备超级用户权限的使用者方可使用。
4.应用实例
$ passwd
Changing password for user cao.
Changing password for cao
(current) UNIX password:
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
从上面可以看到,使用passwd命令需要输入旧的密码,然后再输入两次新密码。
su
1.作用
su的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码。
2.格式
su [选项]... [-] [USER [ARG]...]
3.主要参数
-f , --fast:不必读启动文件(如 csh.cshrc 等),仅用于csh或tcsh两种Shell。
-l , --login:加了这个参数之后,就好像是重新登陆为该使用者一样,大部分环境变量(例如HOME、SHELL和USER等)都是以该使用者(USER)为主,并且工作目录也会改变。如果没有指定USER,缺省情况是root。
-m, -p ,--preserve-environment:执行su时不改变环境变数。
-c command:变更账号为USER的使用者,并执行指令(command)后再变回原来使用者。
USER:欲变更的使用者账号,ARG传入新的Shell参数。
4.应用实例
变更账号为超级用户,并在执行df命令后还原使用者。 su -c df root
umask
1.作用
umask设置用户文件和目录的文件创建缺省屏蔽值,若将此命令放入profile文件,就可控制该用户后续所建文件的存取许可。它告诉系统在创建文件时不给谁存取许可。使用权限是所有用户。
2.格式
umask [-p] [-S] [mode]
3.参数
-S:确定当前的umask设置。
-p:修改umask 设置。
[mode]:修改数值。
4.说明
传统Unix的umask值是022,这样就可以
防止同属于该组的其它用户及别的组的用户修改该用户的文件。既然每个用户都拥有并属于一个自己的私有组,那么这种“组保护模式”就不在需要了。严密的权限
设定构成了Linux安全的基础,在权限上犯错误是致命的。需要注意的是,umask命令用来设置进程所创建的文件的读写权限,最保险的值是0077,即
关闭创建文件的进程以外的所有进程的读写权限,表示为-rw-------。在~/.bash_profile中,加上一行命令umask
0077可以保证每次启动Shell后, 进程的umask权限都可以被正确设定。
5.应用实例
umask -S
u=rwx,g=rx,o=rx
umask -p 177
umask -S
u=rw,g=,o=
上述5行命令,首先显示当前状态,然后把umask值改为177,结果只有文件所有者具有读写文件的权限,其它用户不能访问该文件。这显然是一种非常安全的设置。
chgrp
1.作用
chgrp表示修改一个或多个文件或目录所属的组。使用权限是超级用户。
2.格式
chgrp [选项]... 组 文件...
或
chgrp [选项]... --reference=参考文件 文件...
将每个的所属组设定为。
3.参数
-c, --changes :像 --verbose,但只在有更改时才显示结果。
--dereference:会影响符号链接所指示的对象,而非符号链接本身。
-h, --no-dereference:会影响符号链接本身,而非符号链接所指示的目的地(当系统支持更改符号链接的所有者,此选项才有效)。
-f, --silent, --quiet:去除大部分的错误信息。
--reference=参考文件:使用的所属组,而非指定的。
-R, --recursive:递归处理所有的文件及子目录。
-v, --verbose:处理任何文件都会显示信息。
4.应用说明
该命令改变指定指定文件所属的用户组。其中group可以是用户组ID,也可以是/etc/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。
5.应用实例
改变/opt/local /book/及其子目录下的所有文件的属组为book,命令如下:
$ chgrp - R book /opt/local /book
chmod
1.作用
chmod命令是非常重要的,用于改变文件或目录的访问权限,用户可以用它控制文件或目录的访问权限,使用权限是超级用户。
2.格式
chmod命令有两种用法。一种是包含字母和操作符表达式的字符设定法(相对权限设定);另一种是包含数字的数字设定法(绝对权限设定)。
(1)字符设定法
chmod [who] [+ | - | =] [mode] 文件名
◆操作对象who可以是下述字母中的任一个或它们的组合
u:表示用户,即文件或目录的所有者。
g:表示同组用户,即与文件属主有相同组ID的所有用户。
o:表示其它用户。
a:表示所有用户,它是系统默认值。
◆操作符号
+:添加某个权限。
-:取消某个权限。
=:赋予给定权限,并取消其它所有权限(如果有的话)。
◆设置mode的权限可用下述字母的任意组合
r:可读。
w:可写。
x:可执行。
X:只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x属性。
s:文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
t:保存程序的文本到交换设备上。
u:与文件属主拥有一样的权限。
g:与和文件属主同组的用户拥有一样的权限。
o:与其它用户拥有一样的权限。
文件名:以空格分开的要改变权限的文件列表,支持通配符。
一个命令行中可以给出多个权限方式,其间用逗号隔开。
(2) 数字设定法
数字设定法的一般形式为: chmod [mode] 文件名
数字属性的格式应为3个0到7的八进制数,其顺序是(u)(g)(o)文件名,以空格分开的要改变权限的文件列表,支持通配符。
数字表示的权限的含义如下:0001为所有者的执行权限;0002为所有者
的写权限;0004为所有者的读权限;0010为组的执行权限;0020为组的写权限;0040为组的读权限;0100为其他人的执行权限;0200为其
他人的写权限;0400为其他人的读权限;1000为粘贴位置位;2000表示假如这个文件是可执行文件,则为组ID为位置位,否则其中文件锁定位置位;
4000表示假如这个文件是可执行文件,则为用户ID为位置位。
3.实例
如果一个系统管理员写了一个表格(tem)让所有用户填写,那么必须授权用户对这个文件有读写权限,可以使用命令:#chmod 666 tem
上面代码中,这个666数字是如何计算出来的呢?0002为所有者的写权
限,0004为所有者的读权限,0020为组的写权限,0040为组的读权限,0200为其他人的写权限,0400为其他人的读权限,这6个数字相加就是
666(注以上数字都是八进制数),结果见图1所示。
![]()
图1 用chmod数字方法设定文件权限
从图1可以看出,tem文件的权限是-rw-rw-rw-,即用户对这个文件有读写权限。
如果用字符权限设定使用下面命令:
#chmod a =wx tem
chown
1.作用
更改一个或多个文件或目录的属主和属组。使用权限是超级用户。
2.格式
chown [选项] 用户或组 文件
3.主要参数
--dereference:受影响的是符号链接所指示的对象,而非符号链接本身。
-h, --no-dereference:会影响符号链接本身,而非符号链接所指示的目的地(当系统支持更改符号链接的所有者,此选项才有效)。
--from=目前所有者:目前组只当每个文件的所有者和组符合选项所指定的,才会更改所有者和组。其中一个可以省略,这已省略的属性就不需要符合原有的属性。
-f, --silent, --quiet:去除大部分的错误信息。
-R, --recursive:递归处理所有的文件及子目录。
-v, --verbose:处理任何文件都会显示信息。
4.说明
chown将指定文件的拥有者改为指定的用户或
组,用户可以是用户名或用户ID;组可以是组名或组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将
文件拷贝到另一个用户的目录下以后,让用户拥有使用该文件的权限。
5.应用实例
1.把文件shiyan.c的所有者改为wan
$ chown wan shiyan.c
2.把目录/hi及其下的所有文件和子目录的属主改成wan,属组改成users。
$ chown - R wan.users /hi
chattr
1.作用
修改ext2和ext3文件系统属性(attribute),使用权限超级用户。
2.格式
chattr [-RV] [-+=AacDdijsSu] [-v version] 文件或目录
3.主要参数
-R:递归处理所有的文件及子目录。
-V:详细显示修改内容,并打印输出。
-:失效属性。
+:激活属性。
= :指定属性。
A:Atime,告诉系统不要修改对这个文件的最后访问时间。
S:Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
a:Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
i:Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
D:检查压缩文件中的错误。
d:No dump,在进行文件系统备份时,dump程序将忽略这个文件。
C:Compress,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。
s:Secure Delete,让系统在删除这个文件时,使用0填充文件所在的区域。
u:Undelete,当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。
4.说明
chattr命令的作用很大,其中一些功能是由
Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多功能不能实现。同样-D检查压缩文件中的错误的功能,需要2.5.19以上内核
才能支持。另外,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、
/var目录。
5.应用实例
1.恢复/root目录,即子目录的所有文件
# chattr -R +u/root
2.用chattr命令防止系统中某个关键文件被修改
在Linux下,有些配置文件(passwd ,fatab)是不允许任何人修改的,为了防止被误删除或修改,可以设定该文件的“不可修改位(immutable)”,命令如下:
# chattr +i /etc/fstab
sudo
1.作用
sudo是一种以限制配置文件中的命令为基础,在有限时间内给用户使用,并且记录到日志中的命令,权限是所有用户。
2.格式
sudo [-bhHpV] [-s ] [-u ] [指令]
sudo [-klv]
3.主要参数
-b:在后台执行命令。
-h:显示帮助。
-H:将HOME环境变量设为新身份的HOME环境变量。
-k:结束密码的有效期,即下次将需要输入密码。
-l:列出当前用户可以使用的命令。
-p:改变询问密码的提示符号。
-s :执行指定的Shell。
-u :以指定的用户为新身份,不使用时默认为root。
-v:延长密码有效期5分钟。
4.说明
sudo命令的配置在/etc/sudoers文
件中。当用户使用sudo时,需要输入口令以验证使用者身份。随后的一段时间内可以使用定义好的命令,当使用配置文件中没有的命令时,将会有报警的记录。
sudo是系统管理员用来允许某些用户以root身份运行部分/全部系统命令的程序。一个明显的用途是增强了站点的安全性,如果需要每天以超级用户的身份
做一些日常工作,经常执行一些固定的几个只有超级用户身份才能执行的命令,那么用sudo是非常适合的。
ps
1.作用
ps显示瞬间进程 (process) 的动态,使用权限是所有使用者。
2.格式
ps [options] [--help]
3.主要参数
ps的参数非常多, 此出仅列出几个常用的参数。
-A:列出所有的进程。
-l:显示长列表。
-m:显示内存信息。
-w:显示加宽可以显示较多的信息。
-e:显示所有进程。
a:显示终端上的所有进程,包括其它用户的进程。
-au:显示较详细的信息。
-aux:显示所有包含其它使用者的进程。
4.说明
要对进程进行监测和控制,首先要了解当前进程的情
况,也就是需要查看当前进程。ps命令就是最基本、也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行、运行的状态、进程是否结束、进程
有没有僵尸、哪些进程占用了过多的资源等。图2给出了ps-aux命令详解。大部分信息都可以通过执行该命令得到。最常用的三个参数是u、a、x。下面就
结合这三个参数详细说明ps命令的作用:ps aux
![]()
图2 ps-aux命令详解
图2第2行代码中,USER表示进程拥有者;PID表示进程标示符;%CPU表示占用的CPU使用率;%MEM占用的物理内存使用率;VSZ表示占用的虚拟内存大小;RSS为进程占用的物理内存值;TTY为终端的次要装置号码。
STAT表示进程的状态,其中D为不可中断的静止(I/O动作);R正在执
行中;S静止状态;T暂停执行;Z不存在,但暂时无法消除;W没有足够的内存分页可分配;高优先序的进程;N低优先序的进程;L有内存分页分配并锁在内存
体内 (实时系统或 I/O)。START为进程开始时间。TIME为执行的时间。COMMAND是所执行的指令。
4.应用实例
在进行系统维护时,经常会出现内存使用量惊人,而又不知道是哪一个进程占用了大量进程的情况。除了可以使用top命令查看内存使用情况之外,还可以使用下面的命令:
ps aux | sort +5n
who
1.作用
who显示系统中有哪些用户登陆系统,显示的资料包含了使用者ID、使用的登陆终端、上线时间、呆滞时间、CPU占用,以及做了些什么。 使用权限为所有用户。
2.格式
who - [husfV] [user]
3.主要参数
-h:不要显示标题列。
-u:不要显示使用者的动作/工作。
-s:使用简短的格式来显示。
-f:不要显示使用者的上线位置。
-V:显示程序版本。
4.说明
该命令主要用于查看当前在线上的用户情况。如果用
户想和其它用户建立即时通信,比如使用talk命令,那么首先要确定的就是该用户确实在线上,不然talk进程就无法建立起来。又如,系统管理员希望监视
每个登录的用户此时此刻的所作所为,也要使用who命令。who命令应用起来非常简单,可以比较准确地掌握用户的情况,所以使用非常广泛。
动手练习
1.使用Linux命令检测系统入侵者
安装过
Mandrake Linux和Red Hat
Linux的用户都会知道,Linux系统会内置三种不同级别(标准、高、更高)的防火墙,当进行了Linux服务器的安装和一些基本的设置后,服务器应
该说是比较安全的,但是也会有黑客通过各种方法利用系统管理员的疏忽侵入系统。如何快速查找黑客非常重要。一般来说,可以使用命令查询黑客是否入侵,见表
1。
表1 查询黑客入侵现象的命令对应表
![]()
举例说明,如果黑客嗅探网络,那么它必须使网卡接口处于混杂模式,使用下面命令进行查询:
#ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:00:E8:A0:25:86
inet addr:192.168.1.7 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING PROMISCUOUS MTU:1500 Metric:1
......
从这个命令的输出中,可以看到上面讲到的这些概念。第一行的00:00:
E8:A0:25:86是mac地址,第二行的192.168.1.7是IP地址,第四行讲的是接收数据状态,这时正在被黑客嗅探。一般而言,网卡有几种
接收数据帧的状态,如Broadcast、Multicast、Promiscuous等。Broadcast是指接收所有类型为广播报文的数据帧;
Multicast是指接收特定的组播报文;Promiscuous则是通常说的混杂模式,是指对报文中的目的硬件地址不加任何检查、全部接收的工作模
式。
2.限制su命令的滥用
我们知道,超级用户在Linux
中有最大的权利,几乎所有黑客都想得到这个目标。Linux可以增加对切换到超级用户的限制。使用PAM(Pluggable
Authentication
Modules)可以禁止除在wheel组以外的任何人su成root,修改/etc/pam.d/su文件,除去屏蔽标识#。使用
/usr/sbin/usermod G10 bjecadm将bjecadm这个账号加入gid为10的组,就是wheel组。命令如下:
/etc/pam.d/su # 使用密码验证#
auth sufficient /lib/security/pam_wheel.so debug
# 限制只有wheel组用户才可以切换到root#
auth required /lib/security/pam_wheel.so use_uid
chmod -G10 bjecadm
另外,每当用户试图使用su命令进入系统用户时,命令将在/usr/adm/sulog文件中写一条信息,若该文件记录了大量试图用su进入root的无效操作信息,则表明了可能有人企图破译root口令。
Linux命令有着强大的功能。对于Linux系统管理员来说,往往只需要通过各种安全命令技巧,组合构成安全防线。从计算机安全的角度看,世界上没有绝对安全的计算机系统,Linux系统也不例外。(T111)
Linux常用命令大全文件管理
cat
chattr
chgrp
chmod
chown
cksum
cmp
diff
diffstat
file
find
git
gitview
indent
cut
ln
less
locate
isattr
mattrib
mc
mdel
mdir
mktemp
more
mmove
mread
mren
mtools
mtoolstest
mv
od
paste
patch
rcp
rm
slocate
split
tee
tmpwatch
touch
umask
which
cp
in
mcopy
mshowfat
rhmask
whereis
磁盘管理
cd
df
dirs
du
edquota
eject
mcd
mdeltree
mdu
mkdir
mlabel
mmd
mrd
mzip
pwd
quota
mount
mmount
rmdir
rmt
stat
tree
umount
ls
quotacheck
quotaoff
lndir
repquota
quotaon
文档编辑
col
colrm
comm
csplit
ed
egrep
ex
fgrep
fmt
fold
grep
ispell
jed
joe
join
look
mtype
pico
rgrep
sed
sort
spell
tr
expr
uniq
wc
文件传输
lprm
lpr
lpq
lpd
bye
ftp
uuto
uupick
uucp
uucico
tftp
ncftp
ftpshut
ftpwho
ftpcount
磁盘维护
badblocks
cfdisk
dd
e2fsck
ext2ed
fsck
fsck
fsconf
fdformat
hdparm
mformat
mkbootdisk
mkdosfs
mke2fs
mkfs.ext2
mkfs.msdos
mkinitrd
mkisofts
mkswap
mpartition
swapon
symlinks
sync
mbadblocks
mkfs
fsck.ext2
fdisk
losetup
mkfs
sfdisk
swapoff
网络通讯
apachectl
arpwatch
dip
getty
mingetty
uux
telnet
uulog
uustat
ppp-off
netconfig
nc
httpd
ifconfig
minicom
mesg
dnsconf
wall
netstat
ping
pppstats
samba
setserial
talk
traceroute
tty
newaliases
uuname
netconf
write
statserial
efax
pppsetup
tcpdump
ytalk
cu
smbd
testparm
shapecfg
smbclient
系统管理
adduser
chfn
useradd
date
exit
finger
fwhois
sleep
suspend
groupdel
groupmod
halt
kill
last
lastb
login
logname
logout
ps
nice
procinfo
top
pstree
reboot
rlogin
rsh
sliplogin
screen
shutdown
rwho
sudo
gitps
swatch
tload
logrotate
kill
uname
chsh
userconf
userdel
usermod
vlock
who
whoami
whois
newgrp
renice
su
skill
w
id
free
系统设置
reset
clear
alias
dircolors
aumix
bind
chroot
clock
crontab
declare
depmod
dmesg
enable
eval
export
pwunconv
grpconv
rpm
insmod
kbdconfig
lilo
liloconfig
lsmod
minfo
set
modprobe
ntsysv
moouseconfig
passwd
pwconv
rdate
resize
rmmod
grpunconv
modinfo
time
setup
sndconfig
setenv
setconsole
timeconfig
ulimit
unset
chkconfig
apmd
hwclock
mkkickstart
fbset
unalias
SVGAText Mode
备份压缩
ar
bunzip2
bzip2
bzip2recover
gunzip
unarj
compress
cpio
dump
uuencode
gzexe
gzip
lha
restore
tar
uudecode
unzip
zip
zipinfo
设备管理
setleds
loadkeys
rdev
dumpkeys
MAKEDEV
inux常见命令列表
这是一个linux常见命令的列表。
那些有• 标记的条目,你可以直接拷贝到终端上而不需要任何修改,因此你最好开一个终端边读边
剪切&拷贝
。
所有的命令已在Fedora和Ubuntu下做了测试
命令
•apropos whatis显示和word相关的命令。 参见
线程安全
•
man
-t man | ps2pdf - > man.pdf生成一个PDF格式的帮助文件
which command显示命令的完整路径名
time command计算命令运行的时间
•time cat开始计时. Ctrl-d停止。参见
sw
•nice
info
运行一个低优先级命令(这里是info)
•renice 19 -p $$使脚本运行于低优先级。用于非交互任务。
目录操作
•cd -回到前一目录
•cd回到用户目录
(cd dir && command)进入目录dir,执行命令command然后回到当前目录
•pushd .将当前目录压入栈,以后你可以使用popd回到此目录
文件搜索
•
alias
l='ls -l --color=auto'单字符文件列表命令
•ls -lrt按日期显示文件. 参见
newest
•ls /usr/bin | pr -T9 -W$COLUMNS在当前终端宽度上打印9列输出
find -name '*.[ch]' | xargs grep -E 'expr'在当前目录及其子目录下所有.c和.h文件中寻找'expr'. 参见
findrepo
find -type f -print0 | xargs -r0 grep -F 'example'在当前目录及其子目录中的常规文件中查找字符串'example'
find -maxdepth 1 -type f | xargs grep -F 'example'在当前目录下查找字符串'example'
find -maxdepth 1 -type d | while
read
dir; do echo $dir; echo cmd2; done对每一个找到的文件执行多个命令(使用while循环)
•find -type f ! -perm -444寻找所有不可读的文件(对网站有用)
•find -type d ! -perm -111寻找不可访问的目录(对网站有用)
•locate -r 'file[^/]*\.txt'使用locate 查找所有符合*file*.txt的文件
•look reference在(有序)字典中快速查找
•grep
--color
reference /usr/share/dict/words使字典中匹配的正则表达式高亮
归档 and compression
gpg -c file文件加密
gpg file.gpg文件解密
tar -c dir/ | bzip2 > dir.tar.bz2将目录dir/压缩打包
bzip2 -dc dir.tar.bz2 | tar -x展开压缩包 (对tar.gz文件使用gzip而不是bzip2)
tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'目录dir/压缩打包并放到远程机器上
find dir/ -name '*.txt' | tar -c --files-from=- | bzip2 > dir_txt.tar.bz2将目录dir/及其子目录下所有.txt文件打包
find dir/ -name '*.txt' | xargs cp -a --target-directory=dir_txt/ --parents将目录dir/及其子目录下所有.txt按照目录结构拷贝到dir_txt/
( tar -c /dir/to/copy ) | ( cd /where/to/ && tar -x -p )拷贝目录copy/到目录/where/to/并保持文件属性
( cd /dir/to/copy && tar -c . ) | ( cd /where/to/ && tar -x -p )拷贝目录copy/下的所有文件到目录/where/to/并保持文件属性
( tar -c /dir/to/copy ) | ssh -C user@remote 'cd /where/to/ && tar -x -p' 拷贝目录copy/到远程目录/where/to/并保持文件属性
dd bs=1M if=/dev/sda | gzip | ssh user@remote 'dd of=sda.gz'将整个硬盘备份到远程机器上
rsync (使用 --dry-run选项进行测试)
rsync -P rsync://rsync.server.com/path/to/file file只获取diffs.当下载有问题时可以作多次
rsync --bwlimit=1000 fromfile tofile有速度限制的本地拷贝,对I/O有利
rsync -az -e ssh --delete ~/public_html/ remote.com:'~/public_html'镜像网站(使用压缩和加密)
rsync -auz -e ssh remote:/dir/ . && rsync -auz -e ssh . remote:/dir/同步当前目录和远程目录
ssh (安全 Shell)
ssh $USER@$HOST command在$Host主机上以$User用户运行命令(默认命令为Shell)
•ssh -f -Y $USER@$HOSTNAME xeyes在名为$HOSTNAME的主机上以$USER用户运行GUI命令
scp -p -r $USER@$HOST: file dir/拷贝到$HOST主机$USER'用户的目录下
ssh -g -L 8080:localhost:80 root@$HOST由本地主机的8080端口转发到$HOST主机的80端口
ssh -R 1434:imap:143 root@$HOST由主机的1434端口转发到imap的143端口
wget (多用途下载工具)
•(cd cmdline && wget -nd -pHEKk http://www.pixelbeat.org/cmdline.html)在当前目录中下载指定网页及其相关的文件使其可完全浏览
wget -c http://www.example.com/large.file继续上次未完的下载
wget -r -nd -np -l1 -A '*.jpg' http://www.example.com/批量下载文件到当前目录中
wget ftp://remote/file[1-9].iso/下载FTP站上的整个目录
•wget -q -O- http://www.pixelbeat.org/timeline.html | grep 'a href' | head直接处理输出
echo 'wget url' | at 01:00在下午一点钟下载指定文件到当前目录
wget --limit-rate=20k url限制下载速度(这里限制到20
KB/s
)
wget -nv --spider --force-html -i bookmarks.html检查文件中的链接是否存在
wget --mirror http://www.example.com/更新网站的本地拷贝(可以方便地用于cron)
网络(ifconfig, route, mii-tool, nslookup 命令皆已过时)
ethtool eth0显示网卡eth0的状态
ethtool --change eth0 autoneg off speed 100 duplex full手动设制网卡速度
iwconfig eth1显示无线网卡eth1的状态
iwconfig eth1 rate 1Mb/s fixed手动设制无线网卡速度
•iwlist scan显示无线网络列表
•ip link show显示interface列表
ip link set dev eth0 name wan重命名eth0为wan
ip link set dev eth0 up启动interface eth0(或关闭)
•ip addr show显示网卡的IP地址
ip addr add 1.2.3.4/24 brd + dev eth0添加ip和掩码(255.255.255.0)
•ip route show显示路由列表
ip route add default via 1.2.3.254设置默认网关1.2.3.254
•tc qdisc add dev lo root handle 1:0 netem delay 20msec增加20ms传输时间到loopback设备(调试用)
•tc qdisc del dev lo root移除上面添加的传输时间
•host pixelbeat.org查寻主机的DNS IP地址
•hostname -i查寻本地主机的IP地址(同等于host `hostname`)
•whois pixelbeat.org查寻某主机或莫IP地址的whois信息
•netstat -tupl列出系统中的internet服务
•netstat -tup列出活跃的连接
windows networking (samba提供所有windows相关的网络支持)
•smbtree寻找一个windows主机. 参见findsmb
nmblookup -A 1.2.3.4寻找一个指定ip的windows (netbios)名
smbclient -L windows_box显示在windows主机或samba服务器上的所有共享
mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share挂载一个windows共享
echo 'message' | smbclient -M windows_box发送一个弹出信息到windows主机(XP sp2默认关闭此功能)
文本操作 (sed使用标准输入和标准输出,如果想要编辑文件,则需添加newfile)
sed 's/string1/string2/g'使用string2替换string1
sed 's/\(.*\)1/\12/g'将任何以1结尾的字符串替换为以2结尾的字符串
sed '/ *#/d; /^ *$/d'删除注释和空白行
sed ':a; /\\$/N; s/\\\n//; ta'连接结尾有\的行和其下一行
sed 's/[ \t]*$//'删除每行后的空白
sed 's/\([\\`\\"$\\\\]\)/\\\1/g'将所有转义字符之前加上\
•seq 10 | sed "s/^/ /; s/ *\(.\{7,\}\)/\1/"向右排N(任意数)列
sed -n '1000p;1000q'输出第一千行
sed -n '10,20p;20q'输出第10-20行
sed -n 's/.*\(.*\).*/\1/ip;T;q'输出HTML文件的字段中的 内容
sort -t. -k1,1n -k2,2n -k3,3n -k4,4n排序IPV4地址
•echo 'Test' | tr '[:lower:]' '[:upper:]'转换成大写
•tr -dc '[:print:]' 过滤掉不能打印的字符
•history | wc -l计算指定单词出现的次数
集合操作 (如果是英文文本的话
export LANG=C
可以提高速度)
sort file1 file2 | uniq两个未排序文件的并集
sort file1 file2 | uniq -d两个未排序文件的交集
sort file1 file1 file2 | uniq -u两个未排序文件的差 集
sort file1 file2 | uniq -u两个未排序文件的对称差集
join -a1 -a2 file1 file2两个有序文件的并集
join file1 file2两个有序文件的交集
join -v2 file1 file2两个有序文件的差集
join -v1 -v2 file1 file2两个有序文件的对称差集
数学
•echo '(1 + sqrt(5))/2' | bc -l方便的计算器(计算 φ)
•echo 'pad=20; min=64; (100*10^6)/((pad+min)*8)' | bc更复杂地计算,这里计算了最大的FastE包率
•echo 'pad=20; min=64; print (100E6)/((pad+min)*8)' | pythonPython处理数值的科学表示法
•echo 'pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)' | gnuplot -persist显示FastE包率相对于包大小的图形
•echo 'obase=16; ibase=10; 64206' | bc进制转换(十进制到十六进制)
•echo $((0x2dec))进制转换(十六进制到十进制)((shell数学扩展))
•units -t '100m/
9.69s
' 'miles/hour'单位转换(公尺到英尺)
•units -t '500GB' 'GiB'单位转换(SI 到IEC 前缀)
•units -t '1 googol'定义查找
•seq 100 | (tr '\n' +; echo 0) | bc加N(任意数)列. 参见
add
and
funcpy
日历
•cal -3显示一日历
•cal 9 1752显示指定月,年的日历
•date -d fri这个星期五是几号. 参见
day
•date --date='25 Dec' +%A今年的圣诞节是星期几
•date --date '1970-01-01 UTC 2147483647 seconds'将一相对于1970-01-01 00:00的秒数转换成时间
•TZ=':America/Los_Angeles' date显示当前的美国西岸时间(使用tzselect寻找时区)
echo "mail -s 'get the train' P@draigBrady.com 在指定的时间发送邮件
•echo "DISPLAY=$DISPLAY xmessage cooker" | at "NOW + 30 minutes"在给定的时间弹出对话框
locales
•printf "%'d\n" 1234根据locale输出正确的数字分隔
•BLOCK_SIZE=\'1 ls -l用ls命令作类适于locale()文件分组
•echo "I live in `locale territory`"从locale数据库中展开信息
•LANG=en_IE.utf8 locale int_prefix查找指定地区的locale信息。参见
ccodes
•locale | cut -d= -f1 | xargs locale -kc | less显示在locale数据库中的所有字段
recode (iconv, dos2unix, unix2dos 已经过时了)
•recode -l | less显示所有有效的字符集及其别名
recode windows-1252.. file_to_change.txt转换Windows下的ansi文件到当前的字符集(自动进行回车换行符的转换)
recode utf-8/CRLF.. file_to_change.txt转换Windows下的ansi文件到当前的字符集
recode iso-8859-15..utf8 file_to_change.txt转换Latin9(西欧)字符集文件到utf8
recode ../b64 file.b64Base64编码
recode /qp.. file.qpQuoted-printable格式解码
recode ..HTML file.html将文本文件转换成HTML
•recode -lf windows-1252 | grep euro在
字符表
中查找欧元符号
•echo -n 0x80 | recode latin-9/x1..dump显示字符在latin-9中的字符映射
•echo -n 0x20AC | recode ucs-2/x2..latin-9/x显示latin-9编码
•echo -n 0x20AC | recode ucs-2/x2..utf-8/x显示utf-8编码
光盘
gzip cdrom.iso.gz保存光盘拷贝
mkisofs -V LABEL -r dir | gzip > cdrom.iso.gz建立目录dir的光盘镜像
mount -o loop cdrom.iso /mnt/dir将光盘镜像挂载到 /mnt/dir (只读)
cdrecord -v dev=/dev/cdrom blank=fast清空一张CDRW
gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom -烧录光盘镜像 (使用 dev=ATAPI -scanbus 来确认该使用的 dev)
cdparanoia -B在当前目录下将光盘音轨转录成wav文件
cdrecord -v dev=/dev/cdrom -audio *.wav将当前目录下的wav文件烧成音乐光盘 (参见cdrdao)
oggenc --tracknum='track' track.cdda.wav -o 'track.ogg'将wav文件转换成ogg格式
磁盘空间 (参见
FSlint
)
•ls -lSr按文件大小降序显示文件
•du -s * | sort -k1,1rn | head显示当前目录下占用空间最大的一批文件. 参见
dutop
•df -h显示空余的磁盘空间
•df -i显示空余的inode
•fdisk -l显示磁盘分区大小和类型(在root下执行)
•
rpm
-q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1,1n显示所有在rpm发布版上安装的
包
,并以包字节大小为序
•
dpkg
-query -W -f='${Installed-Size;10}\t${Package}\n' | sort -k1,1n显示所有在deb发布版上安装的
包
,并以KB包大小为序
•dd bs=1 seek=2TB if=/dev/null of=ext3.test建立一个大的测试文件(不占用空间). 参见
truncate
监视/调试
•tail -f /var/log/messages
监视Messages
日志文件
•strace -c ls >/dev/null总结/剖析命令进行的系统调用
•strace -f -e open ls >/dev/null显示命令进行的系统调用
•ltrace -f -e getenv ls >/dev/null显示命令调用的库函数
•lsof -p $$显示当前进程打开的文件
•lsof ~显示打开用户目录的进程
•tcpdump not port 22显示除了ssh外的网络交通. 参见
tcpdump_not_me
•ps -e -o pid,args --forest以树状结构显示进程
•ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'以CPU占用率为序显示进程
•ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS以内存使用量为序显示进程. 参见
ps_mem.py
•ps -C firefox-bin -L -o pid,tid,pcpu,state显示指定进程的所有线程信息
•ps -p 1,2显示指定进程ID的进程信息
•last reboot显示系统重启记录
•free -m显示(剩余的)内存总量(-m以MB为单位显示)
•watch -n.1 'cat /proc/interrupts'监测文件/proc/interrupts的变化
系统信息 (参见
sysinfo
)
•uname -a查看内核/操作系统/CPU信息
•head -n1 /etc/issue查看操作系统版本
•cat /proc/partitions显示所有在系统中注册的分区
•grep MemTotal /proc/meminfo显示系统可见的内存总量
•grep "model name" /proc/cpuinfo显示CPU信息
•lspci -tv显示PCI信息
•lsusb -tv显示USB信息
•mount | column -t显示所有挂载的文件系统并对齐输出
#dmidecode -q | less显示SMBIOS/DMI 信息
#smartctl -A /dev/sda | grep Power_On_Hours系统开机的总体时间
#hdparm -i /dev/sda显示关于磁盘sda的信息
#hdparm -tT /dev/sda检测磁盘sda的读取速度
#badblocks -s /dev/sda检测磁盘sda上所有的坏扇区
交互 (参见
linux keyboard shortcut database
)
•
readline
Line editor used by bash, python, bc, gnuplot, ...
•
screen
多窗口的虚拟终端, ...
•
mc
强大的文件管理器,可以浏览rpm, tar, ftp, ssh, ...
•
gnuplot
交互式并可进行脚本编程的画图工具
•links网页浏览器
miscellaneous
•
alias
hd='od -Ax -tx1z -v'方便的十六进制输出。 (用法举例: • hd /proc/self/cmdline | less)
•
alias
realpath='readlink -f'显示符号链接指向的真实路径((用法举例: • realpath ~/../$USER)
•set | grep $USER在当前
环境
中查找
touch -c -t 0304050607 file改变文件的时间标签 (YYMMDDhhmm)
•python -m SimpleHTTPServerServe current directory tree at http://$HOSTNAME:8000/
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/81451/showart_1335858.html |
|