Linux Shell操作笔记

Linux Shell操作笔记 持续更新

工作中对于Linux常用操作和重要操作的一些总结
使用 Ctrl+F 进行查找
Centos基于版本7.4
Ubuntu基于版本20.04
更新时间 2020/10/23
增加了一些命令,如文件查找、多线程压缩解压缩、DNS查询等

Linux 设置开机自启
### 1、写rc.local方法
chmod +x /etc/rc.d/rc.local # 给rc.local增加执行权限
chmod +x /path/to/sh.sh

### 2、chkconfig方法
chmod +x /path/to/sh.sh
mv /path/to/sh.sh /etc/rc.d/init.d/autostart.sh
chkconfig --add autostart.sh
chkconfig autostart.sh on
Linux Shell脚本设置工作目录
## 第一种方法 使用pushd与popd
pushd /path/to/dir
## 你的操作
popd
Centos7 rpm操作
## 安装软件
rpm -ivh xxx.rpm
## 卸载软件
rpm -e xxx
## 查询xxx是否被安装
rpm -qa | grep xxx 
## 查询安装包中的所有文件都被安装到哪些目录下
rpm -ql xxx.rpm
## 升级软件
rpm -Uvh xxx.rpm
Linux 设置firewalld防火墙
## 开启、关闭、重启防火墙
systemctl start firewalld
systemctl stop firewalld
systemctl restart firewalld
## 重新加载防火墙配置
firewall-cmd --reload
## 查看预定义服务列表
firewall-cmd --get-services
## 查看开放的端口
firewall-cmd --list-ports
## 列出指定区域的所有配置信息
firewall-cmd --list-all
## 设置默认zong 为 public
firewall-cmd --set-default-zone=public
## 图形工具
firewall-config
## 防火墙打开伪装
firewall-cmd --add-masquerade
## 防火墙直接规则
firewall-cmd -add-port=<port> --permanent
firewall-cmd -add-service=<servicename> --permanent
## 添加源地址流量放行
firewall-cmd -add-source=<sourceaddr/mask> --permanent
firewall-cmd -remove-source=<sourceaddr/mask> --permanent
firewall-cmd -remove-service=<servicename> --permanent
firewall-cmd -remove-port=<port> --permanent
## 端口转发
firewall-cmd --add-forward-port=<sourceport>:protocol=<tcp/udp>:toport=<toport>:toaddr=<toaddr>

## 防火墙富规则
## 端口转发
firewall-cmd --add-rich-rule='rule family=ipv4 source address=<sourceaddr/mask> forward-port port=<sourceport> protocol=<tcp/udp> to-port=<toport>'
## 端口伪装 什么是端口伪装?和端口转发有什么区别
firewall-cmd --add-rich-rule='rule family=ipv4 source address=<sourceaddr/mask> masquerade'
## 接受ssh连接 记录日志到syslog的notice级别 每分钟最多三条信息
firewall-cmd --add-rich-rule='rule service-name="ssh" log-prefix="ssh" level="notice" limit value="3/m" accept'
Dos、unix文件格式转换
## dos 转 unix
tr -d '\r' < dosfile > unixfile
sed 's/.$//' dosfile > unixfile
## unix 转 dos
sed 's/$/\r/' unixfile > dosfile
## 在原文件转换 无需输出新文件 dos2unix
sed -i 's/.$//' dosfile
Docker 批量导入镜像
## 以下内容为脚本
#============ get the file name ===========
## 设定待导入镜像的文件夹地址
DOCKER_IMAGES_DIR="/path/to/image/dir"
for image_file in ${DOCKER_IMAGES_DIR}/*; do
    image_file_names=`basename $image_file`
## 以下语句可以输出待导入的镜像名
#echo $image_file_names
docker load <${DOCKER_IMAGES_DIR}/$image_file_names
echo ok
done
echo Congratulations, images-import finished!
Docker 容器操作
## 停止所有容器
docker stop$(docker ps -aq)
## 删除所有容器
docker rm $(docker ps -aq)
## 重启所有容器
docker restart $(docker ps -aq)
## 以容器名为依据重启该容器 这是根据cut截取前15个字符 即container-id
docker restart $(docker ps|grep <name> |cut -c 1-15) 
## 以容器名为依据 查看该容器日志
docker logs $(docker ps|grep <name> |cut -c 1-15)
Linux 统计文件占用情况
## 查看单个文件夹大小
du -sh /dir
## 查看文件夹大小并排序
du -sh * |sort -n
## 查找大于100m的文件
find . -type f -size +100M
## 查看当前目录下一级子文件和子目录占用的磁盘容量
du -lh --max-depth=1
## 查看当前目录下的哪个目录文件最多
for i in /*; do echo $i ; find $i | wc -l; done
Linux 创建链接(软硬链接)
## 创建软链接
ln -s <source> <goal>
## 创建硬链接
ln <source> <goal>
## 注意软硬连接的区别
Linux 进程查看
## ps命令参数说明
-A :所有的进程均显示出来
-a :不与terminal有关的所有进程
-u :有效用户的相关进程
-x :一般与a参数一起使用,可列出较完整的信息
-l :较长,较详细地将PID的信息列出

ps aux # 查看系统所有的进程数据
ps ax # 查看不与terminal有关的所有进程
ps -lA # 查看系统所有的进程数据
ps axjf # 查看连同一部分进程树状态
Linux 命令别名
## 为命令创建别名
alias <alias>=<command -a -b>
## 为systemctl创建别名
alias sctl=systemctl
Linux 文件查找
# 从 '/' 开始进入根文件系统搜索文件和目录
find / -name file1 
# 搜索属于用户 'user1' 的文件和目录
find / -user user1 
# 搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -atime +100 
# 搜索在10天内被创建或者修改过的文件
find /usr/bin -type f -mtime -10 
# 显示一个二进制文件、源码或man的位置
whereis halt 
# 显示一个二进制文件或可执行文件的完整路径
which halt 
# 找到并删除大于50M的文件
find /var/mail/ -size +50M -exec rm {};
Linux 日志操作
## 查看内核日志 可读性模式
dmesg -T
## 查看所有日志
journalctl
## 查看本次启动的所有日志
journalctl -b
## 查看内核日志
journalctl -k
## 查看指定时间的日志
journalctl --since="2020-06-28 18:05:00"
journalctl --since="yesterday"
## 根据服务筛选
journalctl -u kubelet.service
journalctl -u kubelet
## 根据进程ID查询
journalctl _PID=1
## 按优先级查询
journalctl -p 5 -u kubelet
######
7个级别的含义分别是:
0:emerg
1:alert
2:crit
3:err
4:warning
5:notice
6:info
7:debug
########
## 以json格式输出 方便导出给其他工具查看
journalctl -o json
## 以管理员易读的json格式输出
journalctl -o json-pretty
#############
支持的格式如下:
cat:只显示信息字段本身
export:适合传输或备份的二进制格式
json:标准Json,每行一个条目
json-pretty:JSON格式,适合人类阅读习惯
short:默认syslog类输出格式
short-iso:默认格式,强调显示ISO 8601挂钟时间戳
short-monotonic:默认格式,提供普通时间戳
short-precise:默认格式,提供微秒级精度
verbose:显示该条目的全部可用journal字段,包括通常被内部隐藏的字段
Linux 网络连接查看
## netstat 参数说明
-a 显示所有状态的socket  
-n 不做名字解析,不加此参数,80端口会显示成http,127.0.0.1显示成localhost,uid为0显示成root等等    
-e 显示更多信息如用户,inode
-p 显示pid和程序名字
-t 显示tcp链接
-u 显示udp链接
-x 显示unix套接字 
-l 显示正在监听状态的连接
-r 显示路由表
-i 显示网络接口表
-s 显示网络统计数据
-M 显示伪装的连接 masqueraded connections
-v 显示详细的信息

## 统计端口连接数 80端口为例
netstat -nat|grep -i "80"|wc -l
## 查看本机IP
ifconfig <idaptor-name>|grep 'inet'|sed 's/^.*inet //g'|sed 's/ *netmask.*$//g'
## 查看进程端口号
netstat -tunlp|grep <port-number>
Linux python 创建虚拟环境
## 新建项目文件夹
mkdir myproject
## 新建虚拟环境
virtualenv venv
## 激活虚拟环境
source /venv/bin/activate

## 使用python3 venv新建方式 第二个参数为文件夹名称
## 这个方法比较常用
python3 -m venv <venv>
Linux 多线程压缩/解压方式
## 安装pigz
yum install pigz

## Usage: pigz [options] [files ...]

##  -0 to -9, -11 : 压缩级别
##  -p n : 指定压缩核心数,默认8个
##  -k :压缩后保留原文件
 
## 压缩单独文件 生成 filename.gz文件
pigz -6 -p 10 -k filename
## 压缩目录 先打包后压缩 采用6级压缩 10线程并发
tar cvf - /data/test | pigz -6 -p 10 -k > test.tar.gz
## 使用nohup 方法后台运行 (tar 命令可以不带v参数,这样就不用了重定向输出标准错误了,但是会看不到日志)
nohup tar cvf - /data/test 2>err.log | pigz -6 -p 10 -k > test.tar.gz

## 解压文件
gzip -d filename.gz
## 或者
pigz -d filename.gz

## 解压目录
tar xvfz filename.tar.gz
## 使用pigz解压后是一个tar
pigz -d filename.tar.gz
Linux DNS 查询
## 查询SRV记录
nslookup -q=srv <service_name>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值