Login light

文件 数据

批量修改权限,handsome每次的主题默认权限都是750,文件没法访问,需要改成755
chmod 755 -Rfv ./handsome/*

批量改文件名

ls | awk -F'_' 'BEGIN{i=0}{i+=1;print "mv \""$0"\" "i".jpg"}'|bash

检索文件内容

find -type f -name '*.php'|xargs grep 'test'
find . -type f|xargs grep -Eo "Pay_Def_ErrorCode::[a-zA-Z0-9_-]+" > output1
ls|xargs grep 'foreach'
ls|grep php|xargs grep 'foreach'

检索存在内容的条数

ls|grep paystat.log.201905|xargs grep 'suffix'|wc -l

展示最后几行

ls|grep paystat.log.201905|xargs grep 'suffix'|tail -n 10

展示开始几行

ls|grep paystat.log|xargs grep 'pay_type: 1'|head

展示指定一行
sed -n 1191946p t_create_20200221.20200221

删除指定行
sed -i '1191946d' t_create_20200221.20200221

磁盘大小

df -hl

tar
tar -zxvf log.tar.gz解压
tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 压缩
tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 压缩

diff两个文件

diff -urNa dir1 dir2

修改所属人
chown pay filename
chown pay dirname -R

创建一个软链接
ln –s /var/www/test /var/test

修改指向的新路径
ln –snf /var/www/test1 /var/test

合并文件,去重文件
cat file1 file2 > file3
sort file3|uniq > sortfile.log

0 1 2

  • 0 标准输入
  • 1 标准输出
  • 2 错误输出
  • &>/dev/null 等价于 >/dev/null 2>&1

awk

#数据项去重
awk -F "," '{ss1[$1]=$0}END{for(i in ss1){print ss1[i];}}' gp_cardno_dump.php_200909113527.log

#数据项求总数
awk -F " " 'BEGIN{yes=0;no=0} {if($2==1){yes++;}else{no++}}
END{print "yes",yes;print "no",no;}' signcenter_output.log

#二维数组 合计
awk -F ',' 'BEGIN{ss1[$1,$2]=0;ss2[$1,$2]=0;}{ss1[$1,$2]+=$3;ss2[$1,$2]+=$4;}END{for(i in ss1){print i,ss1[i];}for(i in ss2)
{print i,ss2[i];}}' loudou_zidong_count.php_20190823151706.log


#按行统计数量
awk '{ss[$0]+=1;}END{for(i in ss){print i,ss[i];}}' /tmp/1002.log.2

#截取字符串统计数量
awk '{ss[substr($0,9,10)]+=1;}END{for(i in ss){print i,ss[i];}}' ans_bfb_transid_state1.data

#分组求和
awk -F ',' 'BEGIN{}{ss[$1]+=$2;}END{for(i in ss){print i,ss[i];}}' bfb_db_agreement_t_sp_easypay_contract.php_03162015.log

find组合命令

#清除一天前文件夹
find /home/data_log/* -type d -mtime +1 -exec rm -rf {} \;
#清除七天前数据
find /home/work/odp/log/paystat/* -mtime +7 -name "paystat.log*" -exec rm -rf {} \;
#清除所有new log
find /home/work/odp/log/paystat/* -name "*new*" -exec rm {} \;
#清除ral log
find /home/work/odp/log/ral/* -name "ral*" -exec rm {} \;

组合命令

#批量域名转ip
get_instance_by_cloudapp smart.group.pay-nginx-access.pay|awk '{print "ping -c 1 "$0;}'|sh|grep PING

网络

开放端口
netstat -nap|grep 8443 端口对应进程
netstat -nupl (UDP类型的端口)
netstat -ntpl (TCP类型的端口)

a 表示所有

n表示不查询dns

t表示tcp协议

u表示udp协议

p表示查询占用的程序

l表示查询正在监听的程序

ftp
wget -nH -m --ftp-user=ftpuser --ftp-password=ftppass ftp://ip/7_other.tar.gz

scp推送
scp redis-5.0.5.tar.gz work@10.157.18.216:/home/work

传大文件
rz -be

nc传文件
发送端:
cat test.txt | nc -l -p 6666
或者nc -l -p 6666 < test.txt有些版本不要在 -p
【监听6666端口,等待连接】(设发送端IP为10.20.133.152)
接收端:
nc 10.20.133.152 6666 > test1.txt
如上面的操作,即可将文件test.txt从发送端传送到接收端,保存为test1.txt

系统管理

指定进程cpu 内存状态
top -p222

批量结束进程
awk -F ' ' '{system("kill "$2)}' pplist

alias
vim ~/.bashrc
source ~/.bashrc

时间

echo `date +%Y-%m-%d,%H:%M:%S`

#指定时间
#date -d 20200830 -u '+%Y-%m-%d %H:%M:%S'
2020-08-30 00:00:00

#当前时间
#date -u '+%Y-%m-%d %H:%M:%S'
2020-08-31 00:00:00

[work@pay-y32-6 ~]$  date -d "2020-02-01 00:00:00" +%s    
1580486400
[work@pay-y32-6 ~]$  date -d 20200201 +%s             
1580486400

时间区间模板

#第一种
dateStart=$1
dateEnd=$2

timestamp=`date -d $dateStart +%s`
timestamp=`expr $timestamp - 86400`

for i in {1..1000}
do
    timestamp=`expr $timestamp + 86400`
    dateNow=`date -d @${timestamp} '+%Y%m%d'`
    #开始时间
    if [ $dateNow -lt $dateStart ]
    then
        continue
    fi
    #结束时间
    if [ $dateNow -gt $dateEnd ]
    then
        break
    fi

    #业务操作
    echo $dateNow
done

#第二种
dateStart=$1
dateEnd=$2

dateStart=`date -d "${dateStart} -1 day" '+%Y%m%d'`
#while test "1" = "1" 
for i in {1..1000}
do
    dateNow=`date -d "${dateStart} +$i day" '+%Y%m%d'`
    #结束时间
    if [ $dateNow -gt $dateEnd ]
    then
        break
    fi
    #业务操作
    echo $dateNow
done

UEFI启动项管理
https://blog.csdn.net/wolaiyeptx/article/details/103447855
1.添加一个引导项
efibootmgr -c -w -L “BootOptionName” -d /dev/sda -p 1 -l \\EFI\\refind\\refind_x64.efi
-L参数 中BootOptionName 为 自定义启动项名称
-d 参数后面是系统所在的硬盘设备名称,例如/dev/hda、/dev/hdb
-p 参数是vfat 分区的分区编号/dev/hda1 用-p 1
-l 参数后面是该引导项指向的efi 启动文件在该分区上的位置。请注意使用“”来表示目录的分级。

2.删除一个引导项
efibootmgr -b UEFIno -B 其中UEFIno为删除引导项对应标号,可以通过直接使用efibootmgr指令可以查看当前EFI启动顺序及标号。

3.调整引导项顺序
efibootmgr -o [order1], [order2], [order3] 其中order1、order2、order3为调整引导项对应标号,可以通过直接使用efibootmgr指令可以查看当前EFI启动顺序及标号。