内核与模块管理

lsb_release - 查看LSB信息

LSB是Linux Standard Base的缩写,lsb_release命令用来显示LSB和特定版本的相关信息。如果使用该命令时不带参数,则默认加上-v参数。安装命令:yum install -y redhat-lsb

语法格式: lsb_release [参数]
常用参数:

-i 显示系统名称简写
-d 显示系统全称和版本号
-r 显示版本号
-a 显示LSB所有信息

查看Linux系统版本

  1. # 此命令适用于所有的Linux发行版.包括RedHat、SUSE、Debian…等
  2. [root@harbor ~]# lsb_release -a
  3. LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
  4. Distributor ID: CentOS
  5. Description: CentOS Linux release 7.5.1804 (Core)
  6. Release: 7.5.1804
  7. Codename: Core

cat /etc/redhat-release,这种方法只适合Redhat系的Linux;
cat /etc/issue,此命令也适用于所有的Linux发行版

uname – 显示系统信息

uname命令的英文全称即“Unix name”。
用于显示系统相关信息,比如主机名、内核版本号、硬件架构等。

语法格式:uname [参数]
常用参数:

-a 显示系统所有相关信息
-m 显示计算机硬件架构
-n 显示主机名称
-r 显示内核发行版本号
-s 显示内核名称
-v 显示内核版本
-p 显示主机处理器类型
-o 显示操作系统名称
-i 显示硬件平台

查看内核版本

  1. [root@harbor ~]# uname -a
  2. Linux harbor 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
  3. # cat /proc/version 也可以查看
  4. [root@harbor ~]# cat /proc/version
  5. Linux version 3.10.0-862.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) ) #1 SMP Fri Apr 20 16:44:24 UTC 2018

常用工具命令

screen – 多窗口管理程序

Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

会话恢复
只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。

多窗口
在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。 会话共享 Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。

语法格式:screen [参数]
常用参数:

-A 将所有的视窗都调整为目前终端机的大小
-d<作业名称> 将指定的screen作业离线
-m 即使目前已在作业中的screen作业,仍强制建立新的screeN作业
-r<作业名称>

| 恢复离线的screen作业 | | -R | 先试图恢复离线的作业,若找不到离线的作业,即建立新的screen作业 | | -s | 指定建立新视窗时,所要执行的shell | | -S<作业名称> | 指定screen作业的名称 | | -v

| 显示版本信息 | | -x | 恢复之前离线的screen作业 | | -ls | 显示目前所有的screen作业 | | -list | 显示目前所有的screen作业 |

多窗口执行shell脚本

  1. # screen指定作业名称,启动一个新会话,执行shell脚本
  2. root@master:# screen -S k3s.deploy
  3. [detached from 2305.k3s.deploy]
  4. # Ctrl+a+d -> 会话分离,此后会话处于Detached
  5. root@master:# screen -ls
  6. There is a screen on:
  7. 2305.k3s.deploy (06/12/2021 11:54:16 PM) (Detached)
  8. 1 Socket in /run/screen/S-root.
  9. # 会话恢复
  10. root@master:# screen -r 2305
  11. root@master:# screen -ls
  12. There is a screen on:
  13. 2305.k3s.deploy (06/12/2021 11:54:15 PM) (Attached)
  14. 1 Socket in /run/screen/S-root.
  15. # 杀死窗口,此后会话处于dead状态
  16. root@master:~# kill -9 2305
  17. root@master:~# screen -ls
  18. There is a screen on:
  19. 2305.k3s.deploy (06/12/2021 09:54:51 PM) (Dead ???)
  20. Remove dead screens with 'screen -wipe'.
  21. 1 Socket in /run/screen/S-root.
  22. # 清除dead会话
  23. root@master:~# screen -wipe
  24. There is a screen on:
  25. 2305.k3s.deploy (06/12/2021 09:54:50 PM) (Removed)
  26. 1 socket wiped out.
  27. No Sockets found in /run/screen/S-root.





常用命令

df

  1. df -h 打印设备上挂载了多少磁盘,以及磁盘里还有多少可用空间。
  2. [root@harbor ~]# df -h
  3. 文件系统 容量 已用 可用 已用% 挂载点
  4. /dev/vda1 50G 23G 24G 50% /
  5. devtmpfs 7.8G 0 7.8G 0% /dev
  6. tmpfs 7.8G 0 7.8G 0% /dev/shm
  7. tmpfs 7.8G 2.9M 7.8G 1% /run
  8. tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
  9. /dev/vdc1 197G 157G 31G 84% /var/lib/docker
  10. /dev/vdd1 99G 68G 26G 73% /data
  11. 系统盘分配大小为50G,/dev/vda1分区被挂载到根目录
  12. docker数据盘大小197G,/dev/vdc1分区被挂载到/var/lib/docker,这意味着所有在/var/lib/docker之下的文件和目录在物理意义上存储于/dev/vdc1

