Linux常用命令整理

查看主机名:hostname

创建文件夹 mkdir -p /test01/test02
创建文件 touch file.txt
拷贝目录 cp -r text/ text02 
移动目录 mv text/ text02 
删除 rm -rf file.txt  删除文件夹当前所有内容: rm -rf ./*

查看文件 cat /etc/passwd
查看文件(分页) more  按q退出查看
查看文件(默认末尾10行) tial   指定末尾3行:tail -3 /etc/passwd  动态查看 tial -f 
查看文件(默认前面10行) head 

查看文件 view /etc/passwd  搜索文件里内容输入?关键字

查看日志后10000条并输出到指定文件:
tail -n 10000 catalina.out > output.log

文件内查找:
tailf -n 1000 catalina.out | grep 'y190828140618915695b'
cat fund-web-error.log | grep 'netl17'

// -C 除显示符合匹配内容的那一列之外,并显示该列前后的内容

tail -f test.log | grep 'test' -C 5

tail -f info.log | grep 'test' -5

看着日志指定内容:

[deploy@web info]$ cat job-info.log | grep '交易流水-出借'
[INFO]2019-06-14 10:00:00 com.task.pull.YjTransFlueCheck|checkTransType2|(30)|开始执行交易流水-出借流水check
[INFO]2019-06-14 10:00:01 com.task.pull.YjTransFlueCheck|checkTransType2|(35)|----------- 交易流水-出借流水昨日数据推送正常 -----------

查看指定内容上下几行

grep -10 '123' test.log                //打印匹配行的前后10
grep -C 10 '123'  test.log           //打印匹配行的前后10
grep -A 10 -B 10 '123'  test.log  //打印匹配行的前后10
grep -A 10 '123'  test.log           //打印匹配行的后10行
grep -B 10 '123'  test.log           //打印匹配行的前10行

grep '123' test.log| grep '456'    //显示既匹配 ‘123’又匹配 ‘456’的行
grep -n '123' test.log                 //搜索test.log中满足123的内容的行号
tail -n +50 test.log                     //查看test.log指定行号后的内容,比如50行
sed -n '50,100p' test.log           //查看test.log的第50行到100行 ,记得p字母

-bash-4.1$ grep -A 2 'kpCount' info.log 
[2020-06-01 09:40:43:461] [DEBUG] - org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:139) - ==>  Preparing: SELECT count( CASE WHEN a.contact_status = 6 THEN 1 END ) as "kpCount", count( CASE WHEN a.dial_status = 0 THEN 1 END ) as "noCallCount", count( CASE WHEN a.dial_status != 0 THEN 1 END ) as "callCount" FROM odr_channel_contact a WHERE a.comp_id = ? and a.is_del = 0 
[2020-06-01 09:40:43:462] [DEBUG] - org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:139) - ==> Parameters: 1910021045030214(Long)
[] [] [] [2020-06-01 09:40:43:465] [DEBUG] - org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:139) - <==      Total: 1

Linux cup使用率过高排查

   1. top -c  获取 jps 查找java
   2. top -Hp pid
   3. printf "%x\n" 129687
   4. jstack pid | grep -A 30 ac6

[croot@cn1-prd-crm-athena-start01 ~]$ jps
16249 jar
17231 Jps

[croot@cn1-prd-crm-athena-start01 ~]$ top -Hp 16249

top - 18:48:48 up 36 days,  3:29,  3 users,  load average: 1.14, 0.96, 2.15
Threads: 417 total,   1 running, 416 sleeping,   0 stopped,   0 zombie
%Cpu(s): 27.6 us,  0.3 sy,  0.0 ni, 72.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8008636 total,  2888008 free,  3110624 used,  2010004 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  4586540 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                           
16512 croot     20   0 8568212   2.2g  17556 R 96.3 29.4   5:28.94 java                                                              
16256 croot     20   0 8568212   2.2g  17556 S  3.0 29.4   0:14.52 java  

[croot@cn1-prd-crm-athena-start01 ~]$ printf "%x\n" 16512
4080

[croot@cn1-prd-crm-athena-start01 ~]$ jstack 16249 | grep -A 30 4080
"XNIO-1 task-153" #339 prio=5 os_prio=0 tid=0x00007fcf54080800 nid=0x40e3 waiting on condition [0x00007fceb5589000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000006f0f869f0> (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.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

"XNIO-1 task-152" #338 prio=5 os_prio=0 tid=0x00007fcee4039000 nid=0x40e2 waiting on condition [0x00007fceb568a000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000006f0f869f0> (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.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

"XNIO-1 task-151" #337 prio=5 os_prio=0 tid=0x00007fced8043800 nid=0x40e1 waiting on condition [0x00007fceb578b000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000006f0f869f0> (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.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
--
"XNIO-1 task-68" #240 prio=5 os_prio=0 tid=0x00007fcf4c1e4000 nid=0x4080 runnable [0x00007fceba6cc000]
   java.lang.Thread.State: RUNNABLE
        at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3799)
        at java.util.regex.Pattern$Start.match(Pattern.java:3463)
        at java.util.regex.Matcher.search(Matcher.java:1248)
        at java.util.regex.Matcher.find(Matcher.java:637)
        at java.util.regex.Matcher.replaceFirst(Matcher.java:1001)
        at java.lang.String.replaceFirst(String.java:2178)
        at com.shiqiao.prometheus.monitor.utils.SqlInterceptorUtil.getInnerSql(SqlInterceptorUtil.java:52)
        at com.shiqiao.prometheus.monitor.utils.SqlInterceptorUtil.getSql(SqlInterceptorUtil.java:27)
        at com.shiqiao.prometheus.monitor.ShiqiaoMybatisInterceptor.intercept(ShiqiaoMybatisInterceptor.java:135)
        at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
        at com.sun.proxy.$Proxy304.query(Unknown Source)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)
        at sun.reflect.GeneratedMethodAccessor508.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
        at com.sun.proxy.$Proxy152.selectList(Unknown Source)
        at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)
        at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:173)
        at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:78)
        at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148)
        at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
        at com.sun.proxy.$Proxy184.getChannelDetailsList(Unknown Source)
        at com.lbc.athena.customer.channel.service.CrmChannelInfoServiceImpl.getChannelInventoryDetailsList$original$2YhAh14J(CrmChannelInfoServiceImpl.java:364)
        at com.lbc.athena.customer.channel.service.CrmChannelInfoServiceImpl.getChannelInventoryDetailsList$original$2YhAh14J$accessor$SOacEe0k(CrmChannelInfoServiceImpl.java)
        at com.lbc.athena.customer.channel.service.CrmChannelInfoServiceImpl$auxiliary$vRFepbEx.call(Unknown Source)
        at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:86)
        at com.lbc.athena.customer.channel.service.CrmChannelInfoServiceImpl.getChannelInventoryDetailsList(CrmChannelInfoServiceImpl.java)

vm 克隆centos7 修改IP
1. rm -rf /etc/udev/rules.d/70-persistent-ipoib.rules 
2. vim /etc/sysconfig/network-scripts/ifcfg-ens32  编辑IP,删除UUID
3. 重启网络 service network restart
4. 查看网络配置,IP已生效 ifconfig

[root@localhost ~]# systemctl status network.service
● network.service - LSB: Bring up/down networking
   Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
   Active: failed (Result: exit-code) since Sat 2020-11-07 16:31:35 CST; 7s ago
     Docs: man:systemd-sysv-generator(8)

如果重启网络保上面的错误,则执行:
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl start network.service 

Linux清空文件,两种方式:
[deploy@web logs]$ echo "" > catalina.out 
[deploy@web logs]$ cat /dev/null > catalina.out 

linux查看文件大小M
ll -h

ls 默认按文件名排序,
ls -S 按文件大小排序
ls -t 按修改时间排序
ls -X 按扩展名排序,相当于按类型排序

ll -h -S  按文件大小排序 单位M
ll -h -t   按时间排序正叙
ll -h -rt  按时间排序倒叙

ll -ht | head -20  按日期排序显示前20条

ll -ht | tail -20  按日期排序显示后20条

Linux根据端口查进程:

ps -ef | grep port

[root@test-pinjaman-1 logs]# ps -ef | grep 9001
root      8103     1  1 10:13 ?        00:03:31 java -Xms128M -Xmx256M -Xloggc:/home/quant_group/logs/gclog/pinjamancepat-gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -jar /home/quant_group/app/pinjamancepat/pinjamancepat.jar --worker 1 --currentWorker 1 --server.port=9001
root     19307 29568  0 15:15 pts/2    00:00:00 grep 9001

1. 根据端口号查询pid
netstat -nlp | grep port

2.根据pid进程查询来源程序
ps -ef | grep pid

[root@test-1 logs]# netstat -nlp | grep 9001
tcp        0      0 0.0.0.0:9001                0.0.0.0:*                   LISTEN      8103/java           
[root@test-1 logs]# ps -ef | grep 8103
root      8103     1  1 10:13 ?        00:03:30 java -Xms128M -Xmx256M -Xloggc:/home/quant_group/logs/gclog/pinjamancepat-gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -jar /home/quant_group/app/pinjamancepat/pinjamancepat.jar --worker 1 --currentWorker 1 --server.port=9001
root     19164 29568  0 15:14 pts/2    00:00:00 grep 8103

1.根据端口号查询pid
netstat -tunlp| grep port

2.根据pid进程查询来源程序
ps aux | grep pid

[root@test-1 ~]# netstat -tunlp | grep 9012
tcp        0      0 0.0.0.0:9012                0.0.0.0:*                   LISTEN      23468/java          
[root@test-1 ~]# ps aux | grep 23468
root     23468  0.1  5.5 2881572 458820 ?      Sl   Dec18  10:16 java -Xms128M -Xmx256M -Xloggc:/home/quant_group/logs/gclog/solusiku-audit-gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -jar /home/quant_group/app/solusiku-audit/solusiku-audit.jar --worker 1 --currentWorker 1 --server.port=9012
root     31944  0.0  0.0 105372   900 pts/6    S+   09:41   0:00 grep 23468

Linux查看redis安装目录:
1. 根据端口查看pid
     ps -ef |  grep redis 
     ps -ef |  grep 6379

2. 根据pid查询安装目录
   ls -l /proc/pid/cwd

Linux查看端口占用:
netstat -nltp | grep 9017

测试远程服务器是否允许访问:

telnet  127.0.0.1   8080  
telnet  17.115.29.220 58110

wget "http://www.demo.com/sso/verify"
curl http://www.demo.com/sso/verify

[deploy@pre01 ~]$ curl http://www.demo.com/sso/verify
{"verify":false}

[deploy@dmz.1 ~]$netstat -nltp | grep 9017
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:9017                0.0.0.0:*                   LISTEN      30178/java 

Linux清空文件
[deploy@dmz.1 ~]$ cat /dev/null > catalina.out 

1、递归查找(当前路径下递归查找以tomcat-fund开头的文件夹)
命令:find . -name 'tomcat-fund*' -type d 

2、不递归查找(当前路径下不递归查找以tomcat-fund开头的文件夹,-maxdepth 1表示查找深度为1)
find . -maxdepth 1 -name 'tomcat-fund*' -type d 

mysql跨库复制数据:

INSERT INTO `netloan-product10`.fund_third_account(`id`,`source`,`spabank_cust_id` ,`hxxc_cust_id`,`user_name`, `id_type`,`id_no`, `mobile_no` , `bank_card_no` ,`bank_name`,`third_order_id`, `account_status`,`create_time`,`updated_time`,`memo`, ) 
SELECT * FROM `netloan-product6`.fund_third_account WHERE TO_DAYS(create_time) = TO_DAYS(NOW()); 

查询字段所在的表:
USE information_schema;
SELECT TABLE_NAME FROM COLUMNS WHERE COLUMN_name='match_amount';

查询字段所在的表(指定数据库):
USE information_schema;
SELECT TABLE_NAME FROM COLUMNS WHERE COLUMN_name='match_amount' and TABLE_SCHEMA='netloan-product2'

/dev/mapper/centos-root 磁盘已满

[root@localhost ~]# df -h        
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   17G   16G  1.6G   91% /
devtmpfs                 471M     0  471M    0% /dev
tmpfs                    488M     0  488M    0% /dev/shm
tmpfs                    488M   15M  473M    3% /run
tmpfs                    488M     0  488M    0% /sys/fs/cgroup
/dev/sda1               1014M  157M  858M   16% /boot
tmpfs                     98M     0   98M    0% /run/user/0
tmpfs                     98M   12K   98M    1% /run/user/42

[root@localhost /]# du -h -x --max-depth=1
44M     ./etc
676M    ./root
6.1G    ./var
8.6M    ./tmp
4.4G    ./usr
22M     ./home
0       ./media
0       ./mnt
4.2G    ./opt
0       ./srv
236K    ./bigdata
16G     .

查看各文件大小:du -h -x --max-depth=1

查找大于5M:find / -size +5M

Linux文件目录基本权限
drwxr-xr-x.  
d代表目录
rwx 所有者user  u 7
r-x 所属组group g 5
r-x 其他人other o 5
权限-字目表示:
r读 (cat more head tail...) 
w写 (mkdir touch cp mv rm...)
x执行(cd ./sh脚本)

权限-数字表示
r读   4
w写   2
x执行 1

数字表示
rwx 所有者user  u 7
r-x 所属组group g 5
r-x 其他人other o 5

最高权限:777
r:4 w:2 x:1
-rw-r--r--:644

修改权限:
创建文件 touch test.txt 默认权限:-rw-rw-r--

修改权限命令 chmod
chmod u+x text.txt   所有者添加x权限
chmod u-x text.txt   所有者撤销x权限

修改权限命令 chmod 数字表示
chmod 755 text.txt 添加权限
chmod 644 text.txt 撤销权限 更改数字变化就可以了。
chmod 777 -R text01 递归赋予权限 赋予text01目录下所有文件及目录777权限

修改所有者 chown 只能是root身份操作
drwxrwxr-x  2 hadoop hadoop 4096 Jun  9 10:19 text01

普通用户操作报错:
[hadoop@hadoop01 ~]$ chown root text01
chown: changing ownership of `text01': Operation not permitted

修改所属组 chgrp 只能是root身份操作

普通用户操作报错:
[hadoop@hadoop01 ~]$ chgrp root text01
chgrp: changing group of `text01': Operation not permitted

同时修改所有者所属组命令 chown root:root test01

创建用户useradd user
创建密码password user
创建用户组 groupadd user
查看用户id: id user
删除用户 userdel -r user

cat /etc/passwd
cat /etc/group
ls  /home/

查看环境变量 echo $PATH

符号命令
管道符号:|  把前面输出结果传递给后面命令
cat /etc/passwd | more

筛选过滤命令:grep 过滤条件 路径
grep 'root' /etc/passwd
grep结合管道|使用
cat /etc/passwd | grep 'root'
ifconfig | grep 'inet6 addr:'

追加符合:>>  把一个命令的输出结果追加写入到文件
ifconfig | grep 'inet6 addr:' >> /home/hadoop/yz.log
head -3 /etc/passwd >> /home/hadoop/yz.log 
覆盖符合:> 把一个命令的输出结果覆盖写入到文件
ifconfig | grep 'inet6 addr:' > yz.log 

统计命令:wc    
统计行 wc -l 文件
wc -l /etc/passwd

查看系统进程:ps -ef 

统计进程数:
ps -ef | wc -l 

vi编辑器 vi/vim
按i编辑 esc退出编辑 ZZ写入保存并退出 :wq写入保存并退出  :q!不保存并退出

vi快捷键
拷贝一份文件到当前目录做测试 cp /etc/passwd ./
显示行号 :set nu
删除当前行 dd
删除3行    3dd
粘贴 p  dd(有剪切的功能) dd p
复制 yy p 
快速移动到第一行 gg
快速移动到最后一行 G
快速移动到第10行  :10
撤销上一步操作  u
替换指定关键字 :1,$s/nologin/yz/g
替换前 2 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
替换后 2 mail:x:8:12:mail:/var/spool/mail:/sbin/yz

:1,$s/nologin/yz/g
1,$  代表一个范围  1代表第一行 $代表最后一行 
s    代表替换
/nologin/yz/ 替换和被替换内容
g    代表通行

Linux帮助命令 man
查看ls命令帮助信息 man ls 

查看配置文件信息 man services

查看配置文件两方面,1.配置文件干嘛用的 2.配置格式
more /etc/services 

搜索命令:find  这个功能占用大量系统资源,使用这个功能时,避开服务器使用高峰期
语法格式 find 搜索范围 匹配条件  

根据文件名搜索 -name -iname

精确查找 find / -name init  /是根目录 表示全盘搜索,尽可能缩小搜索范围
包含查找 find /etc/ -name *init*  搜索指定开头:find /etc/ -name init*
占位查找 find /etc/ -name init???
不区分大小写查找 find /etc/ -iname init???            -iname

根据文件大小搜索: -size
+ 表示大于
- 表示小于

Linux中一个数据块:512字节=0.5k, 1KB等于两个数据块
1MB=1024KB 
100MB=102400KB
102400KB*2=204800个数据块

查找100MB文件
find / -size +204800

根据所有者、所属组搜索
find /root/  -user root
find /root/ -group root

表达式 -and -or   简写 -a -o
find /etc/ -size +16800 -a -size -204800   大于16800同时小于204800

只查找文件:-type f   file文件
find /etc/ -name init* -a -type f
只查找目录:-type d   data目录
find /etc/ -name init* -a -type d

sudo权限 
1.操作对象是命令
2.root管理员将一部分权限授权给普通用户
使用root用户执行 visudo 给普通用户授权的文件  more /etc/sudoers
root    ALL=(ALL)       ALL
hadoop  ALL=(root)NOPASSWD:ALL   ## NOPASSWD 指普通用户使用sudo命令时不需要属于密码

##hadoop  ALL=shutdown -t now 立即停止后重新启动,参数越多,权限范围越小

执行 man visudo       -- sudoers(5)其中5指配置文件
vi(1), sudoers(5), sudo(8), vipw(8)
执行 man 5 sudoers

查看所有命令:
执行 ls /bin   
执行 ls /usr/sbin/

查询用户被赋予多少权限 sudo -l  
查看命令所在的位置 whereis shutdown


磁盘管理 分区、格式化、挂载

fdisk -l 需要获取一共有几块硬盘,每块容量大小、分区情况、剩余容量是多少

255 heads, 63 sectors/track, 3916 cylinders --cylinders表示磁柱

cd /dev  ll查看  b是块 sda是硬盘 sda1分区   s代表硬盘接口 d代表硬盘 a代表第一块硬盘
brw-rw----  1 root disk      8,   0 Jun  8 22:36 sda
brw-rw----  1 root disk      8,   1 Jun  8 22:36 sda1
brw-rw----  1 root disk      8,   2 Jun  8 22:36 sda2
brw-rw----  1 root disk      8,   3 Jun  8 22:36 sda3


分区 fdisk /dev/sdb

临时挂载 mount /dev/sdb6 /mnt
永久挂载 vi /etc/fstab 

挂载光驱 mout /dev/cdrom /media/

/dev/sdb6   /mnt  ext4  defaults  0 0

Linux系统管理命令
ifconfig
查询系统整体资源信息(类似任务管理器,实时统计) top
load average: 0.18    负载
Swap:  2097148k total 交换分区,类似虚拟内存

查看系统内存信息 free   free -m 以MB为单位
查看系统进程 ps -ef 
查看开机启动 chkconfig

查看防火墙状态 service iptables status

service iptables stop
service iptables status
chkconfig iptables off

结束进行 kill -9
查询网络状态 netstat
-t 查看TCP协议的网络信息
-u 查询UDP协议的网络信息
-l listen监听端口
-r 查看路由(网关)
-n ip地址和端口号显示查询结果

netstat -tlun 表示查看系统已经开启的监听端口
netstat -an 查看所有监听的信息
netstat -rn 查看路由列表

压缩和解压缩

压缩   gzip    只能压缩文件
解压缩 gunzip

打包 tar -cvf test.tar test/
解压缩 tar -zxvf test.tar -C /opt/

软件包 rpm
挂载光驱 mout /dev/cdrom /media/
统计文件数量 ls | wc -l

查询已经安装好的rpm包 rpm -qa     query all
过滤搜索: 
rpm -qa | grep httpd
rpm -qa | grep zlib

安装 rpm -ivh ***.rpm
卸载 rpm -e ***  卸载时不需要加.rpm

查看文件来自哪个包 query file
ls /etc/ntp.conf
rpm -qf /etc/ntp.conf


软件包 yum  管理rpm包,比rpm命令更快捷,前提要联外网
查询 yum list  包名  版本  仓库
zsh-html.x86_64          4.3.11-4.el6.centos.2       base  

过滤搜索: 
yum list | grep httpd-tools   有@ 符合代表已经安装,没有就是没有安装

httpd-tools.x86_64       2.2.15-39.el6.centos        @anaconda-CentOS-201410241409.x86_64/6.6
httpd-tools.x86_64       2.2.15-60.el6.centos.6      updates 

yum list | grep httpd-devel

查询     yum list | grep httpd-tools
安装     yum install httpd-devel.x86_64
一路安装 yum -y install httpd-devel.x86_64
卸载     yum -y remove httpd-devel.x86_64

yum仓库(yum源)
mirrors.163.com  mirrors.sohu.com

yum仓库位置 cd /etc/yum.repos.d
ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Vault.repo

more CentOS-Base.repo
#仓库地址 修改yum源就是修改这里 gpgcheck是否校验 gpgkey校验码
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
gpgcheck=1  
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

正则表达式
通配符 * ?[]  
通配符用来匹配文件名
正则表达式在文件中匹配符合条件的字符串

touch aa aabb
查看 ls aa*

符号 
^开始         "^abc"    abc、abcd
^非(在[]内) "[^abc]"  ddd、mpd
$结束         "abc$"    abc、mmabc
\转义符
.任意字符      "a.c"    abc、fapcd
\<匹配单词开始 "\<abc"  abc、abcd
\>匹配单词结束 "abc\>"  abc、pmrabc
| 或           "aaa|bbb" aaa、bbbpp
? 匹配前一个字符0或1次
* 匹配前一个字符>=0次
+ 匹配前一个字符>=1次
{} {m}{m,n}{m,}{,n} 重复次数
[] [0-9][a-z][A-Z]
() 将候选的所有元素放在()内,用|隔开


[a-z][0-9][A-Z] 匹配 b8K

grep 过滤命令支持正则表达式

grep 'root' /etc/passed
cat /etc/passed | grep 'root'  管道符合消耗资源

grep '[0-9][0-9][0-9]:7' /etc/passwd   

查找r开头n结尾,中间任意字符  
grep '^r.*n$' /etc/passwd   

grep awk sed 命令支持正则

ifconfig | grep 'inet addr:'

inet addr:192.168.230.128  Bcast:192.168.230.255  Mask:255.255.255.0
inet addr:127.0.0.1  Mask:255.0.0.0

grep -v 代表反向选择,不包含
ifconfig | grep 'inet addr:' | grep -v '127.0.0.1'

inet addr:192.168.230.128  Bcast:192.168.230.255  Mask:255.255.255.0

sed 命令,提取IP地址,类似替换功能
sed 's/oldString/newString/g'

ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | sed 's/inet addr://g' | sed 's/Bcast.*//g' 

