linux常用命令

linux常用命令全集可参见:http://linux.chinaitlab.com/special/linuxcom/

一、文件管理

cat: 读取文件内容。例:

  • cat filename

more:类似cat,但将文件以一页一页的显示,方便使用者阅读。可使用空白键向下翻页,使用b键往回翻页,使用/后接字符串来搜索字符串。例:

  • more filename

less: 与More类似,可用来浏览文字档案的内容,允许使用者往回卷动。例:

  • less filename

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天前的年月日

jq: json数据格式化

  • cat json_raw.txt | jq .  若json_raw.txt不符合json规范,则会返回 null
  • cat json_raw.txt | jq '.location'  输出json中key为location的值
原文地址:https://www.cnblogs.com/sunada2005/p/3014014.html