11 系统工具管理

11.1 cat 命令

11.1.1 命令详解

cat命令主要把文件的内容打印到控制台上

11.1.2 参数说明

-n:在打印内容时带内容进行行数编号,对空行有显示

-b:和-n类似,只不过再显示时对数据行有空行的不显示

-s:把两行空行替换成一行空行进行显示

-e:等价于”-ve”选项

11.1.3 常用命令

11.1.3.1 查看文件中的内容

在以下的内容中可以看出中间有一行或两行的空格的数据

$ cat catTest.log

1

2

 

3

 

 

4

5

6

11.1.3.2 不统计空格行的显示

$ cat -b catTest.log

     1  1

     2  2

 

     3  3

 

 

     4  4

     5  5

     6  6

11.1.3.3 显示空格的显示

$ cat -n catTest.log

     1  1

     2  2

     3

     4  3

     5

     6

     7  4

     8  5

     9  6

11.1.3.4 把两行空格显示成一行空格

$ cat -s catTest.log

1

2

 

3

 

4

5

6

11.1.3.5 查看文件的前几行与后几行数据

一般的cat查看数据前几上与后几行都是与tail和head组合使用的

# cat catTest.log |tail -n 2

5

6

 

# cat catTest.log |head -n 2

1

2

11.1.3.6 查看数据的中间行的数据

test.log 文件是从1到100的数据值,tail  -n  +5是从head  -n  10到开始向上查5行数据

$ cat test.log |head -n 10|tail -n +5

5

6

7

8

9

10

*********

 

11.1.3.7

11.2 cal 命令

11.2.1 命令详解

日历命令,可以显示当月日历、当年日历、指定月份年份的日历等

11.2.2 命令参数

-j : 以当年的第一天开始计算,显示当天是第几天数

-y : 以星期的格式显示月历

-jy : 以一月一日起的天数显示全年日历

11.2.3 常用命令

11.2.3.1 查看当前的日历

查看当前月的日历

#  cal

六月 2018

日 一 二 三 四 五 六

1 2

3 4 5 6 7 8 9

10 11 12 13 14 15 16

17 18 19 20 21 22 23

24 25 26 27 28 29 30

11.2.3.2 查看当前是滴今年的第几天

# cal  -j

六月 2018

日 一 二 三 四 五 六

152 153

154 155 156 157 158 159 160

161 162 163 164 165 166 167

168 169 170 171 172 173 174

175 176 177 178 179 180 181

 

11.2.3.3 查看当前一年的天数信息 

#  cal  -jy

2018

一月 二月

日 一 二 三 四 五 六 日 一 二 三 四 五 六

1 2 3 4 5 6 32 33 34

7 8 9 10 11 12 13 35 36 37 38 39 40 41

14 15 16 17 18 19 20 42 43 44 45 46 47 48

21 22 23 24 25 26 27 49 50 51 52 53 54 55

28 29 30 31 56 57 58 59

****************

 

11.3 date命令

11.3.1 命令详解

显示系统的时间或日期

11.3.2 参数说明

%H 小时(以 00-23 来表示)。

%I 小时(以 01-12 来表示)。

%K 小时(以 0-23 来表示)。

%l 小时(以 0-12 来表示)。

%M 分钟(以 00-59 来表示)。

%P AM 或 PM。

%r 时间(含时分秒,小时以 12 小时 AM/PM 来表示)。

%s 总秒数。起算时间为 1970-01-01 00:00:00 UTC。

%S 秒(以本地的惯用法来表示)。

%T 时间(含时分秒,小时以 24 小时制来表示)。

%X 时间(以本地的惯用法来表示)。

%Z 市区。

%a 星期的缩写。

%A 星期的完整名称。

%b 月份英文名的缩写。

%B 月份的完整英文名称。

%c 日期与时间。只输入 date 指令也会显示同样的结果。

%d 日期(以 01-31 来表示)。

%D 日期(含年月日)。

%j 该年中的第几天。

%m 月份(以 01-12 来表示)。

%U 该年中的周数。

%w 该周的天数,0 代表周日,1 代表周一,异词类推。

%x 日期(以本地的惯用法来表示)。

%y 年份(以 00-99 来表示)。

%Y 年份(以四位数来表示)。

%n 在显示时,插入新的一行。

%t 在显示时,插入 tab。

MM 月份。

DD 日期。

hh 小时。

mm 分钟。

11.3.3 常用命令

11.3.3.1 查看当前的日期

#  date

2018年06月 8日 15:56:47

11.3.3.2 手动同步系统时间

# date -s "2016-09-27 16:40:30"

 

以下是把设置的时间写入到磁盘

# clock -w

# hwclock -w

 

使用网络同步时间

# ntpdate asia.pool.ntp.org 或

# ntpdate  210.72.145.44

11.3.3.3 设置中国区域的时区

查看时区

# cat /etc/sysconfig/clock

ZONE="America/Los_Angeles"

 

手动设置时区

# tzselect

Please identify a location so that time zone rules can be set correctly.

Please select a continent or ocean.

1) Africa

2) Americas

3) Antarctica

4) Arctic Ocean

5) Asia

6) Atlantic Ocean

7) Australia

8) Europe

9) Indian Ocean

10) Pacific Ocean

11) none - I want to specify the time zone using the Posix TZ format.

#? 5

Please select a country.

1) Afghanistan 18) Israel 35) Palestine

2) Armenia 19) Japan 36) Philippines

3) Azerbaijan 20) Jordan 37) Qatar

4) Bahrain 21) Kazakhstan 38) Russia

5) Bangladesh 22) Korea (North) 39) Saudi Arabia

6) Bhutan 23) Korea (South) 40) Singapore

7) Brunei 24) Kuwait 41) Sri Lanka

8) Cambodia 25) Kyrgyzstan 42) Syria

9) China 26) Laos 43) Taiwan

10) Cyprus 27) Lebanon 44) Tajikistan

11) East Timor 28) Macau 45) Thailand

12) Georgia 29) Malaysia 46) Turkmenistan

13) Hong Kong 30) Mongolia 47) United Arab Emirates

14) India 31) Myanmar (Burma) 48) Uzbekistan

15) Indonesia 32) Nepal 49) Vietnam

16) Iran 33) Oman 50) Yemen

17) Iraq 34) Pakistan

#? 9

Please select one of the following time zone regions.

1) east China - Beijing, Guangdong, Shanghai, etc.

2) Heilongjiang (except Mohe), Jilin

3) central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc.

4) most of Tibet & Xinjiang

5) west Tibet & Xinjiang

#? 1

The following information has been given:

China

east China - Beijing, Guangdong, Shanghai, etc.

Therefore TZ='Asia/Shanghai' will be used.

Local time is now: Sat Dec 31 22:25:15 CST 2016.

Universal Time is now: Sat Dec 31 14:25:15 UTC 2016.

Is the above information OK?

1) Yes

2) No

#? 1

You can make this change permanent for yourself by appending the line

TZ='Asia/Shanghai'; export TZ

to the file '.profile' in your home directory; then log out and log in again.

Here is that TZ value again, this time on standard output so that you

can use the /usr/bin/tzselect command in shell scripts:

Asia/Shanghai

 

 

把上海的时区写入到磁盘中,在写入时选择覆盖即可

# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# hwclock

# date

Sat Dec 31 23:09:50 CST 2016

11.3.3.4 按照指定的格式显示时间

按照年月日的格式显示时间

# date  + "%Y%m%d”

 

在之前的基础上向上加5天

# date  + "%Y%m%d” -d “5 day”

 

date +%Y%m%d               #显示前天年月日

 

 

 

获取明天的日期

date "+%Y-%m-%d %H:%M:%S" -d "next-day"

date "+%Y-%m-%d %H:%M:%S" -d "next day"

date '+%Y-%m-%d %H:%M:%S' -d tomorrow

date  +%Y%m%d  -d "+1 day"

 

 

获取上一天的日期

date  "+%Y-%m-%d %H:%M:%S" -d "last-day"

date  "+%Y-%m-%d %H:%M:%S" -d "last day"

date  "+%Y-%m-%d %H:%M:%S" -d yesterday

date  +%Y%m%d  -d "-1 day"

 

 

获取上一周的时间

date  "+%Y-%m-%d %H:%M:%S" -d "-d next-week"

date  "+%Y-%m-%d %H:%M:%S" -d "next-monday"

date  "+%Y-%m-%d %H:%M:%S" -d next-thursday

 

获取下一个月的日期

date  "+%Y-%m-%d %H:%M:%S" -d "next-month"

date  +%Y%m%d -d "+1 month"

 

 

获取上一个月的日期

date  "+%Y-%m-%d %H:%M:%S" -d "last-month"

date  +%Y%m%d  -d "-1 month"

 

 

获取下一年的日期

date "+%Y-%m-%d %H:%M:%S" -d "next-year"

date -d "+1 year" +%Y%m%d

 

获取上一年的日期

date  "+%Y-%m-%d %H:%M:%S" -d "last-year"

date  +%Y%m%d  -d "-1 year"

11.3.3.5 shell 中引用时间格式

