目录
21 将某文件放到某N级目录下 (且排除某些目录不copy)
1 打包解压命令
1.1 打包命令
(1)打包成.tar.gz格式
- tar [选项] 压缩包名 源文件或目录
选项:
- -z:压缩和解压缩 ".tar.gz"格式
- -j:压缩和街压缩 ".tar.bz2"格式
打包到当前路径下,源文件位置在 /home/centos/phm/pro/下, 案例如下:
- tar -czvf 包名 源文件/源文件目录
[root@bigdata-1 phm]# tar -zcvf tmp.tar.gz /home/centos/phm/pro/
tar: 从成员名中删除开头的“/”
/home/centos/phm/pro/
/home/centos/phm/pro/inspect.drl
/home/centos/phm/pro/relay.drl
/home/centos/phm/pro/signal.drl
/home/centos/phm/pro/trackcircuit.drl
/home/centos/phm/pro/stream-processor.properties
/home/centos/phm/pro/stream-processor_bak.properties
/home/centos/phm/pro/ups-.drl
/home/centos/phm/pro/ups.drl
(2) 打包成zip格式
- 压缩文件:zip 压缩文件名 源文件
- 压缩目录: zip -r 压缩文件名 源目录
例如:将当前路径下pro文件夹打包成pro.zip文件
[root@bigdata-1 phm]# zip -r pro.zip pro
adding: pro/ (stored 0%)
adding: pro/inspect.drl (deflated 94%)
adding: pro/relay.drl (deflated 95%)
adding: pro/signal.drl (deflated 92%)
adding: pro/trackcircuit.drl (deflated 94%)
adding: pro/stream-processor.properties (deflated 75%)
adding: pro/stream-processor_bak.properties (deflated 76%)
adding: pro/ups-.drl (deflated 95%)
adding: pro/ups.drl (deflated 96%)
1.2 解压命令
- tar -xzvf 包名 【-C <指定解打包后的位置>】
- unzip 压缩文件名 【-d <文件解压缩后所要存储的目录>】
1.3 打包解压命令总结
tar 命令
- 1)基本语法
tar [选项] XXX.tar.gz 将要打包进去的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)
- 2)选项说明
表1-31
选项 |
功能 |
-z |
打包同时压缩 |
-c |
产生.tar打包文件 |
-v |
显示详细信息 |
-f |
指定压缩后的文件名 |
-x |
解包.tar文件 |
案例实操
(1)压缩多个文件
[root@hadoop101 opt]# tar -zcvf houma.tar.gz houge.txt bailongma.txt
houge.txt
bailongma.txt
[root@hadoop101 opt]# ls
houma.tar.gz houge.txt bailongma.txt
(2)压缩目录
[root@hadoop101 ~]# tar -zcvf xiyou.tar.gz xiyou/
xiyou/
xiyou/mingjie/
xiyou/dssz/
xiyou/dssz/houge.txt
(3)解压到当前目录
[root@hadoop101 ~]# tar -zxvf houma.tar.gz
(4)解压到指定目录
[root@hadoop101 ~]# tar -zxvf xiyou.tar.gz -C /opt
[root@hadoop101 ~]# ll /opt/
zip命令
- 1)基本语法
zip [选项] XXX.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令)
unzip [选项] XXX.zip (功能描述:解压缩文件)
- 2)选项说明
zip选项 |
功能 |
-r |
压缩目录 |
unzip选项 |
功能 |
-d<目录> |
指定解压后文件的存放目录 |
- 3)经验技巧
zip 压缩命令在window/linux都通用,可以压缩目录且保留源文件。
- 4)案例实操
(1)压缩 1.txt 和2.txt,压缩后的名称为mypackage.zip
[root@hadoop101 opt]# touch bailongma.txt
[root@hadoop101 ~]# zip houma.zip houge.txt bailongma.txt
adding: houge.txt (stored 0%)
adding: bailongma.txt (stored 0%)
[root@hadoop101 opt]# ls
houge.txt bailongma.txt houma.zip
(2)解压 mypackage.zip
[root@hadoop101 ~]# unzip houma.zip
Archive: houma.zip
extracting: houge.txt
extracting: bailongma.txt
[root@hadoop101 ~]# ls
houge.txt bailongma.txt houma.zip
(3)解压mypackage.zip到指定目录-d
[root@hadoop101 ~]# unzip houma.zip -d /opt
[root@hadoop101 ~]# ls /opt/
2 权限设置
- chmod -R 777 文件夹名 。给与指定文件夹读写执行权限
- r => 4 w => 2 x => 1
3 指定用户执行命令
-
sudo -u 用户名 操作命令
4 将用户添加到用户组
- usermod -a -G 用户组 用户名
- usermod -a -G hdfs hive :将hive用户添加到hdfs用户组中
5 查看磁盘空间大小及使用情况
[root@bigdata-1 phm]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/vda1 160G 50G 111G 32% /
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 12K 7.8G 1% /dev/shm
tmpfs 7.8G 779M 7.0G 10% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/vdb1 500G 159M 500G 1% /data01
tmpfs 1.6G 0 1.6G 0% /run/user/1005
tmpfs 1.6G 0 1.6G 0% /run/user/1004
tmpfs 1.6G 0 1.6G 0% /run/user/1013
tmpfs 1.6G 0 1.6G 0% /run/user/1020
tmpfs 1.6G 0 1.6G 0% /run/user/1008
tmpfs 1.6G 0 1.6G 0% /run/user/1003
tmpfs 1.6G 0 1.6G 0% /run/user/1015
tmpfs 1.6G 0 1.6G 0% /run/user/1019
tmpfs 1.6G 0 1.6G 0% /run/user/1006
tmpfs 1.6G 0 1.6G 0% /run/user/1010
tmpfs 1.6G 0 1.6G 0% /run/user/0
tmpfs 1.6G 0 1.6G 0% /run/user/997
6 统计文件大小
6.1 统计当前目录下各个子文件的大小及总大小
-
du -h
[root@bigdata-1 phm]# du -h
268K ./JINI_GLOBAL_CREATETABLE
1.3M ./JSUM_DWA_SWITCH/CONRESIS
1.3M ./JSUM_DWA_SWITCH/DCSWITCHMACH
1.3M ./JSUM_DWA_SWITCH/ENV
1.4M ./JSUM_DWA_SWITCH/MASTER
1.3M ./JSUM_DWA_SWITCH/SHOCK
1.3M ./JSUM_DWA_SWITCH/TRANSTIME
7.8M ./JSUM_DWA_SWITCH
4.0K ./test
1.3M ./JSUM_DWA_POWER_SUPPLY/25HZPOWER
1.3M ./JSUM_DWA_POWER_SUPPLY/ACCONTACT
1.3M ./JSUM_DWA_POWER_SUPPLY/ANTLIGHTNINGSW
1.3M ./JSUM_DWA_POWER_SUPPLY/BLOCK
1.3M ./JSUM_DWA_POWER_SUPPLY/CIRCUITBREAK
1.3M ./JSUM_DWA_POWER_SUPPLY/INPUT
1.3M ./JSUM_DWA_POWER_SUPPLY/INTERLOCK
1.4M ./JSUM_DWA_POWER_SUPPLY/LINETRANSF
1.3M ./JSUM_DWA_POWER_SUPPLY/MICROMONIT
1.3M ./JSUM_DWA_POWER_SUPPLY/RELAY
1.3M ./JSUM_DWA_POWER_SUPPLY/SIGNAL
1.3M ./JSUM_DWA_POWER_SUPPLY/STABVOL
1.3M ./JSUM_DWA_POWER_SUPPLY/STATIONJOIN
1.3M ./JSUM_DWA_POWER_SUPPLY/TDCS
1.3M ./JSUM_DWA_POWER_SUPPLY/TURNREPRES
1.3M ./JSUM_DWA_POWER_SUPPLY/ZPWRAIL
21M ./JSUM_DWA_POWER_SUPPLY
1.3M ./JTTL_ETL_COMMON
36K ./PREPARE
12K ./SUB_MAIN_WF/SUB_RELAY_MAIN_WF
16K ./SUB_MAIN_WF/SUB_POWER_SUPPLY_MAIN_WF
12K ./SUB_MAIN_WF/SUB_SIGMACH_MAIN_WF
4.0K ./SUB_MAIN_WF/SUB_SWITCH_MAIN_WF/fork
16K ./SUB_MAIN_WF/SUB_SWITCH_MAIN_WF
12K ./SUB_MAIN_WF/SUB_TRACKCIR_MAIN_WF
68K ./SUB_MAIN_WF
36K ./TOOLS
1.3M ./JSUM_DWA_ALARM/ALARM
1.3M ./JSUM_DWA_ALARM
1.3M ./JSUM_DWA_RELAY/2Y2WRELAY
1.3M ./JSUM_DWA_RELAY/SIGCTLCIR
1.4M ./JSUM_DWA_RELAY/SWTCTLCIR
4.0M ./JSUM_DWA_RELAY
1.3M ./JSUM_DWA_SIGMACH/CMLIGHTUNIT
1.3M ./JSUM_DWA_SIGMACH/ENV
1.3M ./JSUM_DWA_SIGMACH/LIGHTUNIT
1.3M ./JSUM_DWA_SIGMACH/SHOCK
1.3M ./JSUM_DWA_SIGMACH/XBBOX
6.4M ./JSUM_DWA_SIGMACH
1.3M ./JSUM_DWA_TRACKCIR/ENV
1.4M ./JSUM_DWA_TRACKCIR/INDOOR
1.4M ./JSUM_DWA_TRACKCIR/OUTDOOR
1.3M ./JSUM_DWA_TRACKCIR/SHOCK
5.2M ./JSUM_DWA_TRACKCIR
1.3M ./MAIN_WF/fork
1.3M ./MAIN_WF
1.3M ./MYSQL/appv_alarm
1.5M ./MYSQL/appv_power
1.4M ./MYSQL/appv_relay
1.3M ./MYSQL/appv_sigmach
1.4M ./MYSQL/appv_switch
1.4M ./MYSQL/appv_trackcir
7.9M ./MYSQL
436K ./pro
183M .
6.2 统计文件总大小
- du -sh
[root@bigdata-1 phm]# du -sh
183M .
7 查找某个文件在哪个位置
- find 路径 -name xxx
[root@bigdata-1 phm]# find . -name input.sh
./JSUM_DWA_SWITCH/CONRESIS/input.sh
./JSUM_DWA_SWITCH/DCSWITCHMACH/input.sh
./JSUM_DWA_SWITCH/ENV/input.sh
./JSUM_DWA_SWITCH/MASTER/input.sh
./JSUM_DWA_SWITCH/SHOCK/input.sh
./JSUM_DWA_SWITCH/TRANSTIME/input.sh
./JSUM_DWA_POWER_SUPPLY/25HZPOWER/input.sh
./JSUM_DWA_POWER_SUPPLY/ACCONTACT/input.sh
./JSUM_DWA_POWER_SUPPLY/ANTLIGHTNINGSW/input.sh
./JSUM_DWA_POWER_SUPPLY/BLOCK/input.sh
./JSUM_DWA_POWER_SUPPLY/CIRCUITBREAK/input.sh
./JSUM_DWA_POWER_SUPPLY/INPUT/input.sh
8 查看系统运行的XXX项目的进程号(PID)
- ps -ef | grep XXX
- ps -aux| grep XXX
- ps -aux | grep XXX | grep -v grep | awk '{print $2}'
[root@bigdata-1 ~]# ps -aux | grep spark | grep -v grep | awk '{print $2}'
12978
17073
ps:process status 进程状态
- 1)基本语法
ps -aux | grep xxx (功能描述:查看系统中所有进程)
ps -ef | grep xxx (功能描述:可以查看子父进程之间的关系)
- 2)选项说明
选项 |
功能 |
-a |
选择所有进程 |
-u |
显示所有用户的所有进程 |
-x |
显示没有终端的进程 |
- 3)功能说明
(1)ps -aux显示信息说明
USER:该进程是由哪个用户产生的
PID:进程的ID号
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位KB;
RSS:该进程占用实际物理内存的大小,单位KB;
TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。
STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台
START:该进程的启动时间
TIME:该进程占用CPU的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名
(2)ps -ef显示信息说明
UID:用户ID
PID:进程ID
PPID:父进程ID
C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU时间
CMD:启动进程所用的命令和参数
- 4)经验技巧
如果想查看进程的CPU占用率和内存占用率,可以使用aux;
如果想查看进程的父进程ID可以使用ef;
9 根据进程查端口
- netstat -anp | grep pid
[root@bigdata-1 ~]# netstat -nap | grep 12978
tcp6 0 0 :::18081 :::* LISTEN 12978/java
tcp6 0 0 10.1.3.11:55208 10.1.3.12:8020 ESTABLISHED 12978/java
unix 2 [ ] STREAM CONNECTED 614269 12978/java
unix 2 [ ] STREAM CONNECTED 620070 12978/java
常用:
- lsof -i | grep pid
[root@bigdata-1 ~]# lsof -i | grep 21628
java 21628 hbase 497u IPv6 671848 0t0 TCP bigdata-1.jx.com:fmsas (LISTEN)
java 21628 hbase 535u IPv6 1092361912 0t0 TCP bigdata-1.jx.com:42952->bigdata-2.jx.com:intu-ec-svcdisc (ESTABLISHED)
java 21628 hbase 544u IPv6 1069230900 0t0 TCP bigdata-1.jx.com:34786->bigdata-3.jx.com:eforward (ESTABLISHED)
java 21628 hbase 546u IPv6 667184 0t0 TCP *:16010 (LISTEN)
java 21628 hbase 553u IPv6 1069226661 0t0 TCP bigdata-1.jx.com:41530->bigdata-6.jx.com:eforward (ESTABLISHED)
java 21628 hbase 554u IPv6 1069232169 0t0 TCP bigdata-1.jx.com:41556->bigdata-6.jx.com:eforward (ESTABLISHED)
java 21628 hbase 558u IPv6 663299 0t0 TCP bigdata-1.jx.com:fmsas->bigdata-4.jx.com:59645 (ESTABLISHED)
java 21628 hbase 559u IPv6 663300 0t0 TCP bigdata-1.jx.com:fmsas->bigdata-6.jx.com:52580 (ESTABLISHED)
java 21628 hbase 560u IPv6 671510 0t0 TCP bigdata-1.jx.com:fmsas->bigdata-3.jx.com:60826 (ESTABLISHED)
java 21628 hbase 561u IPv6 671511 0t0 TCP bigdata-1.jx.com:fmsas->bigdata-5.jx.com:59801 (ESTABLISHED)
java 21628 hbase 562u IPv6 1069226793 0t0 TCP bigdata-1.jx.com:34860->bigdata-3.jx.com:eforward (ESTABLISHED)
java 21628 hbase 563u IPv6 1092364695 0t0 TCP bigdata-1.jx.com:37772->bigdata-4.jx.com:6188 (ESTABLISHED)
10 根据端口查进程id
- netstat -nap | grep port
[root@bigdata-1 ~]# netstat -nap | grep 8020
tcp 0 0 10.1.3.11:8020 0.0.0.0:* LISTEN 7307/java
tcp 0 0 10.1.3.11:54260 10.1.3.11:8020 TIME_WAIT -
tcp 0 0 10.1.3.11:53796 10.1.3.11:8020 TIME_WAIT -
tcp 0 0 10.1.3.11:38356 10.1.3.12:8020 TIME_WAIT -
tcp 0 0 10.1.3.11:8020 10.1.3.13:58220 ESTABLISHED 7307/java
tcp 0 0 10.1.3.11:37646 10.1.3.12:8020 TIME_WAIT -
tcp 0 0 10.1.3.11:8020 10.1.3.13:58416 ESTABLISHED 7307/java
tcp 0 0 10.1.3.11:38016 10.1.3.12:8020 TIME_WAIT -
tcp 0 0 10.1.3.11:53732 10.1.3.11:8020 TIME_WAIT -
tcp 0 0 10.1.3.11:38318 10.1.3.12:8020 ESTABLISHED 7307/java
tcp 0 0 10.1.3.11:48020 10.1.3.11:6379 TIME_WAIT -
tcp 0 0 10.1.3.11:37892 10.1.3.12:8020 TIME_WAIT -
tcp 0 0 10.1.3.11:42812 10.1.3.11:8020 ESTABLISHED 27950/java
tcp 0 0 10.1.3.11:53750 10.1.3.11:8020 TIME_WAIT -
tcp 0 0 10.1.3.11:8020 10.1.3.16:42470 ESTABLISHED 7307/java
tcp 0 0 10.1.3.11:53744 10.1.3.11:8020 TIME_WAIT -
tcp 0 0 10.1.3.11:8020 10.1.3.11:42812 ESTABLISHED 7307/java
tcp 0 0 10.1.3.11:37840 10.1.3.12:8020 TIME_WAIT -
比较常用的:
- lsof -i:port
[root@bigdata-1 ~]# lsof -i:8020
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 7307 hdfs 368u IPv4 1092332154 0t0 TCP bigdata-1.jx.com:40672->bigdata-2.jx.com:intu-ec-svcdisc (ESTABLISHED)
java 7307 hdfs 373u IPv4 574845 0t0 TCP bigdata-1.jx.com:intu-ec-svcdisc (LISTEN)
java 7307 hdfs 406u IPv4 1092332264 0t0 TCP bigdata-1.jx.com:intu-ec-svcdisc->bigdata-3.jx.com:59754 (ESTABLISHED)
java 7307 hdfs 407u IPv4 1092332116 0t0 TCP bigdata-1.jx.com:intu-ec-svcdisc->bigdata-3.jx.com:59600 (ESTABLISHED)
java 7307 hdfs 417u IPv4 1069231023 0t0 TCP bigdata-1.jx.com:intu-ec-svcdisc->bigdata-5.jx.com:51882 (ESTABLISHED)
java 7307 hdfs 429u IPv4 1069421517 0t0 TCP bigdata-1.jx.com:intu-ec-svcdisc->bigdata-1.jx.com:42812 (ESTABLISHED)
java 7307 hdfs 430u IPv4 1069231013 0t0 TCP bigdata-1.jx.com:intu-ec-svcdisc->bigdata-4.jx.com:42956 (ESTABLISHED)
java 7307 hdfs 458u IPv4 1069231011 0t0 TCP bigdata-1.jx.com:intu-ec-svcdisc->bigdata-6.jx.com:42470 (ESTABLISHED)
java 12978 spark 257u IPv6 1069417993 0t0 TCP bigdata-1.jx.com:55208->bigdata-2.jx.com:intu-ec-svcdisc (ESTABLISHED)
java 17073 hive 308u IPv6 1092326273 0t0 TCP bigdata-1.jx.com:40322->bigdata-2.jx.com:intu-ec-svcdisc (ESTABLISHED)
java 21628 hbase 535u IPv6 1092332899 0t0 TCP bigdata-1.jx.com:40280->bigdata-2.jx.com:intu-ec-svcdisc (ESTABLISHED)
java 27950 hdfs 390u IPv4 1069424718 0t0 TCP bigdata-1.jx.com:42812->bigdata-1.jx.com:intu-ec-svcdisc (ESTABLISHED)
- (1)根据进程pid查端口: lsof -i | grep pid
- (2)根据端口port查进程: lsof -i:port
- (3)根据进程pid查端口: netstat -nap | grep pid
- (4)根据端口port查进程 netstat -nap | grep port
- 区别:
- 1.netstat无权限控制,lsof有权限控制,只能看到本用户
- 2.losf能看到pid和用户,可以找到哪个进程占用了这个端口,显示的信息更全面(推荐使用)
11 实时监控某文件内容
- tail -f 文件名
12 查看用户是否存在
- id 用户
[root@bigdata-1 ~]# id hive
uid=1006(hive) gid=1001(hadoop) 组=1001(hadoop),1002(hdfs)
13 将dos格式转换成unix格式
- dos2unix 文件名 可以将该文件转换为unxi格式
- 批量将当前文件夹下所有文件类型格式转换成unix格式。有以下两种写法
find . -type f -exec dos2unix {} \
find . -type f | xargs -i dos2unix {}
注意:dos2unix不是系统自带的命令需要安装,yum install -y dos2unix 就可以安装
另外也可以将上述批量转换成unix命令封装成系统命令使用,具体如下:
cd /usr/bin
vim dos2unix.sh
#!/bin/bash
find . -type f -exec dos2unix {} \
保存后给予执行权限便可使用。
下次使用时候直接使用dos2unxi.sh在当前目录下便可批量将dos格式转换成unix格式
14 查看文件的行数
- wc -l 文件名
[root@bigdata-1 phm]# wc -l sparkstream-run-test3.sh
14 sparkstream-run-test3.sh
- 查看某文件某单词出现的次数
[root@bigdata-1 phm]# cat sparkstream-run-test3.sh | grep spark | wc -l
3
15 查看系统命令在哪个位置
- which 系统命令
[root@bigdata-1 phm]# which dos2unix.sh
/usr/bin/dos2unix.sh
16 干掉某项目(某类)进程
- ps -ef | grep XXX | grep -v grep|cut -c 9-15 | xargs kill -9
ps -aux | grep XXX | grep -v grep |awk '{print $2}' | xargs kill
17 VIM编辑器中常用命令
一般模式下:
- dd 删除一行
- G:行定位符。G:移动到页尾。1G移动到行首。数字+G移动到目标行。
- u:撤销上一步操纵。
编辑模式下:
- i:当前光标前
- o:当前光标的下一行
底行模式:
- :切换底行模式
- :!wq 强制保存并退出
- :q 退出
- :set nu 显示行号
- :set ff 显示格式
- :set ff=unix 将格式修改为unix格式
- :/ 搜索要查找的词
- :%s/old字符/new字符 批量替换
18 分屏显示文件内容
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
- 1)基本语法
less 要查看的文件
- 2)操作说明
操作 |
功能说明 |
空白键 |
向下翻动一页; |
[pagedown] |
向下翻动一页 |
[pageup] |
向上翻动一页; |
/字串 |
向下搜寻『字串』的功能;n:向下查找;N:向上查找; |
?字串 |
向上搜寻『字串』的功能;n:向上查找;N:向下查找; |
q |
离开 less 这个程序; |
19 查看系统内存使用情况
- free -m
20 查看系统健康状况
- top 所有信息
- uptime :查看系统平均负载情况
21 将某文件放到某N级目录下 (且排除某些目录不copy)
- 批量拷贝文件到某二级目录下
#将input.sh脚本放到二级文件夹下且忽略/home/centos/phm/SUB_MAIN_WF/*下的所有子目录,先删,后复制
find /home/centos/phm/ -path /home/centos/phm/JTTL_ETL_COMMON -prune -o -name "input.sh" -print | xargs rm -rf
find /home/centos/phm/ -maxdepth 2 -mindepth 2 -type d | xargs -i find {} -path "/home/centos/phm/SUB_MAIN_WF/*" -prune -o -type d -print | xargs -i cp -r /home/centos/phm/JTTL_ETL_COMMON/"input.sh" {}
这里采用find 的prune参数
-prune用法很严格,若要忽略某个目录一般采用如下固定模式:
find 查找文件的目录 -path 需要排除的目录 -prune -o -name 需要查询的内容
注意事项:理解为固定用法就可以了(-path->-prune->-o>-print)忽略四部曲
- 1)-prune 必须和 -path, -o 一起使用
- 2)-prune -o 的顺序不 能调换
- 3)-name等必须放在-prune -o后面才能使用
- 4)如果后面有管道符号前面需要加-print参数
例如:
find /home/centos/phm/ -path /home/centos/phm/JTTL_ETL_COMMON -prune -o -name "input.sh" -print | xargs rm -rf
伪代码解释:
if -path "/home/centos/phm/JTTL_ETL_COMMON" then
-prune(忽略该目录)
else
-print(打印满足条件后找到的内容)。
当然上述find cp命令我们也可以用find exec参数来实现如下命令所示:
find /home/centos/phm/ -maxdepth 2 -mindepth 2 -type d -exec cp -r /home/centos/phm/JTTL_ETL_COMMON/"input.sh" {} \;
但上述命令存在的隐患是参数过多会有溢出的危险,因而我们还是选用下面一种比较安全
find /home/centos/phm/ -maxdepth 2 -mindepth 2 -type d |xargs -i cp -r /home/centos/phm/JTTL_ETL_COMMON/"input.sh" {}
对于find -exec参数中{}命令和xargs -i命令中{}理解是一致的,对于该参数的使用需要注意一点结尾是\结尾且与前面有个空格,空格特别要注意被忽略,否则命令会出错,一般不建议使用-exec参数,另外需要注意{}的灵活运用,下面例子说明这一点
find /home/centos/phm/ -maxdepth 2 -mindepth 2 -type d -exec rm -rf {}/input.sh \;
表示删除找到二级目录下的input.sh文件,等价于下面这条命令
find /home/centos/phm/ -name "input.sh" -exec rm -rf {} \;
22 同时对多台服务器操作的命令xcall.sh
#!/bin/bash
##xcall.sh 编写为了为了同时对多台服务器进行操作,编写完成之后,将其放到 /usr/local/bin 下,给予执行权限
# for循环
for((i=1 ; i<=6; i++)) ; do
# 更改文本颜色
tput setaf 2
# 输出以下文本
echo ==================== bigdata-${i} $@ ===================
# 更改文本颜色
tput setaf 9
# ssh 远程登陆主机 s$i ,执行输入的参数的命令
ssh bigdata-${i} $@
done
23 集群拷贝(同步)文件命令 xsync.sh
- 先安装 rsync,该命令是一个远程数据同步工具
- 需要以 root 用户身份执行 xcall.sh yum install -y rsync 进行安装
- xsync.sh 编写是为了同步配置文件,编写完成之后,将其放到/usr/local/bin下
#!/bin/bash
# 指出当前用户名
name=`whoami`
# 指定文件所在文件夹名称
dir=`dirname $1`
# 指定文件的文件名
filename=`basename $1`
# 进入到dir中
cd $dir
# 得到当前目录的绝对路径
fullpath=`pwd`
for((i=1 ; i<=6; i++)) ; do
tput setaf 2
echo ==================== bigdata-${i} $@ ===================
tput setaf 9
# 远程同步命令 l 保留软连接 r 递归文件夹
rsync -lr $filename "$name"@bigdata-"$i":$fullpath
done
24 读取配置文件中内容
例如:
cat /home/centos/phm/JTTL_ETL_COMMON/oozieurl.txt | grep oozie_url | awk -F'=' '{ print $2 }' | sed s/[[:space:]]//g
读取/home/centos/phm/JTTL_ETL_COMMON/oozieurl.txt文件并过滤出oozie_url行,取以"="分割的第二列。
注意:此处必须使用sed s/[[:space:]]//g 去除 多余的空格符,防止格式带来的错误。
25 创建软连接
-
ln -s 源文件 目标文件
例如:
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
linux下的软链接类似于windows下的快捷方式
-s 是 symbolic的意思
rm -rf b(请注意不要在后面加”/”,rm -rf 后面加“/”的话,会进行递归删除,非常危险!)
示例:
rm -rf /usr/bin/ngnix
26 批量修改某配置文件
#批量替换 oozie的job.properties配置文件中内容。
#需要修改的参数放在某文件下,每次修改该文件即可,然后再批量替换
#主要使用find 和 sedc处理
nameNode=`cat /home/centos/phm/JTTL_ETL_COMMON/oozie.properties | grep nameNode | awk -F'=' '{ print $2 }' | sed s/[[:space:]]//g`
jobTracker=`cat /home/centos/phm/JTTL_ETL_COMMON/oozie.properties | grep jobTracker | awk -F'=' '{ print $2 }' | sed s/[[:space:]]//g`
find /home/centos/phm -name job.properties | xargs -i sed -i "s#^nameNode=.*#nameNode=${nameNode}#g" {}
find /home/centos/phm -name job.properties | xargs -i sed -i "s#^jobTracker=.*#jobTracker=${jobTracker}#g" {}
27 设置系统时间
场景:当发现某台虚拟机时间跑慢了,有时需要将时间调整到当前准确的时间则需要重新设置系统时间。
基本语法
- date -s 字符串时间
案例实操
- 设置系统当前时间
[root@hadoop101 ~]# date -s "2020-12-19 20:52:18"