这里罗列一些平常会用到的一些linux命令,备查
补充
极力推荐
程序开发工作中用得到的材料和工具的集合,面向系统和网络管理员、DevOps、渗透测试人员和安全研究人员
https://github.com/trimstray/the-book-of-secret-knowledge
快捷键
CTRL + C -中止进程
CTRL + Z -把正在运行的进程送到后台
CTRL + D -退出当前终端
CTRL + L -清屏
CTRL + A -移动光标到行首
CTRL + E -移动光标到行末
CTRL + U -剪切光标前的内容
CTRL + K -剪切光标至行末的内容
CTRL + W -剪切一个单词
CTRL + Y -粘贴UKW剪切的内容
CTRL + P -查看上一个命令
CTRL + N -查看下一个命令
CTRL + R -搜索历史命令
ALT + F -跳向下一个空格
ALT + B -跳回上一个空格
ALT + Backspace -删除前一个单词
CTRL + W -剪切光标后一个单词
Shift + Insert -向终端内粘贴文本
文件图形化查看 ranger
ranger 基于python
find 查找某个时间段内修改过的文件
1 2 3 4 5 6 7 |
# 查找在2019-08-28 00:00:00至2019-09-03 12:00:00内修过过的文件 find . -type f -newermt '2019-08-28 00:00:00' ! -newermt '2019-09-03 12:00:00' # 查找到这些文件并删除 find . -type f -newermt '2019-08-28 00:00:00' ! -newermt '2019-09-03 12:00:00' -delete find . -type f -newermt '2019-08-28 00:00:00' ! -newermt '2019-09-03 12:00:00' -exec rm -f {} \; # 查找某段时间的文件并通过scp复制目标主机 find . -type f -newermt '2019-08-28 00:00:00' ! -newermt '2019-09-03 12:00:00' -exec scp -P 22 {} 172.16.1.10:/opt/data/ \; |
说明:
若days为-1,代表24小时内修改过;
若days为 1,代表24~48小时范围内修改过;
若days为+1,代表48小时之外修改过;
特别需要注意的是,这是以当前时间为起点开始计算,24小时为跨度的
find {path} -newerXY {variable}
其中X可为a,c,m,t,即atime 访问时间,ctime 改变时间,mtime 修改时间,
其中t 代表绝对时间,格式为:yyyy-MM-dd hh:mm:ss
# 查找今天修改的文件
find {path} -newermt
date +%F
-type f# 反选
find {path} ! -newermt
date +%F
-type f批量替换某目录下所有文件中的字符串
1 2 3 4 5 6 7 8 |
# 方法一 sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录` ## 其中: -i 直接修改文件 -r 搜索子目录 -l 输出匹配的文件名 # 方法二 find -name '要查找的文件名' | xargs perl -pi -e 's|原字符串|新字符串|g' |
示例:
sed -i "s/10.10.0.100:/192.168.0.10:/g"
grep "10.10.0.100:" -rl ./*.conf
创建指定uid gid的用户
groupadd -g 500 www
# 创建uid为500且用户组为www的用户wwwuser
useradd -u 500 -g www wwwuser
磁盘挂载 xfs格式
mkfs -t xfs /dev/vdb
# blkid
echo "/dev/vdb /data xfs defaults 0 0">>/etc/fstab
mount -a
两个git命令
git remote -v
# 添加-v 可显示完整的远端地址
git remote show origin
# 显示更详细的信息
rysnc 文件同步
rsync -avz --bwlimit=4096 -e 'ssh -p 22022' --exclude=jail 10.10.1.10:/data/ /data/
# --bwlimit=4096 限制速度为 4MB/s
# -e 使用额外的ssh参数
示例:
有一组服务器,服务器一一对应,需要将对应服务器上的文件使用rsync同步,配合polysh,可使用如下脚本
同步远端/data目录下文件到本地/data目录 排除远端/data/logs目录 并限制传输速度
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
## rsync.sh #!/bin/sh # 定义关系映射 第一列为本机IP 第二列为远端IP host=`cat << EOF 192.168.1.100 10.10.1.100 192.168.1.200 10.10.1.200 192.168.1.300 10.10.1.300 192.168.1.400 10.10.1.400 EOF ` # 本机IP地址 IP=`ip a|grep inet|grep -v 127.0.0.1|cut -c 10-|cut -f 1 -d /|grep -v :|head -n 1` # 远端IP地址 SERVER=`echo "$host" | grep ${IP} |awk '{print $2}'` # 执行文件同步操作 echo $IP "-->" $SERVER rsync -avz --bwlimit=4096 -e 'ssh -p 22022' --exclude=logs ${SERVER}:/data/ /data/ ## 同步远端/data目录下文件到本地/data目录 排除远端/data/logs目录 并限制传输速度 echo "同步完成" |
执行:nohup >> rsync.log bash /root/rsync.sh &
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 |
cat > /root/rsync.sh << XXDD #!/bin/sh # 定义关系映射 第一列为本机IP 第二列为远端IP host=`cat << EOF 192.168.1.100 10.10.1.100 192.168.1.200 10.10.1.200 192.168.1.300 10.10.1.300 192.168.1.400 10.10.1.400 EOF ` # 本机IP地址 IP=`ip a|grep inet|grep -v 127.0.0.1|cut -c 10-|cut -f 1 -d /|grep -v :|head -n 1` # 远端IP地址 SERVER=`echo "\$host" | grep \${IP} |awk '{print \$2}'` ## 注意 $host 变量必须加是双引号 不加双引号会忽略换行符 # 执行文件同步操作 echo \$IP "-->" \$SERVER rsync -avz --bwlimit=4096 -e 'ssh -p 22022' --exclude=logs \${SERVER}:/data/ /data/ ## 同步远端/data目录下文件到本地/data目录 排除远端/data/logs目录 并限制传输速度 echo "同步完成" XXDD nohup >> rsync.log bash /root/rsync.sh & |
注意,shell脚本中将输出内容赋值给一个变量时,双引号会保留换行,如 "$a" ;若不使用双引号,则换行会被忽略,所有内容输出到一行,如 $a
单引号会保留原样,$会原样输出
timeout
# 到达指定时间后,中止命令 时间单位:s m h d 默认为s秒
timeout 5 ping www.baidu.com
timeout 5m ping www.baidu.com
# 发送指定的信号 默认发送SIGTERM信号
timeout -s SIGKILL 5s ping www.baidu.com
timeout -s 9 5s ping www.baidu.com
# 在前台运行
timeout --foreground 5s ./script.sh
转载请注明:轻风博客 » 会用到的一些shell命令