linux常用命令全集可参见:http://linux.chinaitlab.com/special/linuxcom/
一、文件管理
cat: 读取文件内容。例:
more:类似cat,但将文件以一页一页的显示,方便使用者阅读。可使用空白键向下翻页,使用b键往回翻页,使用/后接字符串来搜索字符串。例:
less: 与More类似,可用来浏览文字档案的内容,允许使用者往回卷动。例:
chmod:修改使用者权限。u表示文件的拥有者(user),g表示文件的群体者(group),o表示其他人(other),a表示所有人(包括ugo);r表示可读(权值为4),w表示可写(权值为2),x表示可执行(权值为1);+表示增加权限,-表示取消权限,=表示设定权限。
可使用如下三种方式修改使用者的权限:
- chmod u+x filename #增加文件filename的拥有者对文件filename的执行权限
- chmod g=rwx filename #将文件filename的群体者对文件filename的权限调整为rwx
- chmod 764 filename #文件filename的拥有者权限为rwx,群体者权限为rw-,其他人为r--
chown:改变文件的拥有者。一般,这个命令仅root可以使用。例:
- chown apache:apache filename #将文件filename的拥有者改为apache,将群体者也改为apache
- chown -R lamport:users * #将当前目录下的所有文件与子目录的拥有者皆设为lamport,群体者高为users
rm:删除档案及目录。例:
- rm -rf dirname #将目录dirname及其子文件夹直接删除,无须逐一确认。
- rmdir dirname #删除空文件夹dirname
find:可按名称、所有者、时间、类别、大小、权限等不同资讯的组合查找文件。例:
- find . -name "*.c" -perm 755 #列出当前目录及其子目录下以.c结尾的且操作权限为755的所有文件
- find / -ftype f -cmin 10 #列出根目及其子目录下在过去10分钟内被改变过的所有文件(不包括目录)[与文件相关的时间有三种:ctime(change time)——文件的改变时间,包括修改所有者等;mtime(modihttp://www.cnblogs.com/sunada2005/admin/EditPosts.aspx?postid=3014014fy time)——文件的修改时间,包括创建文件;atime(access time)——文件的访问时间]
- find / -user user1 -size k 10 -cnewer filename #列出根目及其子目录下属于用户user1且大小超过10k且change time比filename更新的文件和目录
- find /user/bin -mtime -10 #列出/user/bin及其子目录下在10天内被创建或修改过后文件
- find /etc |xargs grep 'ERROR' #找出/etc及其子目录的文件内容中含有'ERROR'字符的文件
which/whereis/local:查找文件。与find在硬盘中查找文件不同:which在$PATH环境变量里面查找可执行文件的;whereis在数据库中查找文件,搜索范围比which大;local也是在数据中查找文件,可进行模糊查询。若数据库默认每天一更新,若没有及时更新,可能造成查找不成功,可使用updatedb来更新数据库。例:
- which -a find #列出PATH目录下所有的find文件,而不只是第一个文件
- whereis -b filename #列出所有名为filename且为binary格式的文件 -m为说明文件;-s为源文件;-u 为其他文件
- locate -i Ab #列出所有文件名包含Ab的文件,-i表示忽略大小写
ln:创建连接。Linux/Unix 文件系统中,有所谓的连接(link),我们可以将其视为文件的别名。而连接又可分为两种 : 硬连接(hard link)与软连接(symbolic link)。硬连接的意思是一个文件可以有多个名称;而软连接的方式则是产生一个特殊的文件,该档案的内容是指向另一个文件的位置。(硬连接是存在同一个文件系统中,而软连接却可以跨越不同的文件系统。若源文件删除了,只要指向源文件的硬连接文件数量不为零,则仍可通用硬连接查看到源文件的内容;但通过指向源文件的软链接文件则不可查看到源文件的内容了。)例:
- ln -s yy zz #将文件 yy 产生一个 symbolic link : zz
- ln yy xx #将文件 yy 产生一个 hard link : zz
cp:复制文件。例:
- cp -a src dest #尽可能将源文件状态、权限等资料都照原状予以复制到目标文件
- cp -f src dest #若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制
- cp -r src dest #若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地
mv: 移动文件。例:
- mv -i A /root/abc #将文件A移动至目标文件夹中,若目标文件夹中存在同名文件,则询问是否覆盖
- mv A B #将文件A更名为B
touch:创建文件或改变档案的时间记录。例:
- touch file #将档案的时候记录改为现在的时间。若档案不存在,系统会建立一个新的档案
- touch -c -t 05061803 file #将 file 的时间记录改为 5 月 6 日 18 点 3 分,公元两千年。时间的格式可以参考 date 指令,至少需输入 MMDDHHmm ,就是月日时与分。-c表示若file不存在,则不新建名为file的文件
- touch -r referencefile file #将 file 的时间记录改变成与 referencefile 一样
二、磁盘管理/维护
ls:列出文件列表。例:
- ls -al /root #列出/root下的所有文件(包括隐藏文件)及其详细信息
mount:将某个档案的内容解读成文件系统,然后将其挂在目录的某个位置之上。当这个命令执行成功后,直到我们使用 umnount 将这个文件系统移除为止,这个命令之下的所有文件将暂时无法被调用。
- #mount -o ro /dev/hda1 /mnt #将 /dev/hda1 用唯读模式挂在 /mnt 之下
mkdir:创建文件夹;
- mkdir -p BBB/Test #在工作目录下的 BBB 目录中,建立一个名为 Test 的子目录。若 BBB 目录原本不存在,则建立一个。本例若不加 -p,且原本 BBB目录不存在,则产生错误。
dd:可用于制作备份。例:
- dd if=/dev/hdc of=/tmp/mbr.back bs=512 count=1 #将磁盘第一个扇区备份下来。if表示input file;of表示output file;bs表示block size(默认为512bytes);count表示bs的数量。
df: 显示文件系统的整体磁盘使用量。例:
- df -h /etc #将/etc下面的可用的磁盘容量以容量格式显示。若无参数-h,则文件容量的单位为1kb
- df -ih #将目前各个分区当中可用的inode数量列出。参数-i表示以inode的数量来显示文件的容量
du:显示指定的目录或文件所占用的磁盘空间。例:
- du /etc #列出/etc目录下的目录、子目录和文件的容量。给出的结果中,/etc下面的子目录容量为其中文件容量的加和,最终的/etc容量为列出的所有文件和目录的容量加和。
- du -a #列出所有的文件与目录容量。若无参数-a,则仅统计当前目录下的文件容量
- du -sm /* #列出根目录下面每个目录(不列出目录中的子目录)所占用的容量。-s表示列出总量而不是每个各别目录占用的容量,-m表示以MB为单位列出容量
fdisk:观察硬盘之实体使用情形与分割硬盘用
- fdisk -l /dev/sda #观察硬盘之实体使用情形
- fdisk /dev/sda #进入分割硬盘模式
三、备份压缩
tar:打包文件。例:
- tar -jcvf filename.tar.bz2 srcFile #将源文件srcFile压缩打包并命名新文件为filename.tar.bz2。-j表示用bzip2方式进行压缩/解压缩;-c表示新建打包文件;-v表示在压缩/解压缩的过程中,将正在处理的文件名显示出来; -f 后面要接被处理的文件名。
- tar -zxvf filename.tar.gz #将压缩文件filename.tar.bz2解压缩. -x表示解压缩; -z表示通过gzip支持压缩/解压缩。
gzip:压缩命令,可解开compress,zip,gzip等软件所压缩的文件。新建的压缩文件名以.gz结尾。例:
- gzip -v man.config #压缩man.config文件至man.config.gz文件中
- gzip -d man.config.gz #解压缩man.config.gz文件
四、文档编辑
sed:处理standard imput的文本,所做的处理包括替换、删除、新增和选取特定行等。
- nl /etc/passwd|sed '2,$d' #删除/etc/passwd中从第2行开始到最后一行的数据。d表示删除
- nl /etc/passwd|sed '2a drink tea' #在/etc/passwd的第二行加上“drink tea”字样。a表示之后的字符串会在目前的下一行显示;i表示之后的字符串会在目前的上一行显示。
- nl /etc/passwd|sed -f filename #将依据filename中的内容对nl /etc/passwd的输出进行处理
- nl /etc/passwd|sed -n '5,7p' #仅列出/etc/passwd文件内的第5-7行。-n表示安静模式,只有经过sed特殊处理的那一行才会被列出来
- sed -i "s/hello/world/g" ·grep hello -rl /www· #将查出/www中的所有文件中包含hello的文件,并使用world来替换掉文件中的hello一词。
awk:一个非常棒的处理数据的工具。sed常常作用于一事先的处理,awk则比较倾向将一行分成数个“字段”来处理。以下仅举两个比较简单的例子:
- last -n 5|awk '{print $1 "\t" $3}' #将last -n 5的输出中的第1列和第3列输出在屏幕上,第1列和第3列之间用制表符隔开
- last -n 5|awk '{print $1 "\t lines: " NR "\t columes: " NF}' #打印last -n 5输出的第1列,并且打印每列所在的行号(NR),和每行拥有的字段总数(NF)
cut/grep:选取命令(针对“行”来分析,而非整篇信息)
- echo $PATH|cut -d ':' -f 3,5 #以':'作为分隔,选取第3和第5个路径。-d后接分隔符;-f后接取第几段
- last|grep 'root' #若last的输出中含有root,则将含有root的那一行显示出来
- last|grep -v 'root' #在屏幕上显示last的输出中不含root的所有行。 -v表示反向选择。
- dmesg | grep -n -A3 -B2 --color=auto 'eth' #查找到含有eth字符串的行,及其前3行和后2行,并显示行号和颜色
head/tail:head表示文件的前n行;tail表示文件的最后n行
- nl /etc/passwd|head -n 20|tail -n 10 #显示文件/etc/passwd的第10至19行
五、系统管理
ps: 显示进程的瞬间状态
- ps aux #查看系统所有的进程数据。注意:此处aux前没有-号
- ps -l #查看自己的bash程序的进程数据
top:动态查看进程的变化
- top -d 2 #每2秒更新一次整个进程的数据。默认为5秒,此处设定为2秒
- top -d 2 -p PID #每2秒更新一次进程号为PID的数据
kill:送出一个特定的信号 (signal) 给进程号为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号
- kill -9 PID #强制终止进程号为PID的进程
- kill -15 PID #以正常步骤结束进程号为PID的进程
chkconfig: 主要用来更新(启动或停止)和查询系统服务的运行级信息。
- chkconfig --list|grep mysqld #查看系统的开机启动项
- chkconfig --level 3 mysqld on #将tty3的mysqld设置为开机自动启动
&/[ctrl]+z/jobs/fg/bg/onhup:工作管理命令。&表示直接将命令丢到后台中“执行”;[ctrl]+z将目前的工作丢到后台中“暂停”;jobs查看目前的后台工作状态;fg将后台工作拿到前台来处理;bg让工作在后台下的状态变成运行中;nohup表示当离开终端时,后台执行的任务不受影响。
- tar -zpcf /tmp/etc.tar.gz /etc & #将打包命令放到后台执行
- find / -print #执行这个命令后,屏幕会非常忙碌。按下[ctrl]+z,任务暂停。屏幕上会出现[1],表示这是第一个工作,而+代表最近一个被丢进后台的工作,且目前在后台下默认会被取胜的那个工作(与fg这个命令有关)
- jobs -l #列出job number与命令串和PID号码。-l表示列出PID号码
- fg %jobnumber #将工作号为jobnumber的进程放到前台执行
- bg %jobnumber #将工作号为jobnumber的进程在后台执行
- nohup ./sleep500.sh & #在工作管理当中提到的“后台”指的是在终端机模式下避免[ctrl]+c中断的一个情境,不是系统的后台。所以,工作管理的后台依旧与终端机有关。当离开终端机后,以&方式放到后台去的工作就会停止执行了。而使用nohup命令可以让你在脱机或注销系统后还能让工作继续进行。注意:nohup不支持bash内置的命令,因为命令必须是外部命令才行。
六、网络通讯
netstat:查看整个Linux系统的网络情况
- netstat -tunlp #查看系统中提供的tcp和udp服务。-t表示 tcp网络数据包数据;-u表示udp网络数据包数据;-n表示不列出进程的服务名称,以端口号来显示;-l表示网络监听(listen)服务;-p表示该网络服务的进程PID
tcpdump:抓取网络传输数据。详见:http://www.cnblogs.com/sunada2005/archive/2013/03/20/2971367.html
- tcpdump -i eth0 -w test.pcap tcp port 23 host 210.27.48.1 #抓取从接口eth0进来的,端口号23,源或目的IP为210.27.48.1的网络量,并将这些数据记录在test.pcap文件中(不显示在屏幕上)
ip/route: 修改主机IP和route信息
- ip addr add 192.168.1.2/24 dev eth2 #给eth2上新增一个ip
- route add default gw 192.168.1.1 #新增一个默认网关
scp:利用ssh协议传输文件
- scp file1 desIP:dir #将当前目录下的file1文件传输到目的地址为desIP的目录dir中
七、杂七杂八
date:系统时间相关。
- date -s "2007-08-03 14:15:00" #修改当前时间为2007-08-03 14:15:00
- date -d "1 days ago" +%Y-%m-%d #显示当时1天前的年月日