本文是总结了一些自己日常使用linux系统时会使用到的命令,其中包含了系统、文件,进程,mysql数据库等,和一小部分使用kubeadm搭建K8S集群时用到的一些命令。
系统重启相关
shutdown -r now
或reboot
立即重启
shutdown -r 10
10分钟后重启
shutdown -r 08:30
08:30的时候重启
poweroff
关机
内核版本号:
uname -r
内核名称:
uname -s
os版本:
uname -v
os硬件名称 x86-64等:
uname -m
以上所有信息:
uname -a
Uniq :报告文件中重复行
将f1内重复行删除,结果写入f2:
uniq f1 f2
统计f1中相同行重复的次数:
uniq -c f1
WC:统计行数,词数,字符数
打印f1中的行数:
wc -l f1
打印行,词,字符数:
wc f1
Paste:合并多个文件或同一文件连续行
paste f1 f2
f1里的行加到f2的行后,二者用制表符连接,看起来就像是表的两列
rm 从目录删除文件
rm -i *
删除当前目录下所有文件,事先询问是否删除
rm -rf data
忽略报错信息,逐层删除data下的所有文件和目录
Find 查找文件
删除给定目录下的已“.log” 为结尾的文件:
find . -name "*.log" | xargs rm -f
将用户主目录下超过30天没有访问的文件移动到/old下,同时打印出名称
find ~ -atime +30 -exec mv { } /old/ \; -print
其中{ }用来接收各个文件名称
查找当前目录下 ,所有的目录文件:
find . -type d -print
从当前目录的父目录开始 ,查找所有的file文件,即所有不是目录的文件
find .. -type f print
查找当前目录下,长度超过200字节,最近21天没有被访问过的文件,并询问是否删除:
find . -size +200c -type f -atime +21 -ok rm -f "{ }" \;
不询问:
find . -size +200c -type f -atime +21 rm -f "{ }" \;
查找当前目录下权限为644的文件:
find . -perm 644 -print
打印出root分区下属于用于lili的所有文件名:
find / -user lili xdev -print
打印出当前目录下所有名称为core的文件,同时将报错信息发送到/dev/null:
find . -name core -print 2>/dev/null
Grep:在文件中查找模式
查看f1.txt内包含aa的行,并给出行号:
[root@master2 ~]#grep -n aa f1.txt
7:aa
sed:编辑器
只打印f1的10-20行:
sed -n '10,20p' f1
删除包含john的所有行,并在屏幕上打印余下的行:
sed '/john/d' f1
替换文件f1内root为john:
sed 's/root/john/g' f1
sort 排序或者合并文件
sort -r
逆序排序,默认升序
sort 默认按字母顺序排序
sort -n
按数字大小排序
sort -k
按选定的列排序
sort -t c
按指定的字符分隔
Tail:显示文件尾
默认显示最后10行
显示文件的最后20行:
tail -20
从第10行开始显示文件内容:
tail +10 f1
Tee:复制标准输出
把ls的输出结果写到屏幕和out.txt内:
ls | tee out.txt
date | tee now.txt
Touch:更新文件访问时间或修改时间
创建abc三个文件,如果某个已经存在,则更新修改时间戳:
touch a b c
Tr:转换字符
删除文件中所有空格:
tr -d ' ' < f1.txt
压缩文件中多个冒号为单个空格:
tr -s ':' ' ' <f1.txt
所有大写字母替换为小写:
tr '[A-Z]' '[a-z]' <f1.txt
Umask:设置创建文件时使用的权限模式掩码
显示当前文件权限掩码
文件属性计算:666-026=640
目录属性计算:777-026=751
umask 026
编辑模式下:
:wq
保存修改后退出
:q!
强行退出不保存修改
:q
没有修改情况下的退出
命令模式下:
d$
删除至行尾
d^
删除至非空行首
dd
删除光标所在行
yy
复制光标所在行
p
如果是粘贴整行,会粘贴到光标所在行的下一行,如果粘贴多个字符,会粘到当前字符后
C
或 c$
删除当前光标到行尾,并切为插入模式
需要注意的是以上的这些删除,都可以通过p操作来粘贴,这里你也也可以理解为通过p操作来撤回误操作。
df
查看磁盘利用率
du -S
列出某个目录下的全部数据,减少子目录相加,因为默认是加上子目录的
du -m
查看某一个目录的容量,查看某一个目录的容量,单位KB
du -h
查看当前目录各文件占用磁盘大小
du -hd1
查看当前目录下各目录文件大小,层级深度为1
du -ah1
查看所有文件大小,深度为1
LS:列出目录内容
ls -al
列出目录下隐藏文件,并以长格式列出文件属性
ls -alF
在目录文件末尾加上/,在在可执行脚本末尾加*
MV : 移动或者更名文件
mv t1 t2 train
将t1 t2 移动到目录train下
kill -signal PID:
kill -1 PID:
类似于重启,启动被终止的进程
kill -9 PID:
强制杀死进程,如果进程执行到一半,可能会留下中间文件。
kill -15 PID:
以正常流程结束进程,如果进程已经发生一些问题,无法使用正常信号终止时,这个信号是没有用的
kill -2 PID:
=cltr+c中断进程的执行
kill -19 PID:
=cltr+z 暂停进程的执行
killall:删除所有以之启动的进程,后面可跟进程名,如killall -9 httpd,所有httpd启动的进程都会被删除
ps
查看当前所有进程
ps -ef | grep mysql
过滤出与mysql相关的进程
kill -9 pid
强制停止进程
netstat -na
回车,于是就会显示本机连接情况及打开的端口
netstat -lntp
查看应用运行情况
ss -tnl
查看端口开放情况
lsof
显示所有进程打开的所有文件 9列 输出各列信息的意义如下:
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
查看开放端口:
netstat -nupl
udp端口 l:listen p:pocess n:numeric
netstat -ntpl
tcp端口
tail -n 10 test.log
查询日志尾部最后10行的日志;
tail -n +10 test.log
查询10行之后的所有日志;
head -n 10 test.log
查询日志文件中的头10行日志;
head -n -10 test.log
查询日志文件除了最后10行的其他所有日志
pwd
查看当前所在的路径
cd ..
返回当前目录的上一级目录
cd
返回根目录
1、 创建库 CREATE DATABASE 或SCHEMA [IF NOT EXISTS] 'DB_NAME';
删除库 DROP DATABASE 或 SCHEMA [IF EXISTS] 'DB_NAME';删除不可恢复
2、 查看支持的所有字符集:SHOW CHARACTER SET ;
3、 查看支持所有排序规则:SHOW COLLATIONS;
4、 查看所有引擎:SHOW ENGINES;
5、 查看表:SHOW TABLES [FROM db_name];
6、 查看表结构:DESC [db_name.]tb_name;
7、 删除表:
DROP TABLE [IF_EXISTS] tb_name;
8、Mysql -e 'command'不用进入交互式mysql命令,在命令行就可以运行sql语句
[root@centos7 ~]#mysql -e 'show databases;'
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
9、获取运行中的mysql进程使用各服务器参数及其值,
mysql> show global variables; 管理员权限才可以查看
10、修改表:alter table
11、使用数据库:use testdb;
使用kubeadm安装集群时会使用到的命令
$iptables -F
清除所有防火墙规则
$iptables -L
列出所有防火墙规则
$kubeadm token list
查看当前集群有效的token
$kubeadm token generate
重新生成令牌
$kubectl version
查看kubectl版本信息
$kubectl cluster-info
查看集群信息
$kubectl get cs/ns/deployment/pods/nodes /svc
获得集群的cs/ns/deployment/pods/nodes/svc等信息
$kubdctl get pods -o wide
列出pods的详细信息,加-A为全部pods详细信息
$kubectl delete pods/node podname/nodename
删除podname,nodename
$kubeadm init
集群初始化,还需指定以下命令
--control-plane-endpoint
是控制平面的访问端点,可以为IP地址也可以是DNS域名,作用是为管理员或者是集群组件的kubeconfig配置文件的API server的访问地址。 单控制平面时可以不指定此选项
--kubernetes-version
版本信息
--pod-network-cidr
pod网络的地址范围,其值是CIDR式的网络地址,flannel网络插件的默认值:10.244.0.0/16,caclio的默认值是192.168.0.0/16.
--service-cidr
10.96.0.0/12 Service网络的地址范围,其值是CIDR式的网络地址,其值默认是10.96.0.0/12,仅flanel一类的网络插件需要手动指定该地址
--apiserver-advertise-address
为API server通告给其他组件的IP地址,一般为master节点用于集群内部通信的ip地址,0.0.0.0表示节点上所有可用地址。
--image-repository
registry.cn-hangzhou.aliyuncs.com/google_containers 由于某些原因,指定国内镜像仓库地址速度会比较快
--token-ttl=0
共享令牌的过期时间,默认24h,0为永不过期
$kubeadm join
加入集群,根据是主节点加入,还是worker节点加入,又分为
主节点加入:
类似于kubeadm join 192.168.1.100:6443 --token f9k3a3.c0358ovl103x497u
–discovery-token-ca-cert-hashsha256:21eb54df16efc9e1095c8e3dc1933d44f0f038d16101c2d592c8232034d59e56
–control-plane
–certificate-key 832deebb9830ebaadf1724d4d73ec078a292e35de024a782b444dd27bbd456c3
worker节点加入:
类似于 kubeadm join 192.168.1.100:6443 --token n4rdmb.zrleybnczwluosu5 --discovery-token-ca-cert-hash sha256:3dd7030f0c75aab75877b0fbbb289500c54ae9d33959f7031a02a5e40d3c441d
$kubeadm init phase upload-certs --upload-certs
主节点实现高可用时,在第一个主节点上执行此命令生成其他master加入集群需要的令牌832deebb9830ebaadf1724d4d73ec078a292e35de024a782b444dd27bbd456c3
主节点上有kubectl命令执行权限
$kubectl create deployment demoapp --image=ikubernetes/demoapp:v1.0 --replicas=n
根据镜像创建n个控制器对象(有n个节点),控制器对象名叫demoapp
$kubectl describe ResourceType RescourceName
列出资源类型下资源名的所有信息 ,因资源名只在类型下唯一
$kubectl describe node node01
列出node01的所有信息
$kubectl apply -f xxx.yml
基于配置创建资源
$kubectl delete -f xxx.yml
删除配置创建的资源