2

简述

每个程序员基本都应该用过Linux操作系统,有的用来搭建服务器,有的用来安装前端扩展插件工具等等,但是无一例外都是需要操作Linux,所以我这次分享一些常见的实用的命令。

本文将持续更新...

chkconfig

chkconfig命令用于检查,设置系统的各种服务。

chkconfig 可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。

语法

chkconfig [--add][--del][--list][系统服务]

或

chkconfig [--level <等级代号>][系统服务][on/off/reset]

参数:

  • --add  增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。

  • --del  删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。

  • --level<等级代号>  指定读系统服务要在哪一个执行等级中开启或关毕。

实例列出chkconfig所知道的所有命令。

# chkconfig -list 

开启服务。

//列出chkconfig所知道的所有的服务的情况
#  chkconfig -list

//开启Telnet服务 
# chkconfig telnet on 

关闭服务

//列出chkconfig所知道的所有的服务的情况
# chkconfig -list 

//关闭Telnet服务
# chkconfig telnet off  

hostname

这个命令主要是用来查看机器的域名活IP地址的。

  • hostname 没有选项,显示主机名字

  • hostname –d 显示机器所属域名

  • hostname –f 显示完整的主机名和域名

  • hostname –i 显示当前机器的ip地址

ping

ping 命令将数据包发向用户指定地址。当包被接收。目标机器发送返回数据包。

ping 主要有两个作用

  1. 用来确认网络连接是畅通的。

  2. 用来查看连接的速度信息。

如果你 ping www.yahoo.com 它将返回它的ip地址 。你可以通过 ctrl+C 来停止命令。

ifconfig

Linux中 ifconfig 命令用于显示或设置网络设备。

ifconfig 可设置网络设备的状态,或是显示目前的设置。

案例:

1、显示网络设备信息:ifconfig

eth0   Link encap:Ethernet HWaddr 00:50:56:0A:0B:0C 
     inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0
     inet6 addr: fe80::250:56ff:fe0a:b0c/64 Scope:Link
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:172220 errors:0 dropped:0 overruns:0 frame:0
     TX packets:132379 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000 
     RX bytes:87101880 (83.0 MiB) TX bytes:41576123 (39.6 MiB)
     Interrupt:185 Base address:0x2024 

lo    Link encap:Local Loopback 
     inet addr:127.0.0.1 Mask:255.0.0.0
     inet6 addr: ::1/128 Scope:Host
     UP LOOPBACK RUNNING MTU:16436 Metric:1
     RX packets:2022 errors:0 dropped:0 overruns:0 frame:0
     TX packets:2022 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:0 
     RX bytes:2459063 (2.3 MiB) TX bytes:2459063 (2.3 MiB)

2、启动关闭指定网卡:

ifconfig eth0 down(关)
ifconfig eth0 up(开)

3、为网卡配置和删除IPv6地址:

ifconfig eth0 add 33ffe:3240:800:1005::2/ 64 //为网卡诶之IPv6地址
ifconfig eth0 del 33ffe:3240:800:1005::2/ 64 //为网卡删除IPv6地址

4、用ifconfig修改MAC地址

ifconfig eth0 down //关闭网卡
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改MAC地址
ifconfig eth0 up //启动网卡
ifconfig eth1 hw ether 00:1D:1C:1D:1E //关闭网卡并修改MAC地址 
ifconfig eth1 up //启动网卡

5、配置IP地址

//给eth0网卡配置IP地址
ifconfig eth0 192.168.1.56 

// 给eth0网卡配置IP地址,并加上子掩码
ifconfig eth0 192.168.1.56 netmask 255.255.255.0 

// 给eth0网卡配置IP地址,加上子掩码,加上个广播地址
ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255

6、启用和关闭ARP协议

ifconfig eth0 arp  //开启
ifconfig eth0 -arp  //关闭

7、设置最大传输单元

//设置能通过的最大数据包大小为 1500 bytes
ifconfig eth0 mtu 1500 

nslookup

nslookup命令是常用域名查询工具,就是查DNS信息用的命令。

nslookup 这个命令在 有ip地址时,可以用这个命令来显示主机名,可以找到给定域名的所有ip地址。(必须连接到互联网才能使用这个命令)

例子:nslookup www.baidu.com

你也可以使用 nslookup 从ip获得主机名或从主机名获得ip。

【系统没有nslookup命令?】

如果你的Linux系统没有nslookup命令,那么八成是你没有安装bind-utils包。

直接yum install bind-utils就可以解决问题了。

netstat

Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

netstat是发现主机连接最有用最通用的Linux命令。

你可以使用"netstat -g"查询该主机订阅的所有多播组(网络)。

netstat -nap | grep port //将会显示使用该端口的应用程序的进程id
netstat -a  or netstat –all //将会显示包括TCP和UDP的所有连接  
netstat --tcp  or netstat –t //将会显示TCP连接
netstat --udp or netstat –u //将会显示UDP连接
netstat -g //将会显示该主机订阅的所有多播网络。

chmod

Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。

利用 chmod 可以藉以控制文件如何被他人所调用。

使用权限 : 所有使用者

语法:

chmod [-cfvR] [--help] [--version] mode file...

参数说明:

mode : 权限设定字串,格式如下 :
[ugoa...][[+-=][rwxX]...][,...]

其中:
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。

+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。

r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本

实例:

将文件 file1.txt 设为所有人皆可读取 :

chmod ugo+r file1.txt

将文件 file1.txt 设为所有人皆可读取 :

chmod a+r file1.txt