取到的IP地址:192.168.230.128  
shell编程
1.命令解释器
  外层应用层->shell命令解释层->内核->硬件
2.编程语音 解释执行的脚本语音,可以直接调用系统命令

查询系统支持的shell  cat /etc/shells

shell变量
1.环境变量
查看环境变量 set
查看环境变量配置文件 more /etc/profile (全局)    more ./bash_profile (只针对一个用户)

2.位置变量  $1 ... $9 
回显 echo "1234"   同System.out.println("1234")

vi yz.sh
#!/bin/bash

echo $0
echo $1
echo $3
echo $2

#! 固定格式
/bin/bash 使用哪个shell变量,声明shell环境
$0 代表脚本名称,即yz.sh 

分别给变量$1 $2 $3赋值($0当前进程或脚本名称):
sh yz.sh start stop restart 

3.预定义变量
ls /etc
echo $? 返回0成功 非0失败

4.自定义变量
name=value
取值 $name

逻辑与和逻辑或
&& 
||

cat /etc/passed && mkdir /tem/hdfs  前面成立,后面执行
cat /etc/passed || mkdir /tem/hdfs  前面出错,后面执行

无逻辑关系

算数运算
$((expression))
$[expression]
expr expression

a=2
b=3
echo $((a+b))
echo $[a+b]
expr 5 + 2   要有空格
expr $a + $b 取变量值要加$

