查看主机名: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
日志格式: