玩转Linu - 常用的命令和操作

简述

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

本文将持续更新...

chkconfig

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

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

语法

chkconfig [--add][--del][--list][系统服务]或chkconfig [--level ][系统服务][on/off/reset]

参数:

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

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

  3. --level  指定读系统服务要在哪一个执行等级中开启或关毕。

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

# chkconfig -list 

开启服务。

//列出chkconfig所知道的所有的服务的情况# chkconfig -list//开启Telnet服务 # chkconfig telnet on 

关闭服务

//列出chkconfig所知道的所有的服务的情况# chkconfig -list //关闭Telnet服务# chkconfig telnet off  

hostname

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

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

  2. hostname –d 显示机器所属域名

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

  4. 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 bytesifconfig 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 //将会显示使用该端口的应用程序的进程idnetstat -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 exprexp1 -or exp2exp1, 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 destmv [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 test3 Are you like awkThis's a test10 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
  1. 关于awk命令的详情:http://www.runoob.com/linux/linux-comm-awk.html

关键字:bash, shell, linux

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部