a="a a"
b="b b"

[$a = $b] ; echo $?  执行报错 [a a = b b] ; echo $?

解决错误:
["$a" = "$b"] ; echo $?

-e 文件名 如果文件存在则为真

[ -e /etc/passed ] ; echo $?


-a -o 即 -and -or

[ -e /etc/passed -a 2 -eq 2 ] ; echo $? 判断两边同时成立
[ -e /etc/passed -o 2 -eq 2 ] ; echo $? 判断一边成立

date 查询系统时间命令

date -s "2016-09-04 15:29:30" 修改系统时间

date "+%Y%m%d"  打印20180621

查看更多date相关 
man date

which man
/usr/bin/man

查看7天以前时间
date -d '7 day ago' '+%Y%m%d'


for循环

vi 2.sh
#!/bin/bash
for i in tom peter marry jack
do
echo $i
done

执行
sh 2.sh


mkdir data_test

使用for循环在data_test目录下生成50个目录

vi 3.sh
#!/bin/bash
for i in {1..50}
do
mkdir /root/data_test/dir$i
done

执行 
sh 3.sh

删除data_test目录下50个目录
cd data_test
rm-rf ./*

循环打印1到10
vi 4.sh
#!/bin/bash

for i in {1..10}
do
echo $i
done

求1到10的和
vi 5.sh
#!/bin/bash
for((i=1;i<=10;i++))
do
SUM=$((SUM+i))
done
echo $SUM

#!/bin/bash
for((i=1;i<=10;i++));do   写法2,加分号
SUM=$((SUM+i))
done
echo $SUM

九九乘法表
vi 6.sh
#!/bin/bash
for((i=1;i<=9;i++))do
    for(j=1;j<=i;j++);do
        echo -ne "$i*$j=((i*j))\t"
    done
    echo
done


错误写法 j*i
正确写法 $[j*i]  $(($j*$i))


while循环

语法1:
while [条件]
do
命令
done

求1到10的和
vi 7.sh
#!/bin/bash
i=1
while [$i -le 10]
do
SUM=$((SUM+i))
i=$[i+1]
done
echo $SUM


语法2:

while read -r line
do
命令
done

vi 8.sh
#!/bin/bash
while read -r line
do
echo $line
done < /etc/passed   // 小于号是标准输入,读取文件


awk命令
截取对应的列

awk '条件{动作1} 条件2{动作2}...' 文件名 
可结合printf(需要手动添加换行)、print、|管道符号 使用
-F选项 : 指定分隔 ``优先执行
echo `echo $line | awk -F: '{print $1}'`:HELLO

输出文件第一列和第五列
awk '{printf $1 "\t" $5 "\n"}' test.txt

df -h 查看使用信息

df -h | awk '{print $1 "\t" $5 "\t" $6}'

if判断语句

语法1:
if 条件
then
命令
fi

vi 9.sh
#!/bin/bash
if [2 -eq 2]
then 
echo YES
fi


语法2:
if条件
then
命令序列
else
命令序列
fi

vi 10.sh
#!/bin/bash
if [ -d /tem/123 ];then
ls /tem/123
else
    mkdir /tem/123
fi


语法3
if 条件
then
命令序列
elif 条件
then
命令序列
elif 条件
then
命令序列
else
命令序列
fi


ls \ 表示继续输入命令

case语句

语法1:

case $变量 in
条件1)
 命令
 ;;
条件2)
 命令
 ;;
*)
esac


vi 11.sh

提示菜单:

#!/bin/bash

case $1 in
top)
 top
 ;;
free)
 free
 ;;
df)
 df
 ;;
*)
echo "usage:$0{top|free|df}"
esac


sh 11.sh top

C

crontab计划任务

at --指定时间执行特定命令

指定时间拷贝
at 11:30
at> cp /etc/passed /tmp/
at> 
按ctrl+d结束

crontab  --周期性执行计划任务

用法 crontab [-u 用户][-l][-r][-e]
-u:执行某个用户,不加-u则为当前用户
-e:制定计划任务
-l:列出计划任务


查看服务是否开启
service crond status
开启服务
service crond start


crontab格式
横杠-表示连续时间
,表示不连续时间
* 表示所有时间
/ 表示间隔时间

分 时 日 月 周 命令


每周三凌晨两点备份

0 2 * * 3  cp /etc/passwd /tmp

每个月10号和25号凌晨1点5分执行

5 1 10,25 * *  rm -rf /tmp/*

时间同步命令 ntpdate

每10分钟执行时间同步

*/10 * * * * ntpdate

0 1-6 * * * 每天的凌晨1点到6点执行

每一分钟将执行结果追加写入文件当中
crontab -e
*/1 * * * * date >> /tmp/date.log

重启crond服务
service crond restart

查看计划任务
crontab -l

实时滚动查看

tail -f /tmp/date.log


删除计划任务 crontab -e 清除 */1 * * * * date >> /tmp/date.log ,哪个不用清除哪个
删除计划任务(全部) crontab -r


Hadoop-Linux环境部署
修改主机名 vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop01.architect

修改IP

创建用户 useradd  yangzeng  
         password yangzeng

ls /home

修改映射
vi /etc/hosts
## ip and hostname
192.168.230.128 hadoop01.architect
192.168.230.129 hadoop02.architect
192.168.230.130 hadoop03.architect 

修改Windows/System32/druvers/hosts文件

查看防火墙
service iptables status
关闭防火墙
service iptables stop
关闭防火墙开机启动
chkconfig iptables off
查看是否关闭
chkconfig
iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off

visudo 
root ALL=(ALL) ALL
hadoop ALL(root)NOPASSWD:ALL

关闭selinux ,解决连接访问问题
vi /etc/sysconfig/selinux 
SELINUX=disabled  禁用

卸载系统自带jdk
rpm -qa | grep java

强制卸载--nodeps
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.121-2.6.8.1.el6_8.x86_64


配置DNS解析
vi /etc/sysconfig/network-scripts/ifcfg-eth0 
DNS1=192.168.230.2

重启网络服务
service network restart

重启机器
reboot

cd /opt
mkdir sorfware modules datas tools

更改目录权限:
sudo chown -R hadoop:hadoop /opt/*

颜色改成绿色
chmod u+x jdk-7u67-linux-x64.tar.gz  

解压jdk到指定目录
tar -zxf jdk-7u67-linux-x64.tar.gz -C /opt/modules

cd /opt/modules/jdk1.7.0_67  pwd

配置环境变量
sudo vi /etc/profile

## JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin

使配置文件立即生效
su -root
source /etc/profile

退出
exit

验证Java环境
java -version


jenkins 启动tomcat shell脚本

#!/bin/sh
export BUILD_ID=dontKillMe
echo "stop tomcat..."
sh /opt/huaxia/tomcat-cms/bin/shutdown.sh 
sleep 3s 
cd /opt/huaxia/tomcat-cms/webapps/cmsadmin
rm -rf ./*
unzip /var/lib/jenkins/workspace/tomcat-cms/hxjr-crm/target/ROOT.war
sleep 15s 
echo "start tomcat..."
sh /opt/huaxia/tomcat-cms/bin/startup.sh 

发布项目脚本:

touch sso_dev.sh
#!/bin/bash
cd /home/deploy/ppp/bsso-service
git fetch
git checkout master 
git pull
#git log --pretty=format:"%h | %ce | %ad | %s | $(date "+%Y-%m-%d %H:%M:%S")" -5 --date=iso > front-newback-as/src/main/webapp/git.log
mvn clean package -U -Pdev -Dmaven.test.skip=true
cd target
ssh 10.15.12.92 'source /etc/profile;/usr/local/yz/tomcat-bsso/bin/shutdown.sh'
sleep 5
ssh 10.15.12.92 'rm /usr/local/yz/tomcat-bsso/webapps/* -rf'
scp ./ROOT.war deploy@10.15.12.92:/usr/local/yz/tomcat-bsso/webapps/
ssh 10.15.12.92 'unzip /usr/local/yz/tomcat-bsso/webapps/ROOT.war -d /usr/local/yz/tomcat-bsso/webapps/ssoadmin'
ssh 10.15.12.92 'rm /usr/local/yz/tomcat-bsso/webapps/ROOT.war -rf'
ssh 10.15.12.92 'source /etc/profile;/usr/local/yz/tomcat-bsso/bin/startup.sh'
sleep 10
cd -

硬件信息查看

硬盘: df -h
[root@5s4lbiqv6g ~]# df -hl
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G  1.3G   37G   4% /
tmpfs           7.8G   16K  7.8G   1% /dev/shm

[deploy@web ~]$df -hl
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        99G   47G   47G  50% /
tmpfs            16G   12M   16G   1% /dev/shm
/dev/vdb        493G  239G  229G  52% /bigdata
/dev/vdc1       493G   65G  403G  14% /nodedata
/dev/vdd1      1008G  518G  440G  55% /filedata
/dev/vde1       493G  201G  267G  43% /opt/hx
You have new mail in /var/spool/mail/deploy


cup个数:
[root@5s4lbiqv6g ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
1

[deploy@web ~]$cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
1

查看cup核数:
[root@5s4lbiqv6g ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores       : 2

[deploy@web ~]$cat /proc/cpuinfo | grep "cpu cores" | uniq
cpu cores       : 4

查看cup型号
[root@5s4lbiqv6g ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
4  Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz

[deploy@web ~]$cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
4  Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz

内存大小:cat /proc/meminfo |grep MemTotal 
[root@5s4lbiqv6g ~]#  cat /proc/meminfo |grep MemTotal 
MemTotal:       16467084 kB        16G

[deploy@web ~]$ cat /proc/meminfo |grep MemTotal 
MemTotal:       32880928 kB        32G

linux查看硬件信息

一、查看cpu  lscpu

二、查看内存情况 free -m

查看内存详细使用 cat /proc/meminfo

三、查看内存硬件信息  yum -y install dmidecode  命令:dmidecode -t memory

四、查看硬盘和分区分布 lsblk

五、查要看硬盘和分区的详细信息 df -h(fdisk -l)

六、查看网卡硬件信息 lspci | grep -i 'eth'

七、查看系统的所有网络接口 ifconfig -a

八、查看pci信息,即主板所有硬件槽信息 Lspci

九、查看bios信息 dmidecode -t bios

十、如果要查看所有有用信息 dmidecode –q

Linux统计日志traceId次数:

指定时间:sed -n '/2022-09-14 10:00/,/2022-09-14 10:30/p' catalina-2022-09-14-2.log > 0914.out

统计次数:cat 0914.out |awk '{print $3}' |sort |uniq -c |sort -n -r | head

日志格式:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值