[日志清理]
1
| find /path/to/logs -type f -name "*.log" -mtime +30 -exec rm -f {} \;
|
/path/to/logs:日志文件所在目录。
-type f:只匹配文件。
-name "*.log":匹配日志文件,扩展名可以根据实际需求调整。
-mtime +30:匹配修改时间超过 30 天的文件,可以根据需求修改天数。
-exec rm -f {}:删除符合条件的文件,{} 代表找到的文件名。
1
| ls /path/to/logs/*.log | xargs -I {} rm -f {}
|
/path/to/logs/*.log:匹配指定目录下的日志文件(不包括子目录)。
xargs -I {}:将匹配到的文件逐个传递给 rm -f 命令。
1
| find /path/to/logs -type f -name "*.log" | xargs rm -f
|
[查看使用磁盘空间大的目录]
1
| du -h --max-depth=1 |sort
|
[xargs使用-杀进程]
1
| ps aux |grep -v grep |grep vsftpd|awk -F" " '{print $2}'|head -1|xargs kill -9
|
[exec使用-拷贝某个目录]
1 2
| find ./ -maxdepth 3 -type d -name 2018 -exec rsync -Rav {} /data/FTP/ \; find ./ -maxdepth 3 -type d -name 2018 -exec rsync -av {} /data/FTP/ \;
|
[ntpdate常用地址]
1
| ntpdate -d cn.pool.ntp.org
|
[压缩解压]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| tar: 压缩 tar -zcf ttt.tar.gz ttt/ 解压 tar -zxf ttt.tar.gz tar -zxf ttt.tar.gz -C /usr/loca/src/
tar -zcf www.sb.com.tar.gz $(ls | grep -v www)
zip: 压缩 zip -r filename.zip filename/ 向压缩包添加文件 zip -m myfile.zip /usr/local/src/addfilename.txt 解压 unzip filename.zip unzip filename.zip -d /usr/local/src/
|
[JAVA变量设置]
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
| mkdir -pv /usr/java/jdk1.8
tar -zxf jdk-8u351-linux-x64.tar.gz -C /usr/java/jdk1.8/
cat > /etc/profile.d/java.sh << 'EOF'
JAVA_HOME=/usr/java/jdk1.8/jdk1.8.0_351 JRE_HOME=/usr/java/jdk1.8/jdk1.8.0_351/jre CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH export JAVA_HOME JRE_HOME CLASSPATH PATH EOF chmod 777 /etc/profile.d/java.sh source /etc/profile
cat >> /home/username/.bash_profile << 'EOF'
JAVA_HOME=/usr/java/jdk1.8/jdk1.8.0_351 JRE_HOME=/usr/java/jdk1.8/jdk1.8.0_351/jre CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH export JAVA_HOME JRE_HOME CLASSPATH PATH EOF source /home/username/.bash_profile
|
[strace命令]
1 2 3 4 5
| top strace -p PID ll /proc/PID/fd
|
[linux更改时区]
1 2 3 4 5
| ll /etc/localtime mv /etc/localtime /etc/localtime.bak ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime date ntpdate 202.120.2.101
|
[更新同步]
1 2 3 4 5 6
| rsync -av /r2/wangs/update_6/version_619/homed s1:/usr/local/ rsync -av /var/www/html/webFront/webFront /var/www/html/application/
rsync -av test1/* test2/
rsync -av /tmp/test /usr/local/
|
[SED常用语法]
1 2 3 4 5
| sed -ri 's/.*swap.*/#&/' /etc/fstab
sed -ri 's/^#(.*swap.*)/\1/' /etc/fstab
|
[AWK常用语法]
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 31 32
| $NF: 指定列 $NR: 指定行 NF: 列号 NR: 行号
cat /etc/passwd|awk -F':' '{print $5}'
cat /etc/passwd|awk -F':' '{print $NF}'
cat /etc/passwd|awk -F':' '{print NF,$NF}'
cat /etc/passwd|awk -F':' '{print $(NF-1)}'
cat /etc/passwd|awk -F':' 'NR>=1 {print $1}'
cat /etc/passwd|awk -F':' 'NR>=1 {print NF,$1}'
java -version 2>&1 |awk 'NR==1{gsub(/"/,"");print $NF}'
awk -F ":" '{print $7}' /etc/passwd|sort|uniq -c|sort -nr
awk '{print $0}' 1.txt 2.txt |sort|uniq -u > 3.txt
|
[查找替换]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| find ./ -name "*.html" -exec sed -n "/homed.me/p" {} \; find ./ -name "*.html" -exec sed -i "s/homed.me/bfgd.com.cn/g" {} \; find ./ -name "*.js" -exec sed -i "s/homed.me/bfgd.com.cn/g" {} \;
查找3位IP段
grep -nr "[1-9][0-9][0-9]\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" * find ./ -type f -exec sed -n "/[1-9][0-9][0-9]\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/p" {} \;
find ./ -type f -exec sed -n "s/[1-9][0-9][0-9]\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/172\.18\.75\.167/p" {} \;
|
[data命令]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| [root@localhost sh]# cat date.sh
date01=`date +%Y%m%d` date02=`date '+%F %T'` lastdate01=`date +%Y%m%d --date="-1 day"` lastdate02=`date -d '-1 day' +%Y%m%d` lastdate03=`date -d last-day +%Y%m%d` echo "$date01" echo "$date02" echo "$lastdate01" echo "$lastdate02" echo "$lastdate03" [root@localhost sh]# sh date.sh 20190725 2019-07-25 10:32:28 20190724 20190724 20190724 [root@localhost sh]#
|
[修改系统最大连接数]
1 2 3 4 5 6
| vim /etc/security/limits.conf * soft noproc 65535 * hard noproc 65535 * soft nofile 65535 * hard nofile 65535 修改后必须重启
|
[脚本调试]
1 2 3 4
| Shell提供了一些用于调试脚本的选项: -n,读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。 -v,一边执行脚本,一边将执行过的脚本命令打印到标准错误输出。 -x,提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。
|
[文件挂载]
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| mount -o,loop /data/iso/CentOS-6.5-x86_64-bin-DVD1.iso /var/ftp/cdrom/
mount -t nfs -o rw 192.168.1.2:/usr/www /usr/www
mount -o loop -t iso9660 /usr/mydisk.iso /home/ping.bao/cd
mount -t ntfs /dev/sdc1 /root/usb
mount /dev/cdrom /home/ping.bao/cd
|
[分区查看]
[磁盘分区]
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| 命令参数 p:打印分区表. n:新建一个新分区. d:删除一个新分区. q:退出不保存. w:保存退出
fdisk /dev/sdc p查看分区 n 创建分区 输入主分区(p)或者扩展分区(e) 如果有主分区会提示主分区(p)或者逻辑分区(l) ps:主分区的话会输入分区号(1-4),逻辑分区的话是从5开始,一般默认从头开始就行
输入分区开始位置,按提示默认输入 输入分区结束位置,例如 +300G或者+500M
继续分区重复输入n,方法同上 最后按"p"打印分区表看一下 确认无误 w 保存退出
格式化+挂载 mkfs.ext4 /dev/sdc1
parted -l
查看现有分区
举例-创建分区:
方法1-全部为主分区: // 将磁盘设置为gpt模式 parted /dev/sdk mklabel gpt mkpart primary 0 500G mkpart primary 500G 1000G mkpart primary 1000G -1 方法2-分别设置主分区,扩展分区,逻辑分区: // 将磁盘设置为gpt模式 parted /dev/sdk mklabel gpt //设置主分区大小 mkpart primary 0 500G // 将剩余磁盘划给扩展分区 mkpart entended 500G 100% // 设置逻辑分区大小 mkpart logic 500G 800G mkpart logic 800G 100% 方法3-只设置一个分区: mkpart primary 2048s -1 将磁盘设置为一个分区
举例-删除分区
print //打印分区表 rm 分区编号 //删除分区 quit
举例-格式化
mkfs.ext4 /dev/sdk1 mkfs.ext4 -T largefile /dev/sdk1 格式化时候带标签 mkfs.ext4 -T largefile -L /data8 /dev/sdk1 mkfs.ext4 -T largefile4 -L /data8 /dev/sdk1 // largefile和largefile4对应的【多大磁盘空间分配一个inode】其实是在 /etc/mke2fs.conf 定义的。 // largefile 类型就是 1M 一个 inode // largefile4 类型就是 4M 一个 inode mkfs.ext4 -i 131072 -L /data3 /dev/sdd1 //-i参数,可以指定多大磁盘空间分配一个inode 举例- Centos7 格式化+挂载
mkfs.xfs /dev/sdb1 vim /etc/fstab 加入 UUID=a35b2078-271e-439d-a1c4-ce4416aecf75 /data xfs defaults 0 0 // UUID可以通过blkid /dev/sdb1获得 mount -a
|
[用户组]
1
| usermod -G new test test加入new组
|
[随即生成16位密码]
1
| cat /dev/urandom | tr -dc a-zA-Z0-9#@^_ | head -c 16;echo
|
[系统层面问题排查相关命令]
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| 1. 日志message查询 内存:page allocation failure 磁盘:dev sd 2. 硬盘资源 iostat -d -x -k 1 10 3. bond绑定查看网卡 cat /proc/net/bonding/bond1 4. 查看网速 iftop 5. 排查网络连通性 iperf3 目标服务器启动(172.18.0.101): iperf3 -s -D -4 6. 测试服务器测试命令(172.18.0.102): iperf3 -c 172.18.0.101 -4 -i 1 -t10 -b 2g -w 256k ;写数据服务器测收带宽;正向带宽 iperf3 -c 172.18.0.101 -4 -i 1 -t10 -b 2g -w 256k -R ;写数据服务器测发带宽;反向带宽 7. strace命令 top //找出CPU使用率高的进程PID strace -p PID //跟踪进程 ll /proc/PID/fd //查看该进程在处理哪些文件 将有可疑的PHP代码修改之,如:file_get_contents没有设置超时时间。 8. lsof命令 // 文件相关 lsof /filepath/file // 进程相关 lsof -c mysql //用户相关 lsof -u www lsof -u mysql -c mysql // 网络连接相关 lsof -i tcp lsof -i:3306 lsof -i tcp:3306 9. sar命令 //查看硬盘使用情况 sar -d 实时 sar -d 1 //查看网卡流量 全天 sar -n DEV 实时 sar -n DEV 1 同理: //查看cpu sar -u //查看内存 sar -r 10. ss命令 //统计所有TCP连接 ss -s //查看当前TCP连接状态 ss -atp 常用参数 -a, --all display all sockets -l, --listening display listening socket -t, --tcp display only TCP sockets -u, --udp display only UDP sockets -p, --processes show process using socket -s, --summary show socket usage summary -n, --numeric don't resolve service names -r, --resolve resolve host names
|
[硬件信息查看]
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 63 model name : Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz stepping : 2 microcode : 0x37 cpu MHz : 2600.000 cache size : 35840 KB physical id : 0 siblings : 14 core id : 0 cpu cores : 14 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 15 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid bogomips : 5187.48 clflush size : 64 cache_alignment : 64 address sizes : 46 bits physical, 48 bits virtual power management: 详解: vendor_id :CPU制造商 cpu family :CPU产品系列代号 model :CPU属于其系列中的哪一代的代号 model name:CPU属于的名字及其编号、标称主频 stepping :CPU属于制作更新版本 cpu MHz :CPU的实际使用主频 cache size :CPU二级缓存大小 physical id :单个CPU的标号 siblings :单个CPU逻辑物理核数 core id :当前物理核在其所处CPU中的编号,这个编号不一定连续 cpu cores :该逻辑核所处CPU的物理核数 apicid :用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续 fpu :是否具有浮点运算单元(Floating Point Unit) fpu_exception :是否支持浮点计算异常 cpuid level :执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容 wp :表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection) flags :当前CPU支持的功能 bogomips :在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second) clflush size :每次刷新缓存的大小单位 cache_alignment :缓存地址对齐单位 address sizes :可访问地址空间位数
dmidecode |grep -A16 "Memory Device$"
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
cat /proc/cpuinfo| grep "cpu cores"| uniq
cat /proc/cpuinfo| grep "processor"| wc -l PS:
ethtool -g eth0
ethtool -G eth0 rx 2048 ethtool -G eth0 tx 2048
|
[历史命令显示时间]
1 2 3 4 5
| vim /etc/profile // 如下位置加入HISTTIMEFORMAT="%F %T " HOSTNAME=`/usr/bin/hostname 2>/dev/null` HISTTIMEFORMAT="%F %T " HISTSIZE=1000
|