实施、运维常用基础知识(适用小白入门)

Linux

基础命令
软件包管理
压缩和解压缩
远程连接
文件操作
花式读(文件)
进程操作
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> 

Linux信息

启动时长: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

镜像管理
容器管理
容器日志
配置信息
垃圾清理

镜像管理

列出本地镜像: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
慎用!!!

K8s

工作负载
扩容
kubectl
Ingress Nginx
集群网络
Rancher

工作负载

服务的基本介绍:
Deployment:无状态长期运行任务
StatefulSets:有状态长期运行任务
Job:一次性任务
CronJob:定时任务
DaemonSet:每个Node上都跑一个的Deployment

扩容

分为两种:水平扩容和垂直扩容
水平扩容:不提升配置,但增加数量
垂直扩容:提升配置,不增加数量
个人理解为:水平扩容相当于增加节点数(pod),垂直扩容相当于扩大服务内存限制、cpu限制等

kubectl(重点)

配置文件:~/.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 

Rancher

1.集群中节点的驱散、清理、删除(可在rancher管理端操作)
2.打污点:禁止其他新部署的服务运行到该主机上,主要用于排查检查

你可能感兴趣的:(实施运维小知识,运维,linux,kubernetes,docker)