11 系统工具管理
11.1 cat 命令
11.1.1 命令详解
cat命令主要把文件的内容打印到控制台上
11.1.2 参数说明
-n:在打印内容时带内容进行行数编号,对空行有显示
-b:和-n类似,只不过再显示时对数据行有空行的不显示
-s:把两行空行替换成一行空行进行显示
-e:等价于”-ve”选项
11.1.3 常用命令
在以下的内容中可以看出中间有一行或两行的空格的数据
$ cat catTest.log
1
2
3
4
5
6
$ cat -b catTest.log
1 1
2 2
3 3
4 4
5 5
6 6
$ cat -n catTest.log
1 1
2 2
3
4 3
5
6
7 4
8 5
9 6
$ cat -s catTest.log
1
2
3
4
5
6
一般的cat查看数据前几上与后几行都是与tail和head组合使用的
# cat catTest.log |tail -n 2
5
6
# cat catTest.log |head -n 2
1
2
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 常用命令
查看当前月的日历
# 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
# 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
# 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 常用命令
# date
2018年06月 8日 15:56:47
# date -s "2016-09-27 16:40:30"
以下是把设置的时间写入到磁盘
# clock -w
或
# hwclock -w
使用网络同步时间
# ntpdate asia.pool.ntp.org 或
# ntpdate 210.72.145.44
查看时区
# 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
按照年月日的格式显示时间
# 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"
以下的引号是tab键上面的`符号
#!bin/sh
testdata=`date +"%Y%m%d" -d "5 day"`
echo $testdata
$ sh testdata.sh
20180613
生成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 常用命令
# echo “this a test”
this a test
# 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 常用命令
以下命令是比较常用的,可以简单的显示内存的使用情况
# 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 常用命令
nodeps 参数说明去除依赖
# rpm -ivh vsftpd-2.0.5-16.e15.i386.rpm --nodeps
# rpm -qa | grep openjdk
# rpm -e openjdk --nodeps
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 常用命令
# 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 常用命令
# shutdown -h now
# shutdown -r
# shutdown +5 "system willshutdown after 5 minutes"
# shutdown -h +10
# halt
# 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 常用命令
# su root
# su -m tourist
bash-4.2$
11.10 sync命令
11.10.1 命令介绍
此命令主要把内存的缓冲区的信息写入到磁盘
11.10.2 参数说明
--help:显示帮助;
--version:显示版本信息。
11.10.3 常用命令
#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 常用命令
#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:系统的类型
x86_64 代表64系统,i686代表32操作系统
# uname -m
x86_64
# uname -n
localhost.localdomain
# 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 常用命令
# uptime -p
up 1 hour, 33 minutes
# 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 常用命令
# useradd xiaozhang
# useradd -f 1 xiaozhang
11.14 userdel命令
11.14.1 命令介绍
此命令主要删除系统上的用户信息
11.14.2 参数说明
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。
11.14.3 常用命令
# userdel xiaozhang
以下是删除该用户病删除该用户相关的文件
# userdel -r xiaozhang
11.15 vi命令
11.15.1 命令介绍
vi此命令主要对系统上文件进行编辑,此命令分为命令模式、插入模式、末行模式
11.15.2 参数说明
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.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!
vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
按「ctrl」+「b」:屏幕往"后"移动一页。
按「ctrl」+「f」:屏幕往"前"移动一页。
按「ctrl」+「u」:屏幕往"后"移动半页。
按「ctrl」+「d」:屏幕往"前"移动半页。
按数字「0」:移到文章的开头。
按数字「gg」:移到文章的开头。
按「G」:移动到文章的最后。
按「$」:移动到光标所在行的"行尾"。
按「^」:移动到光标所在行的"行首"
按「w」:光标跳到下个字的开头
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头
按「dG」:光标回到首行快速删除所有内容
按「#l」:光标移到该行的第#个位置,如:5l,56l。
「x」:每按一次,删除光标所在位置的"后面"一个字符。
「#x」:例如,「6x」表示删除光标所在位置的"后面"6个字符。
「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符。
「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符。
「dd」:删除光标所在行。
「#dd」:从光标所在行开始删除#行。
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 : 粘贴选中的内容
「r」:替换光标所在处的字符。
「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。
「cw」:更改光标所在处的字到字尾处
「c#w」:例如,「c3w」表示更改3个字
「ctrl」+「g」列出光标所在行的行号。
「#G」:例如,「15G」,表示移动光标至文章的第15行行首。
查看测试数据
# 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
查看数据
# 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 常用命令
# vi test.log
# 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 常用命令
yum install 全部安装
yum install package1 安装指定的安装包 package1
yum groupinsall group1 安装程序组 group1
yum update 全部更新
yum update package1 更新指定程序包 package1
yum check-update 检查可更新的程序
yum upgrade package1 升级指定程序包 package1
yum groupupdate group1 升级程序组 group1
yum info package1 显示安装包信息 package1
yum list 显示所有已经安装和可以安装的程序包,使用@标记
yum list package1 显示指定程序包安装情况 package1
yum groupinfo group1 显示程序组 group1 信息 yum search string 根据关键字 string 查找安装包
yum remove | erase package1 删除程序包 package1
yum groupremove group1 删除程序组 group1
yum deplist package1 查看程序 package1 依赖情况
yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件
包及旧的 headers
yum clean all 清楚所有缓存
yum makecache 重新生成缓存
# 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 常用命令
$ ls
dome1 dome.txt seq1.log seq.log
$ 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
$ 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
$ 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
$ 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
$ ls -a
. .. dome1 dome.txt seq1.log seq.log
$ ls -d */
dome1/
$ 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
$ 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
$ 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
$ ls --color=never
dome1 dome.txt seq1.log seq.log
$ 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
$ ls -p
dome1/ dome.txt seq1.log seq.log
$ ls -r
seq.log seq1.log dome.txt dome1
$ ls -R
.:
dome1 dome.txt seq1.log seq.log
./dome1:
seq.log
$ 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
$ 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
$ ls ~
*********
$ ls --version
ls (GNU coreutils) 8.26
Copyright (C) 2016 Free Software Foundation, Inc
11.18 awk命令
11.18.1命令介绍
此命令主要处理系统上的文件
11.18.2参数说明
常用内置变量
$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 :传参的参数
关系操作符:< , > , <= , >= , == , != , ~ , !~
~ : 表示匹配的意思
!~ : 表示不匹配的意思
例如:# awk -F":" '$7 ~ /^\/bin/{print $0}' /etc/passwd
# awk -F":" '$7 !~ /^\/bin/{print $0}' /etc/passwd
布尔操作符:&& , || , !
print : 直接输出变量值或给定的字符串
Printf: 可以实现格式化输出
# awk -F":" '{printf($1,$2)}' /etc/passwd
11.18.3 常用命令
# awk ‘pattern + action’ {filename}
命令行模式
# awk -F":" '{print $1}' /etc/passwd
文本模式
# vi testAwk.sh
#!/usr/bin/awk
BEGIN{FS=”:”}
{print $1}
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)}'
取获取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
# 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
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常用命令
# vi test.log
aa1
bb3
cc2
ab4
ba1
de2
ef6
dfd7
# vi source.log
google:110:5000
baidu:100:5000
guge:50:3000
sohu:100:4500
默认的是按照第一列的字符串字典排序
# sort source.log
baidu:100:5000
google:110:5000
guge:50:3000
sohu:100:4500
默认的是按照第一个单词进行排序
# 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 倒序排序
# sort -u source.log
baidu:100:5000
google:110:5000
guge:50:3000
sohu:100:4500
# sort source.log -o source.log
# catsource.log
baidu:100:5000r
google:110:5000
guge:50:3000
sohu:100:4500
-o参数不会对之前的数据进行清空
# sort -t ':' -k 1 source.log
baidu:100:5000
google:110:5000
guge:50:3000
sohu:100:4500
-t:表示分隔符
-k:标志制定那个字段进行排序
# sort -n -t ':' -k 2 -k3 source.log
guge:50:3000
sohu:100:4500
baidu:100:5000
google:110:5000
-n:是按照数字排序
# 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
# sort-t':'-k1.2source.log
baidu:100:5000
sohu:100:4500
google:110:5000
guge:50:3000
以下是按照第二列数值排倒序,第三列正序
# 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 常用命令
# wc 20180613.log
行数 单词数 字节数 文件名
147487 2135477 42753253 20180613.log
# wc -l 20180613.log
行数 文件名
147487 20180613.log
# wc -L 20180613.log
行数 文件名
611 20180613.log
# 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 常用命令
一下是过滤为streamsets的进程的信息,比较常用
# ps -ef|grep streamsets
11.21.3.2 忽略字符大小写过滤关键字
# cat test.log |grep -i "d"
ddd
ddd
drvbgqa
DDDDESCFT
GGRGDDD
DWAZCW
-c 命令按照大小写匹配
# cat test.log |grep -c "d"
3
数据为
ddd
ddd
drvbgqa
# cat test.log |grep -i -n "d"
3:ddd
10:ddd
11:drvbgqa
12:DDDDESCFT
13:GGRGDDD
14:DWAZCW
# cat test.log |grep -v "d"
DDDDESCFT
GGRGDDD
DWAZCW
--- 是分割线,此命令比较常用
# cat test.log |grep -C 2 "d"
2
333
ddd
2342
654
---
95
1
ddd
drvbgqa
DDDDESCFT
GGRGDDD
# 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
数据样例:
# 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 常用命令
# 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
# 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
# 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
# uniq -d xiaoxu.log
dd
edcf
rf
# uniq -c xiaoxu.log
1 wdwdw
2 dd
2 edcf
1 tg
1 rfgt
3 rf
# uniq -u xiaoxu.log
sds
wdwd
www
sds
wdwdw
tg
rfgt
原始数据
# 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}'
11.26.3.8 把文件转换为unix编码
$ sudo sed -n 's/^M//g' passwd
# 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 命令参数
常用内置变量
$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 :传参的参数
关系操作符:< , > , <= , >= , == , != , ~ , !~
~ : 表示匹配的意思
!~ : 表示不匹配的意思
例如:[root@hadoop1 /]# awk -F":" '$7 ~ /^\/bin/{print $0}' /etc/passwd
[root@hadoop1 /]# awk -F":" '$7 !~ /^\/bin/{print $0}' /etc/passwd
布尔操作符:&& , || , !
print : 直接输出变量值或给定的字符串
Printf: 可以实现格式化输出
算数函数
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 常用命令
# vi testAwk.sh
#!/usr/bin/awk
BEGIN{FS=”:”}
{print $1}
实例一
#awk -F":" '{if($NF=="/bin/bash"){print $0}}' /etc/passwdno
pk
No
***********
实例二
#awk -F":" '{if($NF=="/bin/bash"){print $0}}' /etc/passwd
$NF :是表示最后一个单词的记录
实例一
#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
前后匹配查找
# 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 常用参数
# watch du -sh
Every 2.0s: du -sh Tue Jul 10 10:41:50 2018
8.0K .
第一行的显示多长时间刷新,执行的命令是什么,第二行的是Tue Jul 10 10:41:50 2018是执行命令的时间。
# 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 : 代表把当前执行的高亮显示出来。
# 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 重启网络服务
# service network restart
# 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 常用命令
以下命令是在根目录下查找 tomcat-7.0.88的文件夹
# find / -name tomcat-7.0.88
以下命令表示在/home/user目录下查找最后10分钟创建的文件
# find /home/user/ -cmin 10 -print
主目录中找到所有的 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/网站下载。 如果无法下载请联系作者。
查看本地的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加载数据
mysql> source /user.test.sql
Query OK, 0 rows affected (0.00 sec)
# mysql -uroot -p123456 <scripts-master/db_schema/graph-db-schema.sql
Warning: Using a password on the command line interface can be insecure.
有警告提示,可以忽略,提示密码暴露在外部
# 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 登录密码
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%,命中率很差,可能写操作比较频繁吧,而且可能有些碎片。
启动: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备份和恢复数据库
导出数据库
# 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
# 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 常用命令
$ 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
$ 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