grep

  1. 根据正则表达式查找相关内容并打印对应的数据
  2. -A 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
  3. -B 在显示符合范本样式的那一行之外,并显示该行之前的内容。
  4. -C 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
  5. -c 计算符合范本样式的列数。
  6. -i 忽略字符大小写的差别。
  7. -v 反转查找
  8. # 查看日志里面有 error 关键字的日志记录,与这个记录前后三行的日志信息
  9. cat log-fail.txt |grep error -C 3

awk

  1. localhost% cat test.txt
  2. NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
  3. k8s01 Ready wise-controller 38d v1.16.4 192.168.0.3 <none> CentOS 3.10.0-862.el7.x86_64 docker://18.9.8
  4. k8s02 Ready wise-controller 38d v1.16.4 192.168.0.7 <none> CentOS 3.10.0-862.el7.x86_64 docker://18.9.8
  5. k8s03 Ready wise-controller 38d v1.16.4 192.168.0.10 <none> CentOS 3.10.0-862.el7.x86_64 docker://18.9.8
  6. k8s04 NotReady node 38d v1.16.4 192.168.0.15 <none> CentOS 3.10.0-862.el7.x86_64 docker://18.9.8
  7. # 打印文本的总列数,即字段数量
  8. localhost% awk 'END{print NF}' test.txt
  9. 10
  10. # 打印文件的第一列和第五列
  11. localhost% awk '{print $1,$5}' test.txt
  12. NAME VERSION
  13. k8s01 v1.16.4
  14. k8s02 v1.16.4
  15. k8s03 v1.16.4
  16. k8s04 v1.16.4
  17. # 打印最后一列字段
  18. localhost% awk '{print $NF}' test.txt
  19. CONTAINER-RUNTIME
  20. docker://18.9.8
  21. docker://18.9.8
  22. docker://18.9.8
  23. docker://18.9.8
  24. 打印倒数第二列字段:
  25. localhost% awk '{print $(NF-1)}' test.txt
  26. KERNEL-VERSION
  27. 3.10.0-862.el7.x86_64
  28. 3.10.0-862.el7.x86_64
  29. 3.10.0-862.el7.x86_64
  30. 3.10.0-862.el7.x86_64
  31. # 打印文本文件的总行数
  32. localhost% awk 'END{print NR}' test.txt
  33. 5
  34. # 打印文本第1行数据
  35. localhost% awk 'NR==1{print}' test.txt
  36. NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
  37. # 打印文本大于第1行的数据
  38. localhost% awk 'NR>1{print}' test.txt
  39. k8s01 Ready wise-controller 38d v1.16.4 192.168.0.3 <none> CentOS 3.10.0-862.el7.x86_64 docker://18.9.8
  40. k8s02 Ready wise-controller 38d v1.16.4 192.168.0.7 <none> CentOS 3.10.0-862.el7.x86_64 docker://18.9.8
  41. k8s03 Ready wise-controller 38d v1.16.4 192.168.0.10 <none> CentOS 3.10.0-862.el7.x86_64 docker://18.9.8
  42. k8s04 NotReady node 38d v1.16.4 192.168.0.15 <none> CentOS 3.10.0-862.el7.x86_64 docker://18.9.8
  43. # 打印文本最后1行数据
  44. localhost% awk 'END{print}' test.txt
  45. k8s04 NotReady node 38d v1.16.4 192.168.0.15 <none> CentOS 3.10.0-862.el7.x86_64 docker://18.9.8
  46. # 打印统计两种状态的主机数量
  47. localhost% cat test.txt |awk 'NR>1{print $2}' |uniq -c
  48. 3 Ready
  49. 1 NotReady

sed

  1. 定位到数据行并对数据进行增删改查操作。
  2. 替换文本中的字符串:
  3. sed 's/book/books/' file
  4. # 使用后缀/g标记会替换每一行中的所有匹配:
  5. [root@harbor image_pull_push]# cat img-list.txt |sed 's/registry.cn-hangzhou.aliyuncs.com/192.168.0.11/g'
  6. 当需要从第N处匹配开始替换时,可以使用 /Ng
  7. echo sksksksksksk | sed 's/sk/SK/3g'
  8. skskSKSKSKSK

find

  1. find . -name README.md 查找当前目录下是否存在README.md
  2. find / -name nginx.conf 查找根目录/是否存在nginx.conf
  3. find /home -name "*.txt" 在/home目录下查找以.txt结尾的文件名
  4. find / -size +500M 搜索大于500M的文件

echo

  1. # 创建带有内容的文件
  2. [root@harbor ~]# echo hello > new.yaml
  3. [root@harbor ~]# cat new.yaml
  4. hello
  5. # 追加写入文件
  6. [root@harbor ~]# echo hello-test >> new.yaml
  7. [root@harbor ~]# cat new.yaml
  8. hello
  9. hello-test

wc

  1. wc -l 统计文本行数
  2. wc -w 统计文本字数
  3. wc -c 统计文本字节数

dd

  1. 创建一个50M的文件,文件名为out.txt
  2. dd if=/dev/zero of=out.txt bs=10M count=1

tar

  1. tar -cvf log.tar log2012.log 仅打包,不压缩!
  2. tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 压缩
  3. tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 压缩
  4. tar -ztvf log.tar.gz 查阅tar包内有哪些文件
  5. tar -zxvf /opt/soft/test/log.tar.gz tar包解压缩
  6. 总结
  7. 1、*.tar tar xvf 解压
  8. 2、*.gz gzip -d或者gunzip 解压
  9. 3、.tar.gz和.tgz tar xzf 解压
  10. 4、*.bz2 bzip2 -d或者用bunzip2 解压
  11. 5、*.tar.bz2tar xjf 解压
  12. 6、*.Z uncompress 解压
  13. 7、*.tar.Z tar xZf 解压
  14. 8、*.rar unrar e解压
  15. 9、*.zip unzip 解压

文件与目录管理

ls

  1. ls -l 列出当前目录下所有文件详细信息
  2. ls -a 列出当前目录下所有文件及目录,包括隐藏文件目录
  3. [root@dev-7 ~]# ll -d /var/log/message*
  4. -rw------- 1 root root 3746323 12 22 17:58 /var/log/messages
  5. -rw-------. 1 root root 11478322 10 15 17:28 /var/log/messages-20191015
  6. -rw------- 1 root root 1296942 12 21 03:43 /var/log/messages-20191221
  7. -rw------- 1 root root 6150415 12 22 03:27 /var/log/messages-20191222

stat

  1. stat 显示指定文件的详细信息,比ls更详细

pwd

  1. pwd 获取当前目录所在的路径

mkdir

  1. mkdir -p 创建目录,若无父目录,则创建p(parent)

tree

  1. 树形结构列出指定目录下的所有文件,包括子目录里的文件

cat

  1. cat 显示全部内容,结合grep可以查找内容

more、less

  1. more 分页显示文本文件内容
  2. less 支持上下滑动,左右移动显示内容

head、tail

  1. head file (显示文件file的前10行)
  2. tail file (显示文件file的最后10行)
  3. tail -n 20 file (显示文件file的最后20行)
  4. tail -f 20 file (实时显示文件最新追加的20行内容)

vim

  1. 一般模式:
  2. 上下翻页:Ctrl+fCtrl+b
  3. 跳到当前行最后字符处:Fn+右键
  4. 跳到当前行最前面字符处:Fn+左键、0
  5. 查找字符images:/image n继续查找
  6. 删除行:dd nddn代表删除或复制的行数)
  7. 复制行:yy nyy
  8. 粘贴行:pP
  9. 复原前一个操作:u
  10. 重做上一个操作:ctrl+r
  11. 显示行号::set nu
  12. 字符全局替换::%s/foo/bar/g :{作用范围}s/{目标}/{替换}/{替换标志}

scp

  1. 从远程拷贝目录到本地
  2. scp -r root@10.10.10.10:/opt/soft/mongodb /opt/soft/
  3. 上传本地目录到远程机器指定目录
  4. scp -r /opt/soft/mongodb root@10.10.10.10:/opt/soft/scptest

