Linux工作中必知必会的命令总结

目录

1 打包解压命令

 1.1 打包命令

 1.2 解压命令

 1.3 打包解压命令总结

2 权限设置

3 指定用户执行命令

4 将用户添加到用户组

5 查看磁盘空间大小及使用情况

6 统计文件大小

 6.1 统计当前目录下各个子文件的大小及总大小

 6.2 统计文件总大小

 7  查找某个文件在哪个位置

8 查看系统运行的XXX项目的进程号(PID)

9 根据进程查端口

10 根据端口查进程id

11  实时监控某文件内容

12 查看用户是否存在

13 将dos格式转换成unix格式

14 查看文件的行数

15 查看系统命令在哪个位置

16 干掉某项目(某类)进程

17 VIM编辑器中常用命令

18 分屏显示文件内容

19 查看系统内存使用情况

20 查看系统健康状况

21 将某文件放到某N级目录下 (且排除某些目录不copy)

22 同时对多台服务器操作的命令xcall.sh

23 集群拷贝(同步)文件命令 xsync.sh

24  读取配置文件中内容

25 创建软连接

26 批量修改某配置文件

27 设置系统时间




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

  1. 先安装 rsync,该命令是一个远程数据同步工具
  2. 需要以 root 用户身份执行 xcall.sh yum install -y rsync 进行安装
  3. 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 软链接名称

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"

猜你喜欢

转载自blog.csdn.net/godlovedaniel/article/details/109993232