以下的引号是tab键上面的`符号

#!bin/sh

testdata=`date +"%Y%m%d" -d "5 day"`

echo $testdata

 

 

$ sh testdata.sh

20180613

 

11.3.3.6 把Unix时间戳转化为date格式

生成unix时间

# date  +%s

1528945885

 

把unix时间转化为date时间

# date  -d@1528945885

2018年 06月 14日  星期四  11:11:25  CST

 

 

 

 

11.4 echo 命令

11.4.1 命令详解

echo 命令主要在控制台打印先关的输出信息

11.4.2 参数说明

-n 不要在最后自动换行

-e 若字符串中出现以下字符,必须加-e参数,则特别加以处理,否则他部门就会把以下字符当做字符输出

\a 发出警告声

\b 删除前一个字符

\c 最后不加上换行符号

\f 换行但光标仍旧停留在原来的位置

\n 换行且光标移至行首

\r 光标移至行首,但不换行

\t 插入 tab

\v 与\f 相同

\\ 插入\字符

\nnn 插入 nnn(八进制)所代表的 ASCII 字符

–help 显示帮助

–version 显示版本信息

11.4.3 常用命令

11.4.3.1 在控制台打印输出信息

# echo  “this  a  test”

this  a  test

11.4.3.2 处理特殊字符

# echo  -e  “this a test \t test ”

this a test  test

 

11.5 free命令

11.5.1 命令详解

此命令主要显示系统的内存的情况

11.5.2 参数说明

-b 以Byte为单位显示内存使用情况。

-k 以KB为单位显示内存使用情况。

-m 以MB为单位显示内存使用情况。

-o 不显示缓冲区调节列。

-s<间隔秒数> 持续观察内存使用状况。

-t 显示内存总和列。

-V 显示版本信息。

11.5.3 常用命令

11.5.3.1 以可读的形式显示内存的情况

以下命令是比较常用的,可以简单的显示内存的使用情况

#  free -h

total used free shared buff/cache available

Mem: 2.9G 2.0G 206M 62M 739M 724M

Swap: 2.0G 68M 1.9G

 

 

# free -b

total used free shared buff/cache available

Mem: 3147272192 2158833664 210280448 67772416 778158080 753848320

Swap: 2147479552 71303168 2076176384

11.6 rpm命令

11.6.1 命令详解

rpm 命令主要对软件包进行操作

11.6.2 参数说明

-a:查询所有套件

-b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称

-c:只列出组态配置文件,本参数需配合"-l"参数使用

-d:只列出文本文件,本参数需配合"-l"参数使用

-e<套件档>或--erase<套件档>:删除指定的套件

-f<文件>+:查询拥有指定文件的套件

-h或--hash:套件安装时列出标记

-i:显示套件的相关信息

-i<套件档>或--install<套件档>:安装指定的套件档

-l:显示套件的文件列表

-p<套件档>+:查询指定的RPM套件档

-q:查询是否安装

-R:显示套件的关联性信息

-s:显示文件状态,本参数需配合"-l"参数使用

-U<套件档>或--upgrade<套件档>:升级指定的套件档

-v:显示指令执行过程

 

--nodeps:强制安装

-qi:查看软件的说明资料

-ivh:安装软件

-e:删除软件

-ql:查询该软件的所有的目录

-V:查询软件是否变更过

-Uvh:升级软件包(-U参数是告诉RPM先删除原先的版本,再安装新的版本)

--test:测试安装

11.6.3 常用命令

11.6.3.1 安装软件包

nodeps 参数说明去除依赖

# rpm  -ivh  vsftpd-2.0.5-16.e15.i386.rpm  --nodeps

11.6.3.2 查找系统中安装的软件包

# rpm -qa | grep  openjdk

11.6.3.3 卸载软件包

# rpm  -e  openjdk  --nodeps

11.6.3.4 更新软件包

U是upgrade的意思

# rpm  -U  vsftpd-2.0.5-16.e15.i386.rpm

11.7 server命令

11.7.1 命令详解

server 命令主要对服务进行操作

11.7.2 参数说明

-h:显示帮助信息

-status-all:显示所有的服务的状态

11.7.3 常用命令

11.7.3.1 查看网络的状态

# server  network  status

# server  network  restart

 

11.8 shutdown命令

11.8.1 命令介绍

shutdown 主要操作计算机的关闭程序,并把该消息通知给其他的用户,也可以用作重启机器。

11.8.2 参数说明

-t:设置在几秒内进行关闭程序

-r : 关闭后重启机器

-k:把关机的警告传递给其他的用户,并不会关闭机器

-h:关闭计算机后重启

-H:强制关机

-f:关闭计算机时不做fsck动作(检查linux系统中的保存文档)

-F:关闭计算机强制做fsck动作

time:设置关机时间

message:把消息传送给所有用户的信息

11.8.3 常用命令

11.8.3.1 立刻关机命令

# shutdown -h now

11.8.3.2 立刻重启机器

# shutdown  -r

11.8.3.3 制定时间关闭机器并把消息传送给所有用户

# shutdown +5 "system  willshutdown  after 5 minutes"

11.8.3.4 十分钟之后关机

# shutdown -h +10

11.8.3.5 等于立马关机

# halt

11.8.3.6 重启命令

# reboot

11.9 su命令

11.9.1 命令介绍

此命令主要改变用户的身份角色

11.9.2 参数说明

-m,-p:改变用户身份,但不改变环境变量的信息

-f 或--fast 适用于 csh 与 tsch,使 shell 不用去读取启动文件

-s<shell>或--shell=<shell> 指定要执行的 shell

-f 或--fast 适用于 csh 与 tsch,使 shell 不用去读取启动文件

11.9.3 常用命令

11.9.3.1 切换到root用户

# su   root

11.9.3.2 切换用户身份但不改变环境变量

# su  -m  tourist

bash-4.2$

11.10 sync命令

11.10.1 命令介绍

此命令主要把内存的缓冲区的信息写入到磁盘

11.10.2 参数说明

--help:显示帮助;

 --version:显示版本信息。

11.10.3 常用命令

11.10.4 执行清楚内存的缓存

#sync

# echo 1 > /proc/sys/vm/drop_caches

# echo 2 > /proc/sys/vm/drop_caches

# echo 3 > /proc/sys/vm/drop_caches

 

 

11.11 uname命令

11.11.1 命令介绍

此命令主要显示系统的详细信息

11.11.2 参数说明

-a或--all:显示全部的信息

-m或--machine:显示系统类型

-n或-nodename:显示在网络上的主机名称

-r或--release:显示操作系统的发行编号

-s或--sysname:显示操作系统名称

-v:显示操作系统的版本

-p或--processor:输出处理器类型或"unknown"

-i或--hardware-platform:输出硬件平台或"unknown"

-o或--operating-system:输出操作系统名称

11.11.3 常用命令

11.11.3.4 显示系统详细的信息

#uname  -a

Linux localhost.localdomain 3.8.13-55.1.6.el7uek.x86_64 #2 SMP Wed Feb 11 14:18:22 PST 2015 x86_64 x86_64 x86_64 GNU/Linux

 

3.8.13-55.1.6.el7uek.x86_64 : 代表系统的编号

x86_64:系统的类型

11.11.3.5 查看系统类型

x86_64 代表64系统,i686代表32操作系统

# uname -m

x86_64

11.11.3.6 查看主机的名字

# uname -n

localhost.localdomain

11.11.3.7 查看系统的发行编号

# uname -r

3.8.13-55.1.6.el7uek.x86_64

11.12 uptime命令

11.12.1 命令介绍

此命令主要显示系统的负载情况

11.12.2 参数说明

-p : 按照格式显示系统运行的时间

-s : 显示系统开始统计时间

-V:显示此命令的版本

11.12.3 常用命令

11.12.3.1 查看运行时长

# uptime -p

up 1 hour, 33 minutes

11.12.3.2 显示此命令的版本

 # uptime  -V

uptime from procps-ng 3.3.10

11.13 useradd命令

11.13.1 命令介绍

此命令主要对系统添加用户

11.13.2 参数说明

-c  --comment COMMENT:加上备注文字

-d, --home-dir HOME_DIR 指定用户登入时的启始目录

-e, --expiredate EXPIRE_DATE 指定帐号的有效期限

-f, --inactive INACTIVE 指定在密码过期后多少天即关闭该帐号

-g, --gid GROUP 指定用户所属的群组

-m, --create-home 自动建立用户的登入目录

-M :--no-create-home不要自动建立用户的登入目录

-r, --system 建立系统帐号

-s, --shell SHELL 指定用户登入后所使用的shell

-u, --uid UID 指定用户id

11.13.3 常用命令

11.13.4 创建系统用户

# useradd  xiaozhang

11.13.5 创建一个新用户给设定时间

# useradd -f  1  xiaozhang

11.14 userdel命令

11.14.1 命令介绍

此命令主要删除系统上的用户信息

11.14.2 参数说明

-f:强制删除用户,即使用户当前已登录;

-r:删除用户的同时,删除与用户相关的所有文件。

11.14.3 常用命令

11.14.3.1 删除系统上的用户

# userdel xiaozhang

11.14.3.2 删除与该用户相关的文件

以下是删除该用户病删除该用户相关的文件

# userdel  -r  xiaozhang

11.15 vi命令

11.15.1 命令介绍

vi此命令主要对系统上文件进行编辑,此命令分为命令模式、插入模式、末行模式

11.15.2 参数说明

11.15.2.1 全部参数详解

a:在当前字符后添加文本

A:在行末添加文本

i:在当前字符前插入文本

I:在行首插入文本

o:在当前行后面插入一空行

O:在当前行前面插入一空行

:wq  保存并推出

:w 将制定的文件保存起来

:q! 不保存而强制退出

:w!:在命令模式下,执行强制存盘操作

:q:在命令模式下,执行退出vi操作

:q!:在命令模式下,执行强制退出vi操作

:e文件名:在命令模式下,打开并编辑指定名称的文件

:n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件

:f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例

:set number:在命令模式下,用于在最左端显示行号。

:set nonumber:在命令模式下,用于在最左端不显示行号。

永久显示行号需要修改配置文件在~/.vimrc  中输入 set nu 即可

命令行模式下使用 ?user_id  进行高亮显示

11.15.2.2 不同模式下的命令详解

11.15.2.2.1 命令模式常用命令

向右移动 --> l

向左移动 --> h

向下移动 --> j

向上移动 --> k

删除光标所在位置的字符 --> x

删除光标所在的行 --> dd(敲 d 两次)

保存当前修改并退出 --> ZZ

撤销上一步操作 --> u

移动光标到行首 --> 0 (数字 0)

移动光标到行末 --> $

移动光标到当前页最顶行 --> H

移动光标到当前页最底行 --> L

向前翻一页(Page Up) --> Ctrl + f

向后翻一页(Page Down) --> Ctrl + b

复制当前行的数据 --> yy

粘贴已经复制的数据 --> p

把当前行第一次出现的 old 字符串替换成 new 字符串 --> :s/old/new

把当前行出现的所有 old 字符串替换陈 gnew 字符串 --> :s/old/new/g

把文件中出现的所有 old 字符串替换陈 gnew 字符串 --> :%s/old/new/g

退出并保存 --> ZZ

在行首插入制定的关键字:%s/^/01

在行尾插入制定的关键字:%s/$/02

在指定的行数内插入内容:4,6s/^/01 或 :4,6s/$/01

11.15.2.2.2 插入模式常用命令

在光标 左侧输入正文[常用] --> i

在光标 右侧输入正文[常用] --> a

在光标所在行的 下一行增添新行 --> o

在光标所在行的 上一行增添新行 --> O

在光标 所在行的开头输入正文 --> I

在光标 所在行的末尾输入正文 --> A

11.15.2.2.3 末行模式

保存文件 [常用] --> w

将当前文件的内容保存到 file 文件 --> w file

保存文件并退出 vi 编辑器[常用] --> wq

读取 file 文件的内容,插入当前光标所在行的后面 --> r file

退出 vi 编辑器(如果当前文件有改动,则无法退出) --> q

强制退出 vi 编辑器(不保存修改)[常用] --> q!

11.15.2.3 移动光标的操作

vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。

  按「ctrl」+「b」:屏幕往"后"移动一页。

  按「ctrl」+「f」:屏幕往"前"移动一页。

  按「ctrl」+「u」:屏幕往"后"移动半页。

  按「ctrl」+「d」:屏幕往"前"移动半页。

  按数字「0」:移到文章的开头。

    按数字「gg」:移到文章的开头。

  按「G」:移动到文章的最后。

  按「$」:移动到光标所在行的"行尾"。

  按「^」:移动到光标所在行的"行首"

  按「w」:光标跳到下个字的开头

  按「e」:光标跳到下个字的字尾

  按「b」:光标回到上个字的开头

    按「dG」:光标回到首行快速删除所有内容

按「#l」:光标移到该行的第#个位置,如:5l,56l。

11.15.2.4 删除文字操作

「x」:每按一次,删除光标所在位置的"后面"一个字符。

「#x」:例如,「6x」表示删除光标所在位置的"后面"6个字符。

「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符。

「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符。

「dd」:删除光标所在行。

「#dd」:从光标所在行开始删除#行。

11.15.2.5 复制操作

11.15.2.5.1 单行复制

「yw」:将光标所在之处到字尾的字符复制到缓冲区中。

「#yw」:复制#个字到缓冲区

「yy」:复制光标所在行到缓冲区。

「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。

「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。

 

使用shift + v 键可以快速复制当前行的内容

11.15.2.5.2 多行复制

按住 v + 方向键或ghjk 选择复制的内容

y : 复制选中的内容

p : 粘贴选中的内容

11.15.2.6 替换操作

「r」:替换光标所在处的字符。

「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

 

11.15.2.7 回复到上一次操作

「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。

 

11.15.2.8 更改操作

「cw」:更改光标所在处的字到字尾处

「c#w」:例如,「c3w」表示更改3个字

11.15.2.9 跳到制定的行

「ctrl」+「g」列出光标所在行的行号。

「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

11.15.2.10 在行首插入制定的内容

查看测试数据

# cat  xiaoxu_test.log

 a

 b

 c

 d

 e

 F

 

 

在每一行的数据前面添加制定的内容

 

在命令行的模式下操作一下命令即可

:%s/^/ xiaoxu

 

查看数据

# cat  xiaoxu_test.log

xiaoxu a

xiaoxu b

xiaoxu c

xiaoxu d

xiaoxu e

xiaoxu f

 

 

在指定的行数插入内容

:4,6s/^/ 01

 

 

查看数据

# cat  xiaoxu_test.log

 xiaoxu d 01 02

 xiaoxu e 01 02

 aoxu f 01 02

 01xiaoxu d 01 02

 01xiaoxu e 01 02

 01iaoxu f 01 02

 

11.15.2.11 在行尾插入制动的内容

查看数据

# cat  xiaoxu_test.log

xiaoxu a

xiaoxu b

xiaoxu c

xiaoxu d

xiaoxu e

xiaoxu f

 

在命令模式下执行一下命令

:%s/$/ 01

 

查看数据

# cat  xiaoxu_test.log

 xiaoxu a 01

 xiaoxu b 01

 xiaoxu c 01

 xiaoxu d 01

 xiaoxu e 01

 xiaoxu f 01

 

在指定的行数插入内容

:4,6s/$/ 02

 

 

查看数据

# cat  xiaoxu_test.log

 xiaoxu a 01

 xiaoxu b 01

 xiaoxu c 01

 xiaoxu d 01 02

 xiaoxu e 01 02

 xiaoxu f 01 02

11.15.3.12 快速切换到行的首与尾

Shift +  {   光标移至段落结尾    或 Shift  +  9

Shift +  }   光标移至段落开头    或 Shift  +  0

11.15.3 常用命令

11.15.3.1 打开一个文件

# vi test.log

11.15.3.2 打开多个文件

# vi  test1.log  test2.log

11.16 yum命令

11.16.1 命令介绍

此命令主要用于在系统上安装卸载软件,yum源的配置如下

 

搜狐 yum 源:

http://mirrors.sohu.com/help/centos.html

中科大源:

https://lug.ustc.edu.cn/wiki/mirrors/help/centos

163 yum 源:

http://mirrors.163.com/.help/CentOS5-Base-163.repo

http://mirrors.163.com/.help/CentOS6-Base-163.repo

11.16.2 参数说明

-h:显示帮助信息

-y:对所有的提问都回答"yes"

-c:指定配置文件

-q:安静模式

-v:详细模式

-d:设置调试等级(0-10)

-e:设置错误等级(0-10)

-R:设置yum处理一个命令的最大等待时间

-C:完全从缓存中运行,而不去下载或者更新任何头文件

11.16.3 常用命令

11.16.3.1 安装命令

yum install 全部安装

yum install package1 安装指定的安装包 package1

yum groupinsall group1 安装程序组 group1

11.16.3.2更新和升级

yum update 全部更新

yum update package1 更新指定程序包 package1

yum check-update 检查可更新的程序

yum upgrade package1 升级指定程序包 package1

yum groupupdate group1 升级程序组 group1

11.16.3.3 查找和显示

yum info package1 显示安装包信息 package1

yum list 显示所有已经安装和可以安装的程序包,使用@标记

yum list package1 显示指定程序包安装情况 package1

yum groupinfo group1 显示程序组 group1 信息 yum search string 根据关键字 string 查找安装包

11.16.3.4删除程序

yum remove | erase package1 删除程序包 package1

yum groupremove group1 删除程序组 group1

yum deplist package1 查看程序 package1 依赖情况

11.16.3.5清除缓存

yum clean packages 清除缓存目录下的软件包

yum clean headers 清除缓存目录下的 headers

yum clean oldheaders 清除缓存目录下旧的 headers

yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件

包及旧的 headers

11.16.3.6重新生成缓存

yum clean all  清楚所有缓存

yum makecache 重新生成缓存

11.16.3.7 自动回答"yes"

# yum install -y expect

 

 

# yes|yum install expect

11.17 ll & ls命令

11.17.1 命令介绍

此命令主要查看系统上的文件的属性,例如文件的大小,所属组,所属用户等

11.17.2 参数说明

-a:显示隐藏文件

-l:使用长列表模式

-h:按照格式显示文件的大小

-S:按照文件的大小进行排序

--block-size:按照制定的大小显示文件

-g:按照文件的组目录显示文件

-n:打印 UID 和 和 GID

 --color:不带颜色打印

-i:显示文件的索引信息

-p:增加斜线标记目录

-r:按照反转排序

-R:递归显示文件的属性

--sort=extension:扩展名排序

-t:按照时间列出文件的信息

~:列出主目录

--version:列出版本号

11.17.3 常用命令

11.17.3.1 列出文件或者目录

$ ls

dome1 dome.txt seq1.log seq.log

11.17.3.2长清单模式

$ ls -l

总用量 1106500

drwxr-xr-x 2 xiaoxu xiaoxu 4096 12 月 15 17:14 dome1

-rw-r--r-- 1 xiaoxu xiaoxu 36 11 月 20 15:25 dome.txt

-rw-r--r-- 1 xiaoxu xiaoxu 1123456788 12 月 15 17:13 seq1.log

-rw-r--r-- 1 xiaoxu xiaoxu 9581483 12 月 15 17:13 seq.log

11.17.3.3显示文件大小

$ ls -lh

总用量 1.1G

drwxr-xr-x 2 xiaoxu xiaoxu 4.0K 12 月 15 17:14 dome1

-rw-r--r-- 1 xiaoxu xiaoxu 36 11 月 20 15:25 dome.txt

-rw-r--r-- 1 xiaoxu xiaoxu 1.1G 12 月 15 17:13 seq1.log

-rw-r--r-- 1 xiaoxu xiaoxu 9.2M 12 月 15 17:13 seq.log

 

$ ls -si

总用量 1106500

17963573 4 dome1 17306566 4 dome.txt 17301593 1097132 seq1.log

17301692 9360 seq.log

11.17.3.4 排序文件大小

$ ls -lhS

总用量 1.1G

-rw-r--r-- 1 xiaoxu xiaoxu 1.1G 12 月 15 17:13 seq1.log

-rw-r--r-- 1 xiaoxu xiaoxu 9.2M 12 月 15 17:13 seq.log

drwxr-xr-x 2 xiaoxu xiaoxu 4.0K 12 月 15 17:14 dome1

-rw-r--r-- 1 xiaoxu xiaoxu 36 11 月 20 15:25 dome.txt

11.17.3.5以M为单位显示文件的大小

$ ls -l --block-size=M

总用量 1081M

drwxr-xr-x 2 xiaoxu xiaoxu 1M 12 月 15 17:14 dome1

-rw-r--r-- 1 xiaoxu xiaoxu 1M 11 月 20 15:25 dome.txt

-rw-r--r-- 1 xiaoxu xiaoxu 1072M 12 月 15 17:13 seq1.log

-rw-r--r-- 1 xiaoxu xiaoxu 10M 12 月 15 17:13 seq.log

11.17.3.6查看隐藏文件

$ ls -a

. .. dome1 dome.txt seq1.log seq.log

11.17.3.7只差看当前目录下的文件夹

$ ls -d */

dome1/

11.17.3.8不打印所有者信息

$ ls -g

总用量 1106500

drwxr-xr-x 2 xiaoxu 4096 12 月 15 17:14 dome1

-rw-r--r-- 1 xiaoxu 36 11 月 20 15:25 dome.txt

-rw-r--r-- 1 xiaoxu 1123456788 12 月 15 17:13 seq1.log

-rw-r--r-- 1 xiaoxu 9581483 12 月 15 17:13 seq.log

11.17.3.9不打印组信息

$ ls -lG

总用量 1106500

drwxr-xr-x 2 xiaoxu 4096 12 月 15 17:14 dome1

-rw-r--r-- 1 xiaoxu 36 11 月 20 15:25 dome.txt

-rw-r--r-- 1 xiaoxu 1123456788 12 月 15 17:13 seq1.log

-rw-r--r-- 1 xiaoxu 9581483 12 月 15 17:13 seq.log

11.17.3.10打印 UID 和 和 GID

$ ls -n

总用量 1106500

drwxr-xr-x 2 1000 1000 4096 12 月 15 17:14 dome1

-rw-r--r-- 1 1000 1000 36 11 月 20 15:25 dome.txt

-rw-r--r-- 1 1000 1000 1123456788 12 月 15 17:13 seq1.log

-rw-r--r-- 1 1000 1000 9581483 12 月 15 17:13 seq.log

11.17.3.11不带颜色打印

$ ls --color=never

dome1 dome.txt seq1.log seq.log

11.17.3.12 打印每个文件的索引号

$ ls -li

总用量 1106500

17963573 drwxr-xr-x 2 xiaoxu xiaoxu 4096 12 月 15 17:14 dome1

17306566 -rw-r--r-- 1 xiaoxu xiaoxu 36 11 月 20 15:25 dome.txt

17301593 -rw-r--r-- 1 xiaoxu xiaoxu 1123456788 12 月 15 17:13 seq1.log

17301692 -rw-r--r-- 1 xiaoxu xiaoxu 9581483 12 月 15 17:13 seq.log

11.17.3.13增加 / ( 斜线)  标记目录

$ ls -p

dome1/ dome.txt seq1.log seq.log

11.17.3.14排序时反转顺序

$ ls -r

seq.log seq1.log dome.txt dome1

11.17.3.15递归列出子目录

$ ls -R

.:

dome1 dome.txt seq1.log seq.log

./dome1:

seq.log

11.17.3.16扩展名排序

$ ls --sort=extension

dome1 seq1.log seq.log dome.txt

$ ls -lX

总用量 1106500

drwxr-xr-x 2 xiaoxu xiaoxu 4096 12 月 15 17:14 dome1

-rw-r--r-- 1 xiaoxu xiaoxu 1123456788 12 月 15 17:13 seq1.log

-rw-r--r-- 1 xiaoxu xiaoxu 9581483 12 月 15 17:13 seq.log

-rw-r--r-- 1 xiaoxu xiaoxu 36 11 月 20 15:25 dome.txt

11.17.3.17通过修改时间列出

$ ls -lt

总用量 1106500

drwxr-xr-x 2 xiaoxu xiaoxu 4096 12 月 15 17:14 dome1

-rw-r--r-- 1 xiaoxu xiaoxu 1123456788 12 月 15 17:13 seq1.log

-rw-r--r-- 1 xiaoxu xiaoxu 9581483 12 月 15 17:13 seq.log

-rw-r--r-- 1 xiaoxu xiaoxu 36 11 月 20 15:25 dome.txt

11.17.3.18列出你的主目录

$ ls ~

*********

11.17.3.19查看 LS  的版本

$ ls --version

ls (GNU coreutils) 8.26

Copyright (C) 2016 Free Software Foundation, Inc

11.18 awk命令

11.18.1命令介绍

此命令主要处理系统上的文件

11.18.2参数说明

11.18.2.1变量

常用内置变量

$0 当前所有的字段

$0 - $n 系统的内置变量,当前第 n 个字段

NF 输入来记录的分隔符(默认的是空格)

NR 行号

FS : field separator,读取文件本时,所使用字段分隔符

RS : Record separator,输入文本信息所使用的换行符

OFS : Output Filed Separator,文件分隔符

ORS:Output Row Separator,行分隔符

外置变量

awk -v n="test" 'BEGIN{print n}'

- v :传参的参数

11.18.2.2操作符

关系操作符:< , > , <= , >= , == , != , ~ , !~

~ : 表示匹配的意思

!~ : 表示不匹配的意思

例如:# awk -F":" '$7 ~ /^\/bin/{print $0}' /etc/passwd

# awk -F":" '$7 !~ /^\/bin/{print $0}' /etc/passwd

布尔操作符:&& , || , !

11.18.2.3 print与printf的区别

print : 直接输出变量值或给定的字符串

Printf: 可以实现格式化输出

# awk -F":" '{printf($1,$2)}' /etc/passwd

11.18.3 常用命令

11.18.3.1基本语法

# awk ‘pattern + action’ {filename}

11.18.3.2书写格式

命令行模式

# awk -F":" '{print $1}' /etc/passwd

文本模式

# vi testAwk.sh

#!/usr/bin/awk

BEGIN{FS=”:”}

{print $1}

11.18.3.3 awk流程控制

11.18.3.1流程条件

实例一

#awk -F":" '{if($NF=="/bin/bash"){print $0}}' /etc/passwdno

pk

No

***********

 

实例二

#awk -F":" '{if($NF=="/bin/bash"){print $0}}' /etc/passwd

$NF :是表示最后一个单词的记录

 

while  语句

实例一

#awk -F":" '{i=1;while(i<=NF){print(i,$i);i++}{print " "}}' /etc/passwd

 

实例二

# awk -F":" '{for(i=1;i<=NF;i++){print(i,$i)}{print " "}}' /etc/passwd

11.18.3.3 判断大于等于某个值的数据

 # awk -F ':' '$3>100 {print $1,$3}' /etc/passwd

avahi-autoipd 170

polkitd 999

gpadmin 1000

systemd-network 192

saslauth 998

11.18.3.2流程数组

#awk -F":" '{a[$NF]++}END{for(i in a){print i":"a[i]}}' /etc/passwd

 

算数函数

int(x) : 返回 X 的整数部分的值

sqrt(x) : 返回 x 的平方根

rand() : 返回伪随机数 r,其中 0<=r<1

srand : 建立 rand()新的种子数,如果没有制定就用当天的时间

 

算数函数

sub(),gsub() : 替换函数

Index(s,t) : 返回子串 t 在字符串 s 中的位置,如果没有则返回 0

length(s) : 返回字符串长度,当没有给出 s 时,返回$0 的长度

match(s,a,seq) : 使用 seq 将字符串 s 分解到数组 a 中,默认 seq 伪 FS

sub(),gsub() : 替换函数

Index(s,t) : 返回子串 t 在字符串 s 中的位置,如果没有则返回 0

length(s) : 返回字符串长度,当没有给出 s 时,返回$0 的长度

match(s,a,seq) : 使用 seq 将字符串 s 分解到数组 a 中,默认 seq 伪 FS

 

自定义函数

# awk 'function sum(n,m){total=n+m;return total}BEGIN{print sum(5,8)}'

11.18.3.4 awk实战

取获取IP地址

# ifconfig wlp3s0 | grep -w "inet" | awk '{print $2}'

192.168.199.137

 

获取制定搜索内容的上一个位置

#cat empnametitle.txt

KLSLAL

XXXXXXXXXXO

Doe

CEO

Jason Smith

IT Manager

Raj Reddy

Sysadmin

Anand Ram

Developer

Jane Miller

Sales Manager

# awk '/Manager/{print s}{s=$0}' empnametitle.txt

 

 

查找制定字段的运行时间

# ps -ef|grep java | awk '{print $7}'

00:00:00

 

对每一个分隔符添加相对应的字符

# nl passwd | awk -F":" '{print $1 "*****" $7}'| head -n 5

1 root*****/bin/bash

2 daemon*****/usr/sbin/nologin

3 bin*****/usr/sbin/nologin

4 sys*****/usr/sbin/nologin

5 sync*****/bin/sync

# $ nl passwd | awk 'BEGIN{FS=":";OFS="****"}{print $1,$7}' | head -n 5

1 root****/bin/bash

2 daemon****/usr/sbin/nologin

3 bin****/usr/sbin/nologin

4 sys****/usr/sbin/nologin

5 sync****/bin/sync

 

记录当前的 field 个数

$ nl passwd | awk 'BEGIN{FS=":";OFS="****"}{print $1,$7,NF}' | head -n 5

1 root****/bin/bash****7

2 daemon****/usr/sbin/nologin****7

3 bin****/usr/sbin/nologin****7

4 sys****/usr/sbin/nologin****7

5 sync****/bin/sync****7

 

打印出第三行等于0的用户信息

# awk -F: '{if($3==0) print}' /etc/passwd

root:x:0:0:root:/root:/bin/bash

 

 

统计某一列的总和

# cat xiaoxu.txt |awk -F ',' 'BEGIN{sum=0}{sum=sum+$1}END{print sum}'

268090

 

 

 

获取制定行的数据

 

# awk 'NR == 1 || NR == 2{print $0 " = " NR}' dfg.txt

aaa = 1

1111 = 2

 

 

按照文件中的长度获取制定信息

# cat dfg.txt

aaa

1111

32332

223

1111

aaa

 

 

# cat dfg.txt |awk '{if( length($0) < 5 ) {print length($0) " = " $0}}'

3 = aaa

4 = 1111

3 = 223

4 = 1111

3 = aaa

 

 

# cat 1.txt |awk '{if ( $1%3 == 0 ) { print $1}}'|head -n 3

3

6

9

11.18.3.5 分割字段的值并查看

# echo "dd|vbfg|wcx|wdwf|dfd"|awk -F '|' '{for(i=1;i<=NF;i++){ if ( i < 3  ) { print i " = " $i   } continue  }}'

1 = dd

2 = vbfg

 

 

或写成

# vi  fileSplitSheel.sh

#!bin/bash

# 分隔符

soh=`echo 1 | awk '{printf("%c", $1)}'`

# sed -i -e 's/|/'$soh'/g' $1

for readFile in `cat $1`;

do

echo $readFile|awk -F "$soh" '{for(i=1;i<=NF;i++){print i,"= " $i}}'

echo "--------------------------"

done

11.18.3.6 制定匹配第一个字段的第一个字母

# awk -F ':' '$1~/^m.*/{print $1}' /etc/passwd

mail

mysql

 

制定与其相反的操作

# awk -F ':' '$1!~/^m.*/{print $1}' /etc/passwd

root

bin

daemon

**********

11.19 sort命令

11.19.1命令介绍

此命令主要是对系统上的文件进行排序操作

11.19.2参数说明

-f:忽略大小写的差异,例如A与a视为编码相同;

-b:忽略最前面的空格符部分;

-M:以月份的名字来排序,例如JAN,DEC等等的排序方法;

-n:使用『纯数字』进行排序(默认是以文字型态来排序的);

-r:反向排序

-u:就是uniq,相同的数据中,仅出现一行代表;

-t:分隔符,默认是用[tab]键来分隔;

-k:以那个区间(field)来进行排序的意思

-o:对数据进行重定向

-g:按照常规数值排序

11.19.3常用命令

11.19.3.1准备数据

#  vi  test.log

aa1

bb3

cc2

ab4

ba1

de2

ef6

dfd7

11.19.3.2对数据进行排序

#  vi  source.log

google:110:5000

baidu:100:5000

guge:50:3000

sohu:100:4500

11.19.3.3对数据进行正序排序

默认的是按照第一列的字符串字典排序

#  sort  source.log

baidu:100:5000

google:110:5000

guge:50:3000

sohu:100:4500

默认的是按照第一个单词进行排序

11.19.3.4对数据进行倒叙排序

#  sort  -r source.log

sohu:100:4500

guge:50:3000

google:110:5000

baidu:100:5000

 

或使用一下方法

# seq 5|tac

5

4

3

2

1

 

tac 倒序排序

11.19.3.5对数据去重

#  sort -u source.log

baidu:100:5000

google:110:5000

guge:50:3000

sohu:100:4500

11.19.3.6把排序完的数据进行重新保存

#  sort  source.log -o source.log

# catsource.log

baidu:100:5000r

 

google:110:5000

guge:50:3000

sohu:100:4500

-o参数不会对之前的数据进行清空

11.19.3.7按照第一个字段排序

# sort -t ':' -k 1 source.log

baidu:100:5000

google:110:5000

guge:50:3000

sohu:100:4500

-t:表示分隔符

-k:标志制定那个字段进行排序

11.19.3.8按照多个字段排序

#  sort -n -t ':' -k 2 -k3  source.log

guge:50:3000

sohu:100:4500

baidu:100:5000

google:110:5000

-n:是按照数字排序

11.19.3.9第三个字段按照降序排序

#  sort  -n -t  ':' -k  2 -k  3  rsource.log

guge:50:3000

baidu:100:5000

sohu:100:4500

google:110:5000

-k3r:表示降序排序

或者这样写

sort -t ':' -k 2 n -k 3 nrsource.log

guge:50:3000

baidu:100:5000

sohu:100:4500

google:110:5000

11.19.3.10按照第一个单词第二个字母排序

#  sort-t':'-k1.2source.log

baidu:100:5000

sohu:100:4500

google:110:5000

guge:50:3000

 

11.19.3.11 多列排序

以下是按照第二列数值排倒序,第三列正序

# sort- t ':' -n  -k 2r  -k 3  source.log

11.20 wc命令

11.20.1 命令介绍

此命令主要对文本做一些操作,例如文本的统计,计算

11.20.2 参数说明

-c或--bytes或——chars:只显示Bytes数

-l或——lines:只显示列数

-w或——words:只显示字数

-L:打印最长的行数

-m:打印字数统计

11.20.3 常用命令

11.20.3.1 查看文件的详细信息

# wc 20180613.log

行数    单词数    字节数     文件名

147487  2135477   42753253   20180613.log

11.20.3.2 查看文件的行数

# wc  -l   20180613.log

行数       文件名

147487    20180613.log

11.20.3.3 打印文件中最长的行数

# wc  -L  20180613.log

行数       文件名

611        20180613.log

11.20.3.4 统计文件单词数

# wc  -w  20180613.log

字数       文件名

2135477    20180613.log

11.21 grep 命令

11.21.1 命令介绍

grep是一种强大的文本搜索工具,是文本处理的一种很好的一种工具

11.21.2 参数说明

-c:统计符合条件的字符串出现的总行数。

-E:支持扩展正则表达式。

-i:忽略字符大小写。

-n:在显示匹配到的字符串前面加上行号。

-v:显示没有”搜索字符串”内容的那一行。

-l:列出文件内容中有搜索字符串的文件名称。

-o:只输出文件中匹配到的部分。

–color=auto:将匹配到的字符串高亮出来。

-a:匹配行的最后一行

-b:匹配行的前一行

-c:匹配行的前后各一行

11.21.3 常用命令

11.21.3.1 过滤关键字

一下是过滤为streamsets的进程的信息,比较常用

# ps -ef|grep streamsets

11.21.3.2 忽略字符大小写过滤关键字

# cat test.log |grep -i "d"

ddd

ddd

drvbgqa

DDDDESCFT

GGRGDDD

DWAZCW

11.21.3.3统计匹配的个数

-c 命令按照大小写匹配

# cat test.log |grep -c "d"

3

 

数据为

ddd

ddd

drvbgqa

11.21.3.4在匹配的数据上显示行号

# cat test.log |grep -i -n "d"

3:ddd

10:ddd

11:drvbgqa

12:DDDDESCFT

13:GGRGDDD

14:DWAZCW

11.21.3.5查看不包含的行的数据

# cat test.log |grep -v "d"

DDDDESCFT

GGRGDDD

DWAZCW

11.21.3.6输出匹配到数据的前后几行

--- 是分割线,此命令比较常用

# cat test.log |grep -C 2 "d"

2

333

ddd

2342

654

---

95

1

ddd

drvbgqa

DDDDESCFT

GGRGDDD

11.21.3.7 匹配出带有特殊字符文本

# vi  replace-char.sh

 

#!bin/bash

 

soh=`echo 1 | awk '{printf("%c", $1)}'`

stx=`echo 2 | awk '{printf("%c", $1)}'`

etx=`echo 3 | awk '{printf("%c", $1)}'`

eot=`echo 4 | awk '{printf("%c", $1)}'`

enq=`echo 5 | awk '{printf("%c", $1)}'`

ack=`echo 6 | awk '{printf("%c", $1)}'`

bel=`echo 7 | awk '{printf("%c", $1)}'`

bs=`echo 8 | awk '{printf("%c", $1)}'`

 

cat $1 |grep  -a -E $soh'|'$stx'|'$etx'|'$eot'|'$enq'|'$ack'|'$bel'|'$bs

11.21.3.8 过滤文本中的中文

数据样例:

 

# cat 1.txt

21312

3232434654634

的南方人,dfejfdefe

ifej低分蜂飞蝶舞,ijsdwi

叠加法,节点杰尔夫

13132324,3321

 

过滤带有中文的行(包括中文的标点符号)

# cat 1.txt |grep   [^\u4E00-\u9FA5]

的南方人,dfejfdefe

ifej低分蜂飞蝶舞,ijsdwi

叠加法,节点杰尔夫

13132324,3321

 

过滤出非中文的行数

# cat 1.txt |grep -Pv  [^\u4E00-\u9FA5]

21312

3232434654634

11.22 paste 命令

11.22.1 命令详解

paste可以简单的理解为把两个文件的内容按列合并。默认的分隔符是tab,如果想改变请使用-d参数

11.22.2 参数说明

-d : tab之外的分隔符,例如:@等

-s: 将每个文件合并成行而不是按行粘贴。

11.22.3 常用命令

11.22.3.1 按照tab合并两个文件

# seq 10 >> test.log

 

# seq 10 >> test1.log

 

# paste  test.log  test1.log

1 1

2 2

3 3

4 4

5 5

6 6

7 7

8 8

9 9

10 10

11.22.3.2 按照文件内容粘贴

# paste -s test.log test1.log

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

 

11.23 timeout 命令

11.23.1 命令详解

此命令主要看命令的任务的控制等。

11.23.2 参数说明

-k  如果命令在发送初始信号后长时间运行,也发送一个杀死信号。

-s  指定要在超时发送的信号,指定要在超时信号上发送的信号可以是一个类似于“HUP”的名称,或者是一个信号列表中的“kill  -L”号

--help 查看帮助

--version  查看版本

s 代表秒。

m 代表分钟。

h 代表小时。

d 代表天。

例如: 3s 代表3秒

11.23.3 常用命令

ubuntu 上安装命令

sudo apt-get install timelimit

11.23.3.1 对命令进行定时

# timeout  3s  ping  www.baidu.com

PING www.a.shifen.com (119.75.216.20) 56(84) bytes of data.

64 bytes from 119.75.216.20: icmp_seq=1 ttl=55 time=5.62 ms

64 bytes from 119.75.216.20: icmp_seq=2 ttl=55 time=11.3 ms

64 bytes from 119.75.216.20: icmp_seq=3 ttl=55 time=7.26 ms

# timeout  3  ping  www.baidu.com

PING www.a.shifen.com (119.75.216.20) 56(84) bytes of data.

64 bytes from 119.75.216.20: icmp_seq=1 ttl=55 time=5.62 ms

64 bytes from 119.75.216.20: icmp_seq=2 ttl=55 time=11.3 ms

64 bytes from 119.75.216.20: icmp_seq=3 ttl=55 time=7.26 ms

 

11.24 xargs 命令

11.24.1 参数详解

xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。

11.24.2 命令参数

-a file 从文件中读入作为sdtin

-t 表示先打印命令,然后再执行

-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了

-s num 命令行的最好字符数,指的是xargs后面那个命令的最大命令行字符数

-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符

-x exit的意思,主要是配合-s使用。

-P 修改最大的进程数,默认是1

11.24.3 常用命令

生成数据

# seq 10>> test.log

 

多行数据变成一行输出

# cat test.log|xagrs

1 2 3 4 5 6 7 8 9 10

 

把数据变成多行2列的形式

# cat test.log |xargs -n2

1 2

3 4

5 6

7 8

9 10

 

定义分隔符形式

# echo  "nameXname1Xname2X" |xargs -dX

name name1 name2

 

注意以上已经把分隔符去掉了

 

 

结合-n与-d的使用

# echo  "nameXname1Xname2Xname3X" |xargs -dX -n2

name name1

name2 name3

 

# echo "1@2@3@4" |xargs -d @

1 2 3 4

11.25 uniq 命令

11.25.1 参数详解

去命令主要是删除或显示重复的行与删除

11.25.2 命令参数

-c 在输出行前面加上每行在输入文件中出现的次数

-d 仅显示重复行

-u 仅显示不重复的行

11.25.3 常用命令

准备数据

# cat xiaoxu.log

sds

wdwd

www

sds

wdwdw

dd

dd

edcf

edcf

tg

rfgt

rf

rf

rf

11.25.3.1 显示重复的行

# uniq -d xiaoxu.log

dd

edcf

rf

11.25.3.2 显示单词的出现次数

# uniq -c xiaoxu.log

      1 wdwdw

      2 dd

      2 edcf

      1 tg

      1 rfgt

      3 rf

11.25.3.3 显示不重复的行

# uniq -u xiaoxu.log

sds

wdwd

www

sds

wdwdw

tg

rfgt

 

11.25.3.4 去除文本中含有字母与数字的情况

原始数据

# cat dfg.txt

aaa

1111

32332

223

1111

aaa

 

 

不排序去重

# uniq dfg.txt

aaa

1111

32332

223

1111

aaa

 

 

排序之后去重

# sort dfg.txt |uniq

1111

223

32332

aaa

 

 

 

 

# head -n 2 1.txt

1

2

3

4

5

 

11.26 sed 命令

11.26.1 命令详解

sed是一种流处理编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。使用此命令能够快速的处理复杂的文本。

 

11.26.2 命令参数

-n : 读取下一行到模式空间,安静的模式

-N : 追加下一行到模式空间

:a : 定义标签a

ba:返回标签a

ta :如果执行成功则返回标签a

ta:如果执行不成功则返回a

-e : 直接在命令列模式上进行sed的动作操作

-f : 直接将sed的动作写在一个文件内

-i:直接修改读取文件中的内容,而不是输出到终端

p :列印,亦即将某个选择的数据印出

a :新增

c :取代

d :删除第一行

i :插入

s :替换

2,$:删除第二行到末尾行的内容

2i:在第二行前插入文本内容

3a:在第3行后插入文本内容

 

正则匹配及分组

模式-n  s/x/y/g:每行的范围内(g),将所有的x替换成y

模式s/x/y/3g:每行的范围内第3个匹配值的开始,将所有的x替换成y

模式 -n  's/^M//' 或 sed -i 's/\r$//g' 把其他的编码转换为unix编码

删除注释和空行  sed '/ *#/d; /^ *$/d'

删除行头尾空格  sed 's/^[ \t]*//;s/[ \t]*$//'

11.26.3 常用命令

11.26.3.1复制数据的前一行

$ nl passwd |sed '1p'

1 root:x:0:0:root:/root:/bin/bash

1 root:x:0:0:root:/root:/bin/bash

2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

××××××××××××××××××××××××

11.26.3.2删除制定的行

$ nl passwd |sed '1d'

2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

3 bin:x:2:2:bin:/bin:/usr/sbin/nologin

4 sys:x:3:3:sys:/dev:/usr/sbin/nologin

××××××××××××××××××××××××

11.26.3.3显示第一行到第二行

$ nl passwd |sed -n '1,2p'

1 root:x:0:0:root:/root:/bin/bash

2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

 

只显示第三行

$ nl passwd |  sed -n '3p'

3 bin:x:2:2:bin:/bin:/usr/sbin/nologin

11.26.3.4在第二行后面添加一行信息

$ nl passwd |sed '2a add print .....'

1 root:x:0:0:root:/root:/bin/bash

2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

add print .....

3 bin:x:2:2:bin:/bin:/usr/sbin/nologin

11.26.3.5删除地2行到第五行,病替换成相对应的字符

$ nl passwd |sed '2,5c add string .....'

1 root:x:0:0:root:/root:/bin/bash

add string .....

6 games:x:5:60:games:/usr/games:/usr/sbin/nologin

11.26.3.6搜索信息做操作

所有出来并显示

$ nl passwd |sed -n '/daemon/p'

2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

29 avahi-autoipd:x:110:115:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false

30 usbmux:x:111:46:usbmux daemon,,,:/var/lib/usbmux:/bin/false

 

搜索出来直接删除

$ nl passwd |sed -n '/daemon/d'

Awk

搜索出来病执行替换,q只结束符

$ nl passwd |sed '/daemon/{s/daemon/blueshell/;q}'

1 root:x:0:0:root:/root:/bin/bash

2 blueshell:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

11.26.3.7获取本地的IP

$ ifconfig wlp3s0|sed -n '/netmask/p' | awk -F" " '{print $2}'

192.168.199.137

11.26.3.8 把文件转换为unix编码

$ sudo sed -n 's/^M//g'  passwd

11.27.3.9 替换文本中双引号与单引号问题

# sed  -i  -e  -n  ‘s/\”//g’  fileName

 

11.28.3.10 删除注释和空行

原始数据

 

# cat 1.txt

# 21312

3232434654634

的南方人,dfejfdefe

ifej低分蜂飞蝶舞,ijsdwi

叠加法,节点杰尔夫

13132324,3321

 

4545

gfhgth

发个人工343dddfed

 

份饭43fgfgrg

 

 

替换掉后的数据

# sed   '/ *#/d; /^ *$/d'   1.txt

3232434654634

的南方人,dfejfdefe

ifej低分蜂飞蝶舞,ijsdwi

叠加法,节点杰尔夫

13132324,3321

4545

gfhgth

发个人工343dddfed

份饭43fgfgrg

11.28.3.11 删除行首与尾空格

原始数据

 

# cat 1.txt

# 21312

3232434654634

的南方人,dfejfdefe

ifej低分蜂飞蝶舞,ijsdwi

叠加法,节点杰尔夫

13132324,3321

 

4545

gfhgth

发个人工343dddfed

 

份饭43fgfgrg

 

 

替换掉的数据格式

# sed 's/^[ \t]*//;s/[ \t]*$//' 1.txt

# 21312

3232434654634

的南方人,dfejfdefe

ifej低分蜂飞蝶舞,ijsdwi

叠加法,节点杰尔夫

13132324,3321

 

4545

gfhgth

发个人工343dddfed

 

份饭43fgfgrg

11.28.3.12 制定某行做替换

# nl 1.txt |sed '19c --------'

18 dgreeff@qq.com

--------

11.28.3.13 在文件末尾添加一行内容

# sed '$a\ xiaoxu' 1.txt

3435443242@qq.com

  xiaoxu

注意$a  是在文本的尾行添加,斜杠\是制表符

 

11.28.3.14 删除文本中的空行

# sed '/^$/d' 1.txt

1212,1213,23

35:dede:\dfdf

3d,sfsd

*********

11.28.3.15 把文件命替换成大写

# nl  *.txt | sed  's/\w\+/\U&/'

11.27 awk 命令

11.27.1 命令详解

它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。

11.27.2 命令参数

11.27.2.1 变量

常用内置变量

 

$0   当前所有的字段

$0 - $n  系统的内置变量,当前第n个字段

NF   输入来记录的分隔符(默认的是空格)

NR   行号

FS : field separator,读取文件本时,所使用字段分隔符

RS : Record separator,输入文本信息所使用的换行符

OFS : Output Filed Separator,文件分隔符

ORS:Output Row Separator,行分隔符

 

外置变量

awk -v n="test" 'BEGIN{print n}'

- v :传参的参数

11.27.2.2 操作符

关系操作符:<  , > , <= , >= , == , != , ~ , !~

 

~  :  表示匹配的意思

!~ : 表示不匹配的意思

例如:[root@hadoop1 /]# awk -F":" '$7 ~ /^\/bin/{print $0}' /etc/passwd

      [root@hadoop1 /]# awk -F":" '$7 !~ /^\/bin/{print $0}' /etc/passwd

 

布尔操作符:&& , || , !

11.27.2.3 print与printf的区别

print : 直接输出变量值或给定的字符串

Printf: 可以实现格式化输出

11.27.2.4 算数函数

算数函数

int(x) : 返回X的整数部分的值

sqrt(x) : 返回x的平方根

rand() : 返回伪随机数r,其中0<=r<1

srand : 建立rand()新的种子数,如果没有制定就用当天的时间

 

 

算数函数

sub(),gsub() : 替换函数

Index(s,t) : 返回子串t在字符串s中的位置,如果没有则返回0

length(s) : 返回字符串长度,当没有给出s时,返回$0的长度

match(s,a,seq) : 使用seq将字符串s分解到数组a中,默认seq伪FS

sub(),gsub() : 替换函数

Index(s,t) : 返回子串t在字符串s中的位置,如果没有则返回0

length(s) : 返回字符串长度,当没有给出s时,返回$0的长度

match(s,a,seq) : 使用seq将字符串s分解到数组a中,默认seq伪FS

11.27.3 常用命令

11.27.3.1 书写格式

# vi testAwk.sh

#!/usr/bin/awk

BEGIN{FS=”:”}

{print $1}

11.27.3.2 判断条件

实例一

#awk -F":" '{if($NF=="/bin/bash"){print $0}}' /etc/passwdno

pk

No

***********

实例二

#awk -F":" '{if($NF=="/bin/bash"){print $0}}' /etc/passwd

$NF :是表示最后一个单词的记录

11.27.3.3 while语法 

实例一

#awk -F":" '{i=1;while(i<=NF){print(i,$i);i++}{print " "}}' /etc/passwd

 

实例二

# awk -F":" '{for(i=1;i<=NF;i++){print(i,$i)}{print " "}}' /etc/passwd

11.27.3.4 快速匹配查找

前后匹配查找

# seq 1 30 | awk '/3/ {print}'

3

13

23

30

 

不匹配制定的关键字的查找

# seq 1 30 | awk '!/3/ {print}'

1

2

4

5

6

7

8

9

10

11

**************

 

其余的模式都可以使用'&&'或者'||'运算符组合,前者表示逻辑与,后者表示逻辑或:

# seq 1 40 | awk '/3/&&/1/ {print}'

13

31

 

 

# seq 1 10 | awk '/3/||/1/ {print}'

1

3

10

 

11.27.3.5 把多行按照制定分隔符

# cat test.txt

1

2

3

4

5

6

7

8

9

10

 

 

# sed 'H;$!d;${x;s/^\n//;s/\n/,/g}' test.txt

1,2,3,4,5,6,7,8,9,10

 

以上标红的是分隔符

11.28 watch 命令

11.28.1 命令详解

此命令可以输出结果到标准设备上,用于周期或定时执行任务,watch缺省每2秒运行一下程序。

11.28.2 命令参数

-n:指定指令执行的间隔时间(秒)

-d:高亮显示指令输出信息不同之处

-t:不显示标题

11.28.3 常用参数

11.28.3.1 显示默认的定时

# watch  du  -sh

 

Every 2.0s: du -sh                                                                                                                                                                Tue Jul 10 10:41:50 2018

 

8.0K    .

 

第一行的显示多长时间刷新,执行的命令是什么,第二行的是Tue Jul 10 10:41:50 2018是执行命令的时间。

11.28.2 设置时间来显示命令

# watch -d -n 2 date

Every 2.0s: date                                                                                                                                                                  Tue Jul 10 10:52:23 2018

 

Tue Jul 10 10:52:23 EDT 2018

 

-n 2 : 代表2S执行一次时间。

-d : 代表把当前执行的高亮显示出来。

11.28.3 把头部信息去掉

# watch  -d -n 2 -t date

Tue Jul 10 10:57:48 EDT 2018

12 Linux 常用设置

12.1 设置系统开启级别

# cat /etc/inittab

 

***************

# Default runlevel. The runlevels used are:

#   0 - halt (Do NOT set initdefault to this)   

#   1 - Single user mode

#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)

#   3 - Full multiuser mode

#   4 - unused

#   5 - X11

#   6 - reboot (Do NOT set initdefault to this)

#

id:5:initdefault:

 

0-halt 关机,让init关闭所有进程并关机

1-Single user mode 单用户字符界面,通常又称为s或S

2-Multiuser,without NFS 不具备网络文件系统功能的多用户字符界面

3-Full multiuser mode 具备网络文件系统功能的多用户字符界面

4-unused 保留不用

5-X11 具备网络功能的图形用户界面

6-reboot 关闭所有运行的进程并重新启动系统

 

启动后进入图形界面,设为3则进入具备网络文件系统功能的多用户字符界面

12.2 手动配置网络

12.2.1 设置IP

按照以下标红的进行修改,没有的则添加即可

 

# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

TYPE=Ethernet

BOOTPROTO=static

IPADDR=192.168.199.50

NETMASK=255.255.255.0

GATEWAY=192.168.199.1

DNS1=192.168.199.1

DNS2=8.8.8.8

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_PEERDNS=yes

IPV6_PEERROUTES=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=enp0s3

UUID=0ddfc571-6d5d-4d1e-9442-f3ef337e7f12

DEVICE=enp0s3

ONBOOT=yes

12.2.2 重启网络服务

12.2.2.1 重启网络

# service network restart

12.2.2.2查看IP

# pifconfig

lo       

          inet addr:127.0.0.1   Mask:255.0.0.0

          inet6 addr: ::1/128 Scope: host

          UP LOOPBACK RUNNING

 

enp0s3    HWaddr 08:00:27:25:cc:9c

inet addr:192.168.0.50 Bcast:192.168.0.255   Mask:255.255.255.0

inet6 addr: fe80::32a8:4a1a:3b8c:4cbd/64 Scope: link

UP BROADCAST RUNNING MULTICAST

12.3 修改主机的名字

临时修改

# hostnamectl set-hostname test-cn-01

 

永久修改

# vi /etc/sysconfig/network

# Created by anaconda

HOSTNAME=test-cn-01

12.4 关闭Selinux

临时关闭

# setenforce 0

 

永久关闭

#vi  /etc/selinux/config

修改为SELINUX=disabled

12.5 关闭PackageKit

修改

# vi /etc/yum/pluginconf.d/refresh-packagekit.conf

添加enabled=0

12.6设置umask

修改

# vi /etc/security/limits.conf

 

*        soft    noproc 10240

*        hard    noproc 10240

*        soft    nofile 10240

*        hard    nofile 10240

13 Linux 常用其他命令详解

13.1 查看系统信息

13.1.1 查看CPU的信息

#  lscpu 或用一下命令

 

# cat /proc/cpuinfo

processor : 0

vendor_id : GenuineIntel

cpu family : 6

model : 58

model name : Intel(R) Core(TM) i3-3110M CPU @ 2.40GHz  # 配置的详细信息

stepping : 9

microcode : 18

cpu MHz : 2394.639

cache size : 3072 KB

physical id : 0

siblings : 1

core id : 0

cpu cores : 2   # 此标识说明服务器是1核的

apicid : 0

initial apicid : 0

fpu : yes

fpu_exception : yes

cpuid level : 13

wp : yes

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc up arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx f16c hypervisor lahf_lm arat epb pln pts dts fsgsbase smep

bogomips : 4789.27

clflush size : 64

cache_alignment : 64

address sizes : 42 bits physical, 48 bits virtual

power management:

13.1.2 查看磁盘的大小

以下命令是查看所有的磁盘的信息

# fdisk  -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x0008bfe5

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          39      307200   83  Linux

Partition 1 does not end on cylinder boundary.

/dev/sda2              39        2350    18566144   83  Linux

/dev/sda3            2350        2611     2097152   82  Linux swap / Solaris

 

以下是查看某个磁盘的详细信息

# fdisk  -l  /dev/sda1

13.1.3 查看内存的信息

# cat /proc/meminfo

MemTotal:        1787468 kB

MemFree:         1149248 kB

Buffers:             764 kB

Cached:           113048 kB

SwapCached:            0 kB

Active:           478212 kB

Inactive:          96940 kB

Active(anon):     461616 kB

Inactive(anon):     8368 kB

Active(file):      16596 kB

Inactive(file):    88572 kB

Unevictable:           0 kB

Mlocked:               0 kB

SwapTotal:       2097148 kB

SwapFree:        2097148 kB

Dirty:                 0 kB

Writeback:             0 kB

AnonPages:        461360 kB

Mapped:            22596 kB

Shmem:              8644 kB

Slab:              36216 kB

SReclaimable:      11392 kB

SUnreclaim:        24824 kB

KernelStack:         800 kB

PageTables:         3096 kB

NFS_Unstable:          0 kB

Bounce:                0 kB

WritebackTmp:          0 kB

CommitLimit:     2990880 kB

Committed_AS:     926184 kB

VmallocTotal:   34359738367 kB

VmallocUsed:        6664 kB

VmallocChunk:   34359709440 kB

HardwareCorrupted:     0 kB

HugePages_Total:       0

HugePages_Free:        0

HugePages_Rsvd:        0

HugePages_Surp:        0

Hugepagesize:       2048 kB

DirectMap4k:       10176 kB

DirectMap2M:     2086912 kB

13.2 软连接添加与删除

实例:sudo ln -s 源文件 目标文件

删除:# rm -rf  源文件

13.3 xshell终端快速清屏

第一种方法

# clear

 

快捷键的使用

Ctrl + l  清屏快捷键

 

13.4关闭防火墙

在机器上关闭防火墙

# service iptables stop

开启开机自关

# chkconfig iptables off

13.5关闭MySql服务

# service mysqld stop

# chkconfig mysqld off

13.6重启网络服务

# service network restart

13.7开启httpd服务

# service httpd restat

Usage: httpd {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}

13.8关闭Transparent Huge Pages(THP)

查看状态

# cat /sys/kernel/mm/transparent_hugepage/defrag

[always] madvise never

 

说明是开启的

# vim /etc/rc.d/rc.local

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then

 echo never > /sys/kernel/mm/transparent_hugepage/enabled

 fi

 if test -f /sys/kernel/mm/transparent_hugepage/defrag; then

 echo never > /sys/kernel/mm/transparent_hugepage/defrag

 fi

 

付给权限

# chmod +x /etc/rc.d/rc.local

 

重启机器再次查看THP信息

# cat /sys/kernel/mm/transparent_hugepage/enabled

 always madvise [never]

说明是关闭的

 

 

13.9 10进制转换为16进制

# echo 1772 |awk '{printf("%x\n", $0)}'

6ec

 

13.10查看网卡是千M还是万M网卡

em1是网卡的名字,可以通过ifconfig获取

 

# ethtool  em1

Settings for em1:

Supported ports: [ FIBRE ]

Supported link modes:   1000baseT/Full

                        10000baseT/Full

Supported pause frame use: Symmetric Receive-only

Supports auto-negotiation: No

Advertised link modes:  10000baseT/Full

Advertised pause frame use: No

Advertised auto-negotiation: No

Speed: 10000Mb/s   (表示万M网卡,如果是1000M则表示千M网卡)

Duplex: Full

Port: FIBRE

PHYAD: 1

Transceiver: internal

Auto-negotiation: off

Cannot get wake-on-lan settings: Operation not permitted

Current message level: 0x00000000 (0)

       

Link detected: yes

13.11快速杀掉所有的JAVA进程

# pkill  java

# killall  java

# Jps | zargs kill -9

 

13.12 find 命令

13.12.1 命令详解

此命令主要用于在系统上查找文件

13.13.2 参数说明

-x (BSD) -xdev (Linux) :留于同一文件系统 (fstab 中的 dev)

-exec cmd {} \;执行命令并用全路径替换 {}

-iname:同 -name 一样,但不区分大小写

-ls:显示关于文件的信息(同 ls -la)

-size n :n 为 +-n (k M G T P)

-cmin n :查找系统中最后 n 分钟改变文件状态的文件

13.12.3 常用命令

13.12.3.1 查找制定类型的文件

以下命令是在根目录下查找 tomcat-7.0.88的文件夹

# find  / -name  tomcat-7.0.88

13.12.3.2 寻找最后 10 分钟创建或修改的文件

以下命令表示在/home/user目录下查找最后10分钟创建的文件

# find /home/user/  -cmin 10   -print

13.12.3.3 按照指定文件命查找文件

主目录中找到所有的 JPEG 文件

# find   ~  -name “*jpg”

 

不分大小写查找文件

# find  ~  -iname  “*jpg”

 

查找多个后缀的文件

# find  ~ ( -name “*jpg” -o -iname “*jpeg” )

 

 

13.13  查找JAVA占用比较耗时的进程

13.13.1先用top命令查找出最耗时的JAVA进程号

# top

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 

2232 root 20 0 5915768 607124 17240 S 8.6 3.8 4:49.39 java 

29719 hbase 20 0 4117880 716964 34732 S 2.7 4.4 0:30.95 java 

24265 hdfs 20 0 2967592 342520 28220 S 2.0 2.1 0:16.28 java 

81839 oozie 20 0 5798504 497616 39468 S 2.0 3.1 0:21.52 java 

30510 ams 20 0 3529116 533008 27036 S 1.7 3.3 0:47.99 java 

***************

13.13.2 把当前的PID转换成16进制

# printf "%x\n" 2232

8b8

13.13.3 查看当前耗时的进程

# jstack 2232 | fgrep  -A10  8b8

- parking to wait for <0x00000000a339d8b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)

at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)

at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)

at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)

at java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:680)

at sun.nio.fs.AbstractWatchService.take(AbstractWatchService.java:118)

at org.apache.ambari.server.view.ViewDirectoryWatcher$2.run(ViewDirectoryWatcher.java:112)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

14 Linux 常用软件安装

14.1 gcc相关的软件安装

# yum -y install gcc make gcc-c++ openssl-devel  flex byacc  libpcap ncurses ncurses-devel  libpcap-devel

14.2 JDK安装

下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

 

安装前请先把系统默认的安装包卸载掉:

# rpm -qa | grep jdk

# yum -y remove java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64

 

-c : 参数是把软件包解压到制定的目录下

# tar -zxvf jdk-7u80-linux-x64.tar.gz  -C /usr/local/

# vi /etc/profile

export JAVA_HOME=/home/jdk1.7

 

如果遇到Java -version还是系统的配置,请执行以下操作:

#  echo $JAVA_HOME

#  which java

#  mv /usr/bin/java /usr/bin/java_bak

# source /etc/profile

14.3 安装tomcat

# tar -zxvf apache-tomcat-7.0.69.tar.gz

# vi /etc/profile

export  TOMCAT_HOME=/usr/local/apache-tomcat-7.0.69

 

# source  /etc/profile

14.4 安装nginx

# tar -zxvf nginx-1.8.1.tar.gz -C /usr/local/

export  NGINX_HOME=/usr/local/nginx/sbin

14.5 安装MySQL5.6

14.5.1 在线安装MySql

# yum list|grep mysql

Error: Cannot find a valid baseurl for repo: extras

这个问题可能是DNS没有配置好,建议重新配置DNS

vi /etc/resolv.conf

 

查看是否有rum命令

# rum remove mysql-libs

-bash: rum: command not found

 

搜索rum软件并安装

# yum list|grep rum

oniguruma.i686                             5.9.1-3.1.el6                 base   

oniguruma.x86_64                           5.9.1-3.1.el6                 base   

oniguruma-devel.i686                       5.9.1-3.1.el6                 base   

oniguruma-devel.x86_64                     5.9.1-3.1.el6                 base   

smc-suruma-fonts.noarch                    04.2-11.el6                   base   

# yum install oniguruma.x86_64

 

安装mysql

service mysqld stop

yum remove mysql mysql-*

yum list installed | grep mysql

rpm -e --nodeps `rpm -qa | grep mysql`

rpm -Uvh http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm

yum install mysql-community-server

mysql -V

service mysqld start

 

登录mysql密码为空,直接回车

# mysql -uroot -p

14.5.2 离线安装MySql

安装下载:链接:http://pan.baidu.com/s/1jIiD3FK 密码:7kwf  或者登陆http://mirrors.sohu.com/mysql/网站下载。  如果无法下载请联系作者。

14.5.2.1下载并安装

查看本地的mysql安装包并删除

# yum list|grep mysql*

# yum remove mysql* mysql-*

# yum remove mysq-libs

 

查看正在使用的内核的版本

# uname -r

2.6.32-431.el6.x86_64

 

在线下载mysql5.7安装包

# wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.17-1.el6.i686.rpm-bundle.tar

 

# chmod a+x mysql-5.7.17-1.el6.i686.rpm-bundle.tar

# tar xvf mysql-5.7.17-1.el6.i686.rpm-bundle.tar

 

赋给执行的权限

# chmod a+x *.rpm

 

安装mysql需要的包

# yum localinstall mysql-community-common-5.7.17-1.el6.i686.rpm

# yum localinstall mysql-community-libs-5.7.17-1.el6.i686.rpm

 

安装客户端

# yum localinstall mysql-community-client-5.7.17-1.el6.i686.rpm

 

安装服务端

# yum localinstall mysql-community-server-5.7.17-1.el6.i686.rpm

 

查看版本

# mysql -V

mysql  Ver 14.14 Distrib 5.7.17, for Linux (i686) using  EditLine wrapper

 

初始化表

# mysqld -initialize

 

查看初始的密码

# grep 'temporary password' /var/log/mysqld.log

2017-01-07T04:02:51.271722Z 1 [Note] A temporary password is generated for root@localhost: eqgF_AdFI4Wa

 

启动mysql

# service mysqld start

 

登陆mysql

# mysql -uroot -p

// 校验密码的强度。5.7要求用户的密码为复杂。

mysql> set global validate_password_policy=0;

mysql> SET PASSWORD = PASSWORD('123abc,.');

mysql> FLUSH PRIVILEGES;

14.6 MySql常用操作

14.6.1 权限操作

开启mysql的远程登录权限

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

Query OK, 0 rows affected (0.00 sec)

 

刷新使之立刻生效

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

 

mysql>grant select,insert,update,delete,create,drop on vtdc.employee to ‘joe@hadoop1’ identified by 'bigdata';

给来自hadoop1的用户joe分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为bigdata。

 

mysql>grant all privileges on vtdc.* to ‘joe@hadoop1’  identified by 'bigdata';

给来自hadoop1的用户joe分配可对数据库vtdc所有表进行所有操作的权限,并设定口令为bigdata。

 

mysql>grant all privileges on *.* to  ‘joe@hadoop1’  identified by 'bigdata';

给来自hadoop1的用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为bigdata。

 

mysql>grant all privileges on *.* to  ‘joe@localhost’  identified by 'bigdata';

给本机用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为bigdata。

14.6.2修改Mysql密码

修改mysql密码

# mysql -uroot -p

mysql> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

 

mysql> update user set password=password("123456") where user='root';

Query OK, 5 rows affected (0.01 sec)

Rows matched: 5  Changed: 5  Warnings: 0

 

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

14.6.3加载数据

14.6.3.1 Source加载

mysql> source /user.test.sql

Query OK, 0 rows affected (0.00 sec)

14.6.3.2命令行加载

# mysql -uroot -p123456 <scripts-master/db_schema/graph-db-schema.sql

Warning: Using a password on the command line interface can be insecure.

 

有警告提示,可以忽略,提示密码暴露在外部

14.6.3.3直接把数据加载到指定的数据库中

# mysql -uroot -p123456  lepus < lepus_table.sql

Warning: Using a password on the command line interface can be insecure.

 

# mysql -uroot -p123456  lepus < lepus_data.sql

Warning: Using a password on the command line interface can be insecure.

 

有警告提示,可以忽略,其中lepus 是数据库,lepus_table.sql是表的信息,lepus_data.sql 是表的数据,具体的可以查看:

http://blog.csdn.net/xfg0218/article/details/53207932

http://blog.csdn.net/xfg0218/article/details/53207908

14.6.4增加用户

增加用户

用户名是:lepus

密码是:lepus

 

mysql> insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) values('localhost','lepus',password('lepus'),'BLOB','BLOB','BLOB');

Query OK, 1 row affected (0.00 sec)

 

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

14.6.5权限操作

mysql> GRANT ALL PRIVILEGES ON *.* TO 'lepus'@'%' IDENTIFIED BY 'lepus' WITH GRANT OPTION;

Query OK, 0 rows affected (0.00 sec)

 

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

授权模板

mysql> CREATE DATABASE {db-name} DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

 

mysql> GRANT ALL PRIVILEGES ON {db-name}.* TO '{db-user}'@'%' IDENTIFIED BY '{password}';

 

mysql> GRANT ALL PRIVILEGES ON {db-name}.* TO '{db-user}'@'localhost' IDENTIFIED BY '{password}';

mysql> flush privileges;

14.6.6设置开机自动启动

# chkconfig mysqld on

 

14.6.7 Linux远程连接Mysql

# mysql  -ulepus  -h 192.168.215.154  -p

Enter password:

 

-u 需要链接的username

-h 需要链接的IP

-p 登录密码

14.6.7.1查看mysql的端口

mysql>  show global variables like 'port';  

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| port        | 3306  |

+---------------+-------+

1 row in set (0.01 sec)

 

14.6.8关于mysql的查询缓存

14.6.8.1查询缓存变量

mysql> show global status like 'qcache%';  

+-------------------------+-----------+  

| Variable_name | Value |  

+-------------------------+-----------+  

| Qcache_free_blocks | 22756 |  

| Qcache_free_memory | 76764704 |  

| Qcache_hits | 213028692 |  

| Qcache_inserts | 208894227 |  

| Qcache_lowmem_prunes | 4010916 |  

| Qcache_not_cached | 13385031 |  

| Qcache_queries_in_cache | 43560 |  

| Qcache_total_blocks | 111212 |  

+-------------------------+-----------+

MySQL查询缓存变量解释:

Qcache_free_blocks:缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE会对缓存中的碎片进行整理,从而得到一个空闲块。

Qcache_free_memory:缓存中的空闲内存。

Qcache_hits:每次查询在缓存中命中时就增大

Qcache_inserts:每次插入一个查询时就增大。命中次数除以插入次数就是不中比率。

Qcache_lowmem_prunes:缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的 free_blocks和free_memory可以告诉您属于哪种情况)

Qcache_not_cached:不适合进行MySQL查询缓存变量,通常是由于这些查询不是 SELECT 语句或者用了now()之类的函数。

Qcache_queries_in_cache:当前缓存的查询(和响应)的数量。

Qcache_total_blocks:缓存中块的数量。

我们再查询一下服务器关于query_cache的配置:

14.6.8.2查询缓存碎片

mysql> show variables like 'query_cache%';  

+------------------------------+-----------+  

| Variable_name | Value |  

+------------------------------+-----------+  

| query_cache_limit | 2097152 |  

| query_cache_min_res_unit | 4096 |  

| query_cache_size | 203423744 |  

| query_cache_type | ON |  

| query_cache_wlock_invalidate | OFF |  

+------------------------------+-----------+

各字段的解释:

query_cache_limit:超过此大小的查询将不缓存

query_cache_min_res_unit:缓存块的最小大小

query_cache_size:查询缓存大小

query_cache_type:缓存类型,决定缓存什么样的查询,示例中表示不缓存 select sql_no_cache 查询

query_cache_wlock_invalidate:当有其他客户端正在对MyISAM表进行写操作时,如果查询在query cache中,是否返回cache结果还是等写操作完成再读表获取结果。

query_cache_min_res_unit的配置是一柄”双刃剑”,默认是4KB,设置值大对大数据查询有好处,但如果你的查询都是小数据查询,就容易造成内存碎片和浪费。

查询缓存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100%

如果查询缓存碎片率超过20%,可以用FLUSH QUERY CACHE整理缓存碎片,或者试试减小query_cache_min_res_unit,如果你的查询都是小数据量的话。

查询缓存利用率 = (query_cache_size - Qcache_free_memory) / query_cache_size * 100%

查询缓存利用率在25%以下的话说明query_cache_size设置的过大,可适当减小;查询缓存利用率在80%以上而且Qcache_lowmem_prunes > 50的话说明query_cache_size可能有点小,要不就是碎片太多。

查询缓存命中率 = (Qcache_hits - Qcache_inserts) / Qcache_hits * 100%

示例服务器 查询缓存碎片率 = 20.46%,查询缓存利用率 = 62.26%,查询缓存命中率 = 1.94%,命中率很差,可能写操作比较频繁吧,而且可能有些碎片。

14.6.8.3 mysql服务常用操作

启动:service mysqld start

停止:service mysqld stop

重启:service mysqld restart

重载配置:service mysqld reload

14.6.9 mysql客户端支持语法高亮和命令补全

# yum  install mycli

# mycli -h localhost -uroot

Password:

Version: 1.8.1

Chat: https://gitter.im/dbcli/mycli

Mail: https://groups.google.com/forum/#!forum/mycli-users

Home: http://mycli.net

Thanks to the contributor - jweiland.net

mysql root@localhost:(none)> show DATABASES;

 

可以体验一下快捷键补全的效果

14.6.10备份和恢复数据库

14.6.10.1 备份和恢复单个数据库

导出数据库

# mysqldump -u root -psecret --add-drop-database dbname > dbname_sql.dump

# mysql -u root -psecret -D dbname < dbname_sql.dump

 

导出多个数据库

mysqldump -d -B mysql  information_schema  -u root -p1234 > mysql-test.sql

 

mysql , information_schema 是数据库的名字

 

 

导出一张表

mysqldump  -t  dbname1  tablename1  -u root -p >  xxx.sql

 

 

导出多个表数据

mysqldump -d -B dbname1 --tables tablename1 tablename2 -u root -p > xxx.sql

导出一个表结构以及数据

mysqldump dbname1 tablename1 -u root -p > xxx.sql

 

 

导出多个表结构以及数据

mysqldump -B dbname1 --tables tablename1 tablename2 -u root -p > xxx.sql

14.6.10.2备份和恢复所有的数据库

# mysqldump -u root -psecret --add-drop-database --all-databases > full.dump

# mysql -u root -psecret < full.dump

 

这里 mysql root 的密码为”secret”,-p 选项后面没有空格。当单独使用 -p 选项(不跟密码),命令行提示符后会要求输入密码

14.7 安装PHP

# yum install php.x86_64 -y

# php -v

PHP 5.3.3 (cli) (built: Aug 11 2016 20:33:53)

Copyright (c) 1997-2010 The PHP Group

Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

 

14.8 Screen 软件的安装

14.8.1 命令介绍

Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。

14.8.2 参数详解

常用screen 快捷键

ctrl + o + c : 复制一个会话

ctrl + o + A :对会话进行重命名

 

详细语法请查看:http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html

官网介绍:

http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html

14.8.3 常用命令

14.8.3.1安装screen

# yum list|grep screen

# yum install screen.x86_64

14.8.3.2设置终端编码

# vi .screenrc

escape ^Oo

caption always "%{Yk}%-w%50>%{rb}%n %t%{-}%+w%81<%{- Yk}%{Bk}|%=%{bk} %Y-%m-%d %C "

defencoding UTF-8

encoding UTF-8 GBK

vbell off

 

注意.screenrc一般放在~目录下,.screenrc是隐藏文件,前面有个.号

14.8.3.3 screen常用命令

创建一个会话

#screen -S xiaoxu

 

查看已经创建的会话

# screen -ls

There are screens on:

        56422.xiaoxu-ycsb       (action)

        56382.xiaoxu      (Detached)

 

进入到action的会话中

# screen -r 56422

 

进入到Detached状态的会话

#screen -x 56382

 

杀掉某个进程

# kill  -9  56382杀掉当前的回话

 

清除该回话

# screen -wipe

14.9 ag 命令使用

14.9.1 命令介绍

ag :比grep、ack更快的递归搜索文件内容,详情查看http://www.dongwm.com/archives/ack/

14.9.2 参数详解

-l  --files-with-matches :只打印不包含匹配的文件夹

-L --files-without-matches :只打印包含匹配的文件夹

-A --after [LINES] : 匹配后的打印行,默认的是2行

-B --before [LINES] : 匹配前的打印行,默认的是2行

-c --count: 只打印每个文件中的匹配数

-G --file-search-regex : 模式限制搜索到文件名匹配模式

--hidden : 搜索隐藏文件

14.9.3 常用命令

14.9.3.1安装ag命令

$ yum install silversearcher-ag

 

详细使用请使用

$ag  --help

14.9.3.2搜索文件中有s的文件

$ ag "s"

1.log

5:s

7:s

9:sss

 

2.log

1:sdsfefe

14.9.3.3搜索带有制定内容的文件

$  ag "s" 1.log

5:s

7:s

9:sss

14.9.3.4指定过滤后缀的查找

$ ag  -l  --java "JDBC Multitable Consumer"

 

14.10文件比较工具

以下软件适用于ubuntu直接安装,主要介绍meld与diffuse安装与使用

14.10.1meld软件安装

$ sudo apt-get install meld

14.10.2 meld软件查看效果

14.10.3 diffuse软件安装

#sudo apt-get install diffuse

14.10.4 diffuse软件查看效果

 

14.11 ubuntu截图软件deepin-scrot

http://blog.csdn.net/xfg0218/article/details/79029993

14.11.1安装

#sudo apt-get install python-xlib

#wget http://packages.linuxdeepin.com/deepin/pool/main/d/deepin-scrot/deepin-scrot_2.0-0deepin_all.deb

#sudo apt-get -f install

#sudo dpkg -i deepin-scrot*

14.11.2使用

#deepin-scrot

 

Logo

更多推荐