强大工具:
awk: https://dablelv.blog.csdn.net/article/details/50290753
sed: https://dablelv.blog.csdn.net/article/details/53197905
lsof 神器: https://linux.cn/article-4099-1.html ( 如: lsof -i -Pn)
1. 软件
cat >> test.txt << EOF
多行文本
多行文本
多行文本
多行文本
多行文本
多行文本
EOF
1.1 shell命令技巧
#上传下载小工具
yum -y install lrzsz
#输入rz,会弹出对话框来选择上传文件,点确定即可上传
# 快速检索histor:
# Ctrl+R,输入指令前缀既可,翻页看下一条,再按一次Ctrl+R
#后台拷贝:
scp -2 -P$port xxfilexx $user@$ip:/var/files
#参考:https://blog.csdn.net/sraing/article/details/85121543
!$ :上一条命令的最后一个参数
!! :执行上一条命令
!wget :执行最近的以wget开头的命令
!wget:p :仅打印最近的以wget开头的命令,不执行。
Ctrl + a :移动光标到命令行头
Ctrl + e :移动光标到命令行尾
Esc + F :向前移动一个单词 forward
Esc + B :向后移动一个单词 backward
Esc + T :交换光标位置前的两个单词 transport
Ctrl + T :交换光标处和之前两个字符的位置 transport
Ctrl + k :删除 由光标所在位置至该行结束。
Ctrl + u :删除 由光标所在位置至该行开始。
删除整行: Ctrl + k + u 或 Ctrl + e + u 或者 Ctrl + A + K
Esc + D :删除光标后的单词
Ctrl + W:删除光标前的单词
mkdir xxx && cd $_ #新建文件夹并进入之
#杀死僵尸进程(需杀死其父进程)
ps -ef | grep defunct | more
kill -9 10567 #第二列是父进程id
kill -9 26526
root 10568 10567 0 Sep24 ? 00:00:00 [auto_dump_start] <defunct>
root 10575 10567 0 Sep24 ? 00:00:00 [sendmail] <defunct>
root 26534 26526 0 14:18 ? 00:00:00 [sendmail] <defunct>
root 26462 24262 0 14:17 pts/0 00:00:00 grep --color=auto defunct
1.2 vim 技巧: 见 VIM 技巧
1.3 内核
rpm -q centos-release #查看版本(centos)
uname -a #查看版本当前操作系统内核信息
cat /proc/version #查看当前操作系统版本信息
lsmod #列出加载的内核模块
1.4 网络
route -n #查看路由表
netstat -tunlp #查看所有tcp/udp监听端口
netstat -s #查看网络统计信息进程
scp local_file remote_username@remote_ip:remote_dir #拷贝本地文件到远程机器上
scp -r local_dir remote_username@remote_ip:remote_dir #拷贝本地目录到远程机器上
1.5 基础
ps -ef #查看所有进程
nohup ./xxx.sh & #后台运行进程
ln -s <真实路径/文件> <创建的连接> #建立软连接
1.6 压缩 解压
#Tar选项:
# c – 创建压缩文件
# x – 解压文件
# v – 显示进度.
# f – 文件名.
# t – 查看压缩文件内容
# J - 通过 xz 归档
# j – 通过bzip2归档
# z –通过gzip归档
# r – 在压缩文件中追加文件或目录
# W – 验证压缩文件
tar zcf xxx.tar.gz <文件/目录> #创建 tar.gz
tar zxf xxx.tar.gz -C /home/abc/code # -C(大写)输出到具体目录
yum install bzip2
tar jcf xxx.tar.bz2 <文件/目录> #创建
tar jxf xxx.tar.bz2 #解压
tar Jcf xxx.tar.xz <文件/目录> #创建
tar Jxf xxx.tar.xz #解压
zip -r xxx.zip <文件/目录> #创建 zip
unzip xxx.zip -d # -d 输出到具体目录
rpm -qa | grep app #查找本机是否安装了app
rpm -ivh app.rpm #安装app
yum install app #在线安装app
yum update app #更新app
rpm -e app #删除已经安装的app
yum repolist #列出可用的仓库
yum repolist all #列出所有仓库
yum list all #列出仓库中所有的软件包
yum make cache #缓存远程仓库缓存信息
2. 硬件
lscpu #查看CPU的统计信息
cat /proc/cpuinfo #查看CPU详细信息,如每个CPU的型号等
free -h #概要查看内存情况
cat /proc/meminfo #查看内存详细信息
lsblk #查看硬盘的分区分布,显示很值观
df -hT #查看系统中所有挂载磁盘的使用请况
df -lh #查看各分区的情况
du -sh #当前文件夹所占空间
cat /proc/partitions #查看硬盘和分区
mount | column -t #查看挂接的分区状态
mkdir xxxx && cd $_ #新建文件夹并进入
# $?:上一次命令的执行状态结果 $0脚本名称 $1..$9位置参数 $$:脚本的进程ID $RANDOM 随机数
du -ma /opt/* | sort -rn | head -n 10 #统计当前目录下前10大的文件和目录
sort -t : -k 2nr -k 3n xx.txt # -n按数字大小排序;-k 指定哪一列排序; -t 指定分隔符;
# -f忽略大小写; -i忽略不可打印字符如换行;-b忽略前面空白符
#找出IO高的进程
yum install sysstat #查看磁盘io 是否读写负载很高
iostat -x 1 10
yum install iotop -y #找出使用io高的进程的工具 iotop
iotop #直接执行
ip addr #查看 ip
lspci | grep -i 'eth' #查看网卡硬件信息
ifconfig -a #查看系统的所有网络接口
ethtool eth0 #如果要查看某个网络接口的详细信息,例如eth0
[安全]
#登录失败N次后锁定账号M分钟
vi /etc/pam.d/system-auth
auth required pam_tally2.so deny=3 unlock_time=120 even_deny_root root_unlock_time=1800
#查看用户登录失败次数
faillog -a
#用户因多次登录失败而被锁的情况下,可用 faillog命令来解锁(即清空失败次数)
faillog -u 用户名 -r
#清空所有用户失败次数
faillog -r
#手动锁定用户禁止使用
usermod -L 用户名
#解锁命令:
usermod -U 用户名
[案例]
1. 遍历文件:
批量移动 “文件” 到 “日期文件夹” (适合处理按日期备份的文件)
for f in *.db *.txt *.tar* *.csv *.sql
do
#提取时间后,替换 .和-为空,既删除 .和-
datedir=$(stat -c %y "$f" | sed 's/ .*//;s/-//g')
[ -d "$datedir" ] || mkdir "$datedir"
mv "$f" "$datedir"
touch -r $f . #修改文件夹日期属性为当前文件的日期
done
2. 修改文件时间
-rw-r--r-- 1 root root 4.2K Nov 7 11:39 xxxxxx.csv
touch -t 202011021032.09 xxxxxx.csv
-rw-r--r-- 1 root root 4.2K Nov 2 10:32 xxxxxx.csv
3. 遍历文件夹
dir=$(pwd)
filelist=`ls $dir`
for file in $filelist:
do
[ -d $file ] && echo $file " 是文件夹"
[ -f $file ] && echo $file " 是文件"
done
4. kill 进程,
如: ./killapp httpAPI
#!/bin/sh
if [ $# -lt 1 ]
then
echo "缺少参数"
exit 1
fi
PROCESS=`ps -ef|grep $1|grep -v grep|grep -v PPID|awk '{print $1}'`
for i in $PROCESS
do
echo "Kill the $1 process [ $i ]"
kill -9 $i
done
htop
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
yum install htop -y
htop
[病毒篇]
【案例1】 遭到自动生成进程的木马,需要 kill 掉某个用户的所有进程
# 先删除 username 账号
userdel username
#1
pkill -u username
# 2
killall -u username
# 3. ps方式 ps列出username的pid,然后依次kill掉,比较繁琐.
ps -ef | grep username | awk '{ print $2 }' | sudo xargs kill -9
# 4. pgrep方式 pgrep -u参数查出用户的所有pid,然后依次kill,比较繁琐.
pgrep -u username | xargs kill -9