1、date 查看修改系统时间和日期
date:
-d
显示字符串描述的时间
-f
显示DATEFILE文件中的每行时间
-r
显示文件的最后修改时间
-R
以RFC-2822兼容日期格式显示时间
-rfc-2822
以RFC-2822兼容日期格式显示时间
-s
设置时间为string
-u
显示或设定为Coordinated Universal Time时间格式
运用-d参数
当前时间
# date -d now
Thu Nov 14 22:52:45 PST 2013
下个月的时间
# date -d 'next monday'
Mon Nov 18 00:00:00 PST 2013
昨天的时间并格式化显示
# date -d yesterday +%Y%m%d
20131113
显示文件最后修改的时间
# date -r install.log
Fri Sep 6 11:31:15 PDT 2013
显示当前时间并格式化为 年-月-日 时:分:秒
date "+%Y-%m-%d %H:%M:%S"
2、grep
过滤空行和注释行
grep -v # /etc/swift/object-server.conf |grep -v "^$"
egrep -v "#|^$" filename
不同的行:
grep -v -wvf file file2
相同的行:
grep -wf file file2
grep -i 不区分大小写
网站PV统计
网站PV,即Page view,网站页面点击量
统计当天/home/index页面点击量
grep `date +%d/%b/%Y` access.log | grep "/home/index.html" -c
3、vi
vi下把文件内容追加到其他文件
:1,129 w! >>nginx.conf.bak
4、ps
内存占用过高的进程排查
ps aux | head -1;ps aux|grep -v PID|sort -rn -k +4|head
5、find
按目录深度查找文件
find . -name "*.log*" -maxdepth 2 -mtime +15 -exec ls -l {} \;
declare:
-maxdepth 目录深度
-atime -n[+n]: 找出文件访问时间在n日之内[之外]的文件。
-ctime -n[+n]: 找出文件更改时间在n日之内[之外]的文件。
-mtime -n[+n]: 找出修改数据时间在n日之内[之外]的文件。
-amin -n[+n]: 找出文件访问时间在n分钟之内[之外]的文件。
-cmin -n[+n]: 找出文件更改时间在n分钟之内[之外]的文件。
-mmin -n[+n]: 找出修改数据时间在n分钟之内[之外]的文件。
排除目录查找文件
find . -path "./20161218" -prune -o -name "*.log*" -print
declare:
-path pathname -prune: 避开指定子目录pathname查找
-o 或
-a 且
-not 相反
6、进程
让进程转入后台:
Ctrl + z
将进程转到前台:
fg
查看进程占用CPU和内存
ps aux --sort=-pcpu | head -10
ps aux --sort -rss | head -10
7、产生随机的十六进制数,其中n是字符数:
openssl rand -hex n
8、获取文本的md5 hash:
echo -n "text" | md5sum
9、压缩与解压缩
zip:
压缩当前目录下的内容为xxx.zip
zip -r xxx.zip ./*
删除压缩文件中的xxx.txt文件
zip -d xxx.zip xxx.txt
向压缩文件中添加xxx.txt文件
zip -m xxx.zip ./xxx.txt
同时压缩多个文件以及目录
zip -r xxx.zip file1 file2 file3 /home/xxx/xxxx
unzip:
解压缩到指定目录
unzip -d /home/xxxx xxx.zip
解压缩所有的txt文件到指定目录
unzip xxx.zip *.txt -d /home/xxxx
找出文件压缩后删除源文件
find -mtime +3 -name "file*"| xargs zip -rm log.zip
查看压缩包内的文件
unzip -v
10、sed
sed -s 's/^M//g' file 删除文件中windows格式下的空格
sed '2,5d' file 显示文件file,除去2-5行
sed '/10[1-4]/d' file 显示除去包含101-104的行
sed '/^ *$/d file 删除文件中的空行
sed -n '/10[1-4]/p' file 只显示文件file中包含101-104的行
sed 's/moding/moden/g' file 将moding替换为moden
sed -n 's/^west/north/p' file 将west开头的行替换为north并显示出来
sed 's/...$//' file 删除每一行的最后三个字符
sed 's/^...//' file 删除每一行的头三个字符
sed 's#moding#moden#g' file将moding替换为moden,s后面的#代表搜索串和替换串之间的分界符
sed'/101/,/105/s/$/ 20050119/' file将从101的匹配行到105的匹配行的行末增加"20050119"内容
sed -e '/^#/!d' file 显示文件以#开头的行
sed -e 's/:/ /g' passwd 替换文件所有冒号为空格
-e不改变源文件,输出到标准输出
-i改变源文件
把一定时间段内的文件内容导入到另一个文件
sed -n '/2020-02-28 12:00:00/,/2020-02-28 12:10:00/'p hbaseserv.log >> /home/hduser/hbaseserve_12_10.log
删除日志文件的前10000000行
sed -i '1,1000000d' nohup.out
linux下删除windows文件的字符^M(ctrl-v)
:%s/^M$//g # 去掉行尾的^M
:%s/^M//g # 去掉所有的^M
:%s/^M/\r/g # 将^M替换成回车
# sed -e ‘s/^M/\n/g’filename
vi下去掉冒号
sed 's/://'g`
把文件中enabled的参数由1改为0
# sed -i '/enabled/s/1/0/' Iso.repo
11、删除带有.log后缀的文件
for i in `find -type d | grep ./`;do rm $i/*.log;done
12、批量修改文件后缀
rename .tar.gz zip *.tar.gz
13、split 分割合并文件
按行数分割
split -l 500 file.txt new_file
会分割为new_filea、new_fileb、new_filec ......
加上-d,使用数字后缀;加上--verbose,显示分割进度
按字节大小分割
split -b 50m file.txt new_file
合并
cat new_file* > file.txt
14、账户
普通账户使用crontab
crontab -e -u username
给账户加sudo权限
usermod -a -G sudo username
把用户加入组而不影响该用户添加的其他组
usermod -a -G docker username
15、awk
计算和
awk '{sum+=$1}END{print sum}'
16、swift日常命令
/etc/swift> sudo swift-ring-builder account.builder create 18 3 1
/etc/swift> sudo swift-ring-builder container.builder create 18 3 1
/etc/swift> sudo swift-ring-builder object.builder create 18 3 1
/etc/swift> export ZONE=1
/etc/swift> export STORAGE_LOCAL_NET_IP=192.168.1.101
/etc/swift> export WEIGHT=100
/etc/swift> export DEVICE=sdb1
添加
/etc/swift> sudo swift-ring-builder account.builder add z$ZONE-$STORAGE_LOCAL_NET_IP:6002/$DEVICE $WEIGHT
/etc/swift> sudo swift-ring-builder container.builder add z$ZONE-$STORAGE_LOCAL_NET_IP:6001/$DEVICE $WEIGHT
/etc/swift> sudo swift-ring-builder object.builder add z$ZONE-$STORAGE_LOCAL_NET_IP:6000/$DEVICE $WEIGHT
删除
/etc/swift> sudo swift-ring-builder account.builder remove z$ZONE-$STORAGE_LOCAL_NET_IP:6002/$DEVICE $WEIGHT
/etc/swift> sudo swift-ring-builder account.builder remove z1-192.168.1.101:6020
/etc/swift> sudo swift-ring-builder account.builder rebalance
/etc/swift> sudo swift-init proxy start
# vgdisplay
# lvcreate -n swiftlv -L 10G vg0
# mkfs.xfs /dev/mapper/vg0-swiftlv
# vi /etc/fstab
/dev/mapper/vg0-swiftlv /srv/node/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0
# service rsyncd start
rsync rsync://pub@192.168.1.101
/etc/swift> sudo swift-init all start
curl -k -v -H'X-Storage-User: system:root' -H 'X-Storage-Pass: testpass' https://192.168.1.100:8080/auth/v1.0
swift -Ahttp://192.168.1.100:8090/auth/v1.0 -U system:root -K testpass stat
swift -Ahttp://192.168.1.100:8090/auth/v1.0 -U system:root -K testpass post container1
swift -Ahttp://192.168.1.100:8090/auth/v1.0 -U system:root -K testpass upload container1 /etc/swift/*.ring.gz
swift -Ahttp://192.168.1.100:8090/auth/v1.0 -U system:root -K testpass list
同步所有的结点之后, 确保管理员( admin)可以访问 /etc/swift 目录,并且确保所有ring的.gz文件所有者都是正确的。