Linux shell 技巧

强大工具:
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值