将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w file1.txt file2.txt

将 ex1.py 设定为只有该文件拥有者可以执行 :

chmod u+x ex1.py

将目前目录下的所有文件与子目录皆设为任何人可读取 :

chmod -R a+r *

此外chmod也可以用数字来表示权限如 :

chmod 777 file

语法为:

chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=5。
chmod a=rwx file
和
chmod 777 file
效果相同
chmod ug=rwx,o=x file
和
chmod 771 file
效果相同

若用chmod 4755 filename可使此程序具有root的权限。

find

find 命令用来在指定目录下查找文件。

任何位于参数之前的字符串都将被视为欲查找的目录名。

如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

语法

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} ;

参数说明 :

find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。

如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去 n 天过读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去 n 天过修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。

d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
s: socket

-pid n : process id 是 n 的文件
你可以使用 ( ) 将运算式分隔,并使用下列运算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2

实例:

将目前目录及其子目录下所有延伸档名是 c 的文件列出来。

find . -name "*.c"

将目前目录其其下子目录中所有一般文件列出

find . -ftype f

将目前目录及其子目录下所有最近 20 分钟内更新过的文件列出

find . -ctime -20

查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:

find /var/logs -type f -mtime +7 -ok rm { } ;

查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:

find . -type f -perm 644 -exec ls -l { } ;

为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:

find / -type f -size 0 -exec ls -l { } ;

查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:

find /var/logs -type f -mtime +7 -ok rm { } ;

mv

mv 命令用来为文件或目录改名、或将文件或目录移入其它位置。

语法:

mv [options] source dest
mv [options] source... directory

参数说明:

-i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
-f: 在mv操作要覆盖某已有的目标文件时不给任何指示;

mv参数设置与运行结果
命令格式 运行结果
mv 文件名 文件名 将源文件名改为目标文件名
mv 文件名 目录名 将文件移动到目标目录
mv 目录名 目录名 目标目录已存在,将源目录
移动到目标目录;目标
目录不存在则改名
mv 目录名 文件名 出错

实例:

将文件 aaa 更名为 bbb :

mv aaa bbb

将info目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs。

mv info/ logs

再如将/usr/student下的所有文件和目录移到当前目录下,命令行为:

mv /usr/student/*

cp

cp命令主要用于复制文件或目录。

语法

cp [options] source dest

cp [options] source... directory

参数说明:

-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。

实例:

// 使用指令"cp"将当前目录"test/"下的所有文件复制到新目录"newtest"下,输入如下命令:

cp –r test/ newtest

注意:用户使用该指令复制目录时,必须使用参数"-r"或者"-R"。

awk

AWK是一种处理文本文件的语言,是一个强大的文本分析工具。

之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符。

语法

awk [选项参数] 'script' var=value file(s)

awk [选项参数] -f scriptfile var=value file(s)

选项参数说明:

// 指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
-F fs or --field-separator fs

// 赋值一个用户定义变量。
-v var=value or --asign var=value

// 从脚本文件中读取awk命令。
-f scripfile or --file scriptfile

// 对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。
// 这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
-mf nnn and -mr nnn

// 在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。
-W compact or --compat, -W traditional or --traditional

// 打印简短的版权信息。
-W copyleft or --copyleft, -W copyright or --copyright

// 打印全部awk选项和每个选项的简短说明。
-W help or --help, -W usage or --usage

// 打印不能向传统unix平台移植的结构的警告。
-W lint or --lint

// 打印关于不能向传统unix平台移植的结构的警告。
-W lint-old or --lint-old

// 打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符**和**=不能代替^和^=;fflush无效。
-W posix

// 允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。
-W re-interval or --re-inerval

// 使用program-text作为源代码,可与-f命令混用。
-W source program-text or --source program-text

// 打印bug报告信息的版本。
-W version or --version

基本用法:

log.txt文本内容如下:

2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo

用法一:

awk '{[pattern] action}' {filenames}   // 行匹配语句 awk '' 只能用单引号

实例:

// 每行按空格或TAB分割,输出文本中的1、4项

awk '{print $1,$4}' log.txt

---------------------------------------------
2 a
3 like
This's
10 orange,apple,mongo

// 格式化输出
 awk '{printf "%-8s %-10s\n",$1,$4}' log.txt

---------------------------------------------
2 a
3 like
This's
10 orange,apple,mongo

用法二:

awk -F  // -F相当于内置变量FS, 指定分割字符

实例:

// 使用","分割

awk -F, '{print $1,$2}'   log.txt

---------------------------------------------
2 this is a test
3 Are you like awk
This's a test
10 There are orange apple

 // 或者使用内建变量
 awk 'BEGIN{FS=","} {print $1,$2}'     log.txt

---------------------------------------------
2 this is a test
3 Are you like awk
This's a test
10 There are orange apple

 // 使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割
 awk -F '[ ,]'  '{print $1,$2,$5}'   log.txt

---------------------------------------------
2 this test
3 Are awk
This's a
10 There apple

用法三:

awk -v  // 设置变量

实例:

awk -va=1 '{print $1,$1+a}' log.txt

---------------------------------------------
2 3
3 4
This's 1
10 11

awk -va=1 -vb=s '{print $1,$1+a,$1b}' log.txt

---------------------------------------------
2 3 2s
3 4 3s
This's 1 This'ss
10 11 10s

用法四:

awk -f {awk脚本} {文件名}

实例:

awk -f cal.awk log.txt

AlphaGooo
1.1k 声望135 粉丝

你想要什么,就去追求什么