chmod、chown

  1. chmod 修改一个文件的权限
  2. chown 修改一个文件所归属的用户或组
  1. README.md 文件为例,文件权限中有三组内容:
  2. 第一组内容(rw)表示该文件在当前用户下的权限,d代表是目录
  3. 第二组内容(r)表示在同组下的权限
  4. 第三组内容(r)表示不在同组下其他方的权限。而 r 表示可读,w 表示可写,x 表示文件可执行。
  5. localhost:wise2c-robot liaoxb$ ls -l
  6. total 1216
  7. -rw-r--r-- 1 liaoxb staff 515 11 5 14:36 Dockerfile
  8. drwxr-xr-x 6 liaoxb staff 192 11 5 14:36 Project
  9. -rw-r--r-- 1 liaoxb staff 1404 11 5 14:36 README.md
  10. drwxr-xr-x 25 liaoxb staff 800 12 13 18:36 libspecs
  11. -rw-r--r-- 1 liaoxb staff 250147 12 20 17:02 log.html
  12. -rw-r--r-- 1 liaoxb staff 61616 12 20 17:02 output.xml
  13. -rw-r--r-- 1 liaoxb staff 1405 12 20 15:01 red.xml
  14. -rw-r--r-- 1 liaoxb staff 230561 12 20 17:02 report.html
  15. -rw-r--r-- 1 liaoxb staff 229 12 20 12:44 requirements.txt

进程和网络管理

ps

  1. ps -ef 报告当前系统的进程状态。用户的 UID,进程的PID,父进程的PPID,以及进程开始的时间,运行参数等信息

top

  1. top 显示负载情况,当前用户,启动时间,相关的任务树,以及内存,进程的一些数据等,同样也包含 PIDUSER、内存、共享内存,CPU 占比等全部信息

netstat

  1. 有时进程之间需要通信,需要开启一个socketsocket就是对外建立连接的一个窗口,然后借助TCP协议进行通信。但进行通信之前首先需要进程开启一个端口,这时就可以通过netstat命令查看开启的端口以及由哪个进程开启
  1. netstat -anlp
  2. -t或--tcp:显示TCP传输协议的连线状况;
  3. -u或--udp:显示UDP传输协议的连线状况;
  4. -n或--numeric:直接使用ip地址,而不通过域名服务器;
  5. -l或--listening:显示监控中的服务器的Socket
  6. -p或--programs:显示正在使用Socket的程序识别码和程序名称;

ss

  1. ss 可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效

系统管理命令

du

  1. du -sh 对文件和目录磁盘使用的空间总量的查看

watch

  1. watch -d -n 60 "free -h" 每分钟动态监测主机内存的使用情况

who

  1. 显示在线登陆用户

whoami

  1. 显示当前操作用户

rpm

  1. rpm -qa 列出所有安装过的包
  2. rpm -ql nfs-utils-1.3.0-0.54.el7.x86_64 获取rpm包中的文件安装路径
  3. rpm -ivh your-package.rpm 安装rpm软件包

alias

  1. alias showmeit="ps -aux" 命令重命名
  2. unaliax showmeit 解除使用

nohup

  1. nohup command > myout.file 2>&1 &
  2. stderrstdout被重定向到myout.file文件中
  3. 使用Ctrl + C发送SIGINT信号,程序关闭;
  4. 关闭session发送SIGHUP信号,程序免疫;
  5. 平时经常使用nohup和&配合来启动程序。双同免疫

script

  1. script -q myfile 静默模式记录,exit 退出记录

crontab

  1. crontab文件的含义:用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:minute hour day month week command
  2. 每五分钟执行 */5 * * * *
  3. 每小时执行 0 * * * *
  4. 每天执行 0 0 * * *
  5. 每周六、周日的1:10重启smb *10 1 * * 6,0 /etc/init.d/smb restart*
  6. 创建cron脚本用法
  7. - 第一步,vi创建cron脚本,命名为crontest.cron,写入命令*0 9 * * * echo "Good morning." >> /tmp/test.txt* 每天早上9点执行打印一次命令
  8. - 第二步:添加定时任务。执行命令 *crontab crontest.cron* 搞定
  9. - 第三步:*crontab -l* 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本
  10. 其它用法
  11. - *crontab -r* 删除该用户的定时任务
  12. - *crontab -e* 编辑该用户的定时任务

wget

  1. 下载harbor安装包,默认会以最后一个符合/的后面的字符来命令
  2. wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.1.tgz
  3. 下载并以不同的文件名保存
  4. wget -O harbor.tgz https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.1.tgz
  5. 后台下载
  6. wget -b url

linux命令大全汇总 http://man.linuxde.net/netstat