基础命令
软件包管理
压缩和解压缩
远程连接
文件操作
花式读(文件)
进程操作
Linux信息
系统服务
TAB键---自动补全
管道符(|):将前一个命令的输出作为下一个命令的输入
文件通配符(*):*.log
输入出重定向:linux内置文件描述符
/dev/fd/0:stdin,标准输入
/dev/fd/1:stdout,标准输出
/dev/fd/2:stderr,标准错误输出
重定向服务:
>:将输出写到文件,文件不存在会创建,文件存在会覆盖
>>:将输出写到文件,文件不存在会创建,文件存在会追加
输出重定向:
标准输出到文件:
wc -l app.log > app-wc.txt
标准错误输出到文件:
curl https://dddd.com 2> curl-error.log
curl https://dddd.com 2>> curl-error.log
标准错误输出转标准输出:
curl https://dddd.com 2>&1
文件内容作为输入:
grep 'abc' < app.log
环境变量:环境变量提供了参数和环境信息
env
查看环境变量值:echo $PATH
命令换行(用\换行):
$ docker run \
--name test \
--rm \
-p 8080:80 \
-e foo=test \
alpine:3.9
yum repolist 列出仓库清单
yum makecache 更新本地软件元信息
yum install <pkg> <pkg> ... 安装软件
yum remove <pkg> <pkg> ...
yum search <keyword>
压缩:
tar -cjvf foo.tar.bz2 *.log dir1 dir2
tar -czvf foo.tar.gz *.log dir1 dir2
zip foo.zip *.log dir1 dir2
解压缩:
$ tar -xvf foo.tar.bz2
$ tar -xvf foo.tar.gz
$ tar -xvf foo.tar
unzip foo.zip
小知识:jar、war、apk 都是 ZIP 格式的
ssh [email protected]
ssh -p 2222 [email protected]
远程拷贝:
scp -r dir1 [email protected]:/root/
scp -r [email protected]:/root/dir1
scp 1.log 2.log [email protected]:/root/
#将本地ssl文件夹传输到远程主机的opt下
scp -r [email protected]:/opt/ssl /opt
复制文件/目录
$ cp app.log app1.log # 复制文件同时改名
$ cp app.log ./dir1/ # 复制文件到指定目录下
$ cp app.log ./dir1/app1.log # 复制文件同时改名
$ cp -r dir1 ./dir2 # 复制目录同时改名
$ cp -r dir1 ./foo/ # 复制目录到指定目录下
$ cp -r dir1 ./foo/dir2 # 复制目录到指定目录下同时改名
删除文件/目录
$ rm -f file1 file2 file3 # 删除多个文件
$ rm -f *.log # 删除多个文件(通配符)
$ rm -rf ./dir1 # 删除目录
移动文件/目录
$ mv 1.log ./dir1/ # 移动文件到指定目录下
$ mv 1.log 2.log ./dir1/ # 移动多个文件到指定目录下
$ mv 1.log dir1 ./dir2/ # 移动文件和目录到指定目录下
改名文件/目录
$ mv 1.log 2.log # 修改文件名
$ mv 1.log ./dir1/2.log # 移动文件到指定目录下并改名
$ mv dir1 dir2 # 修改目录名
$ mv dir1 ./foo/dir2 # 移动目录到指定目录下并改名
新建空文件:touch test.log
新建目录:
mkdir dir1
mkdir -p dir1/dir2/dir3 # 一次性创建目录层级
根据名字查找文件/目录:find . -name '*app*'
只找目录
:find . -name '*app*' -type d
只找文件
:find . -name '*app*' -type f
找空目录
:find . -empty
花式读:cat / less / more
cat 打印(一堆)文件:cat 1.log 2.log 3.log
less 可上下滚动的浏览:cat 1.log 2.log 3.log | less
more 只能向下滚动的浏览:
cat 1.log 2.log 3.log | more
more app.log
向下:j
下页:d / 空格
向上:k (less)
上页:u (less)
计算行数:
cat 1.log 2.log | wc -l
计算字数(空格分割)
:cat 1.log 2.log | wc
列出所有进程:ps aux | head
进程状态
S:Sleep
R:运行或在运行队列中
Z:僵尸进程
杀死进程: kill <pid>
top:查看服务运行情况,CPU使用情况:us 用户态、sy 内核态、id 空闲、wa I/O等待
内存使用情况
看某个进程的情况:top -p <pid>
启动时长:uptime
查看ip地址:ifconfig / ip addr
host解析和DNS解析:cat /etc/hosts ; cat /etc/resolv.conf
发行版和内核信息:cat /etc/centos-release ; uname -a
cpu信息:cat /proc/cupinfo
内存信息:free -mh
磁盘信息:df -h
查看磁盘占用情况:du -sh * ; du --max-depth=1 -h
服务器内核参数:sysctl -a
内核参数配置文件:cat /etc/sysctl.conf
加载内存配置文件:sysctl -p
服务器资源配额:ulimit -a
修改资源配额文件:vi /etc/security/limits.conf
系统服务
列出 systemd 中正在运行的 service:systemctl | grep -v -E 'plugged|mounted'
查看状态:systemctl status sshd
开机自动启动:systemctl enable sshd
启动 / 停止 / 重启
:systemctl start/stop/restart ***
系统日志
打印内核日志:dmesg -T
打印 systemd 日志:journalctl
打印某段时间内的 systemd 日志:journalctl --since '2022-11-10 10:00:00'
镜像管理
容器管理
容器日志
配置信息
垃圾清理
列出本地镜像:docker image ls
拉取镜像:docker pull
推送镜像:dokcer push harbor.xxx.edu.cn/xxx/xxx
删除镜像:docker image rm XXX
清理垃圾镜像(未使用的镜像):docker image prune
镜像重新打Tag:docker image tag harbor.supwisdom.com/foo/bar:latest harbor.xxx.edu.cn/foo/bar
导出镜像:docker save alpine:3.9 openjdk:8 | gzip > images.tar.gz
导入镜像:docker load < images.tar.gz
创建(启动)容器:
docker run \
-d \ # 以后台形式运行
--name demo-mysql \ # 指定容器的名字
-p 13306:3306 \ # 将host的13306端口连接到容器的3306端口
-v $(pwd)/data:/data \ # 将host当前目录下的/data目录挂载到容器的 /data 目录
-e FOO=bar \ # 设置环境变量
mysql:8 # 镜像
查看容器:docker ps / docker ps -a
容器的停止、启动、重启:docker stop/start/restart XXX
删除容器:docker rm XXX
进入容器shell:docker exec -it 容器id /bin/bash
传输文件:
# 从容器里面拷贝文件/目录到本地一个路径
$docker cp Name:/container_path to_path
$docker cp ID:/container_path to_path
#从主机上拷贝文件到容器内 -
docker cp foo.txt mycontainer:/foo.txt
查看端口映射:docker port demo-mysql
查看容器元信息:docker inspect demo-mysql | less
查看容器运行情况:docker stats demo-mysql
根据PID找对应容器:docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Name}}' | grep <pid>
docker logs 容器id
查看docker信息:docker info
docker有两个重要配置文件:
1.daemon.json
2.docker.service
删除没用镜像:docker image prune
删除停止镜像:docker container prune
删除没用的卷:docker volume prune
清理以上所有:docker system prune
慎用!!!
工作负载
扩容
kubectl
Ingress Nginx
集群网络
Rancher
服务的基本介绍:
Deployment:无状态长期运行任务
StatefulSets:有状态长期运行任务
Job:一次性任务
CronJob:定时任务
DaemonSet:每个Node上都跑一个的Deployment
分为两种:水平扩容和垂直扩容
水平扩容:不提升配置,但增加数量
垂直扩容:提升配置,不增加数量
个人理解为:水平扩容相当于增加节点数(pod),垂直扩容相当于扩大服务内存限制、cpu限制等
配置文件:~/.kube/config
查看配置的集群:kubectl config get-contexts
kubectl常用命令:
列出资源(pod、deployment、daemonset):kubectl -n XXX get pod XXX
列出所有命名空间的资源:kubectl get -all-namespaces pods
删除某个资源:kubectl -n xxx delete pod xxx
查看资源:kubectl -n XXX(命名空间) pods XXX(服务名)
Ingress Nginx
作用和nginx相同,主要是将流量转发到指定的Service
集群网络
服务内部地址:service.namespace.svc
1.集群中节点的驱散、清理、删除(可在rancher管理端操作)
2.打污点:禁止其他新部署的服务运行到该主机上,主要用于排查检查