• 【linux】日常用的linux命令总结


    本文是总结了一些自己日常使用linux系统时会使用到的命令,其中包含了系统、文件,进程,mysql数据库等,和一小部分使用kubeadm搭建K8S集群时用到的一些命令。

    系统

    系统重启相关

    shutdown -r nowreboot 立即重启
    shutdown -r 10 10分钟后重启
    shutdown -r 08:30 08:30的时候重启
    poweroff 关机
    内核版本号:

    uname -r
    
    • 1

    内核名称:

    uname -s
    
    • 1

    os版本:

    uname -v
    
    • 1

    os硬件名称 x86-64等:

    uname -m
    
    • 1

    以上所有信息:

    uname -a 
    
    • 1

    文件相关

    Uniq :报告文件中重复行
    将f1内重复行删除,结果写入f2:

    uniq f1 f2
    
    • 1

    统计f1中相同行重复的次数:

    uniq -c f1
    
    • 1

    WC:统计行数,词数,字符数
    打印f1中的行数:

    wc -l f1
    
    • 1

    打印行,词,字符数:

    wc f1
    
    • 1

    Paste:合并多个文件或同一文件连续行
    paste f1 f2 f1里的行加到f2的行后,二者用制表符连接,看起来就像是表的两列
    rm 从目录删除文件
    rm -i *删除当前目录下所有文件,事先询问是否删除
    rm -rf data忽略报错信息,逐层删除data下的所有文件和目录

    Find 查找文件
    删除给定目录下的已“.log” 为结尾的文件:

    find . -name "*.log"  | xargs rm -f
    
    • 1

    将用户主目录下超过30天没有访问的文件移动到/old下,同时打印出名称

    find ~ -atime +30 -exec mv { } /old/  \;  -print
    
    • 1

    其中{ }用来接收各个文件名称
    查找当前目录下 ,所有的目录文件:

    find .  -type d -print
    
    • 1

    从当前目录的父目录开始 ,查找所有的file文件,即所有不是目录的文件

    find ..  -type  f print 
    
    • 1

    查找当前目录下,长度超过200字节,最近21天没有被访问过的文件,并询问是否删除:

    find . -size +200c -type f -atime +21 -ok rm -f "{ }" \;
    
    • 1

    不询问:

    find . -size +200c -type f -atime +21  rm -f "{ }" \;
    
    • 1

    查找当前目录下权限为644的文件:

    find . -perm 644 -print
    
    • 1

    打印出root分区下属于用于lili的所有文件名:

    find / -user lili xdev -print
    
    • 1

    打印出当前目录下所有名称为core的文件,同时将报错信息发送到/dev/null:

    find . -name core -print 2>/dev/null
    
    • 1

    Grep:在文件中查找模式
    查看f1.txt内包含aa的行,并给出行号:

    [root@master2 ~]#grep -n aa f1.txt
    7:aa
    
    • 1
    • 2

    sed:编辑器
    只打印f1的10-20行:

    sed -n '10,20p' f1
    
    • 1

    删除包含john的所有行,并在屏幕上打印余下的行:

    sed '/john/d' f1
    
    • 1

    替换文件f1内root为john:

    sed 's/root/john/g' f1
    
    • 1

    sort 排序或者合并文件
    sort -r 逆序排序,默认升序
    sort 默认按字母顺序排序
    sort -n按数字大小排序
    sort -k按选定的列排序
    sort -t c按指定的字符分隔

    Tail:显示文件尾
    默认显示最后10行
    显示文件的最后20行:

    tail -20
    
    • 1

    从第10行开始显示文件内容:

    tail +10 f1
    
    • 1

    Tee:复制标准输出
    把ls的输出结果写到屏幕和out.txt内:

    ls | tee out.txt
    date | tee now.txt
    
    • 1
    • 2

    Touch:更新文件访问时间或修改时间
    创建abc三个文件,如果某个已经存在,则更新修改时间戳:

    touch a b c 
    
    • 1

    Tr:转换字符
    删除文件中所有空格:

    tr  -d  '  ' < f1.txt  
    
    • 1

    压缩文件中多个冒号为单个空格:

    tr -s ':'  ' ' <f1.txt
    
    • 1

    所有大写字母替换为小写:

    tr '[A-Z]' '[a-z]'  <f1.txt
    
    • 1

    Umask:设置创建文件时使用的权限模式掩码
    显示当前文件权限掩码
    文件属性计算:666-026=640
    目录属性计算:777-026=751

    umask 026
    
    • 1

    编辑器相关

    vim编辑器

    编辑模式下:
    :wq 保存修改后退出
    :q!强行退出不保存修改
    :q 没有修改情况下的退出

    命令模式下:

    d$ 删除至行尾
    d^ 删除至非空行首
    dd 删除光标所在行
    yy 复制光标所在行
    p 如果是粘贴整行,会粘贴到光标所在行的下一行,如果粘贴多个字符,会粘到当前字符后
    Cc$ 删除当前光标到行尾,并切为插入模式
    需要注意的是以上的这些删除,都可以通过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 返回根目录

    mysql相关

    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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    k8s集群相关

    使用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 删除配置创建的资源

  • 相关阅读:
    C#的托盘窗体显示与隐藏效果 - 开源研究系列文章
    程序题:从对象中排除指定的属性并返回新对象
    搞定面试官 - 可以讲一下你平时是如何进行 SQL 性能分析的嘛?
    解释 Git 的基本概念和使用方式
    商汤发布象棋机器人『元萝卜』;『南瓜书』西瓜书公式推导&解析;代码自动美化插件;Tock建立对话机器人的AI平台;前沿论文 | ShowMeAI资讯日报
    iOS 通知扩展插件
    【老生谈算法】自动控制中常用的Matlab函数合集——自动控制
    结构体和联合体大小计算
    springboot 调用第三方接口的方式(一)使用RestTemplate方法
    代码随想录-034-459.重复的子字符串
  • 原文地址:https://blog.csdn.net/qq_39965059/article/details/123540391