转自02 Linux基础和帮助_wx6716377953dc1的技术博客_51CTO博客
1 Linux基础
1.1 Linux的登陆方式
在Linux操作系统中有两种登陆方式:
- 命令行界面登陆:通过ssh远程连接工具(XShell、MobaXterm、FinalShell、CRT等)进行登陆的方式都是命令行界面,是最常用的登陆方式。
- 图形化界面登陆:通常安装Linux操作系统时,在安装的方式中选择带GUI(即图形)方式的安装就会带有图形化的工具,在生产环境中一般都不会安装图形化,因为比较占用资源。
范例:通过命令实现临时登陆Linux
ssh root@10.0.0.50
1.2 用户类型
在Linux中有两种用户类型:
- root用户:也称超级管理员,对系统有着绝对的权限;root用户的用户id为0
- 普通用户:普通用户的权限很小,但是如果将普通用户加入到root组当中,同样也拥有很大的权限;通常能登陆普通用户的用户id在1000以上,因为系统中有很多程序需要系统用户的身份去运行,所以用户id在1000以下的用户是系统在安装之前创建的一些系统用户。
1.3 终端类型
在Linux中有很多终端类型,但常见到的就只有两种:
- 伪终端:也就是tty#,这个#是数字,表示第#的一个终端,通过Linux系统本身进行登陆的方式分配的终端就是伪终端。
- 虚拟终端:通常表现形式为pts/#,通过ssh远程连接工具登陆到Linux的时候,所采用的都是伪终端。
范例:查看当前的终端类型
tty
终端接口相关概念:
- GUI:图形化接口
- CLI:命令行接口,也就是shell程序
1.4 什么是shell
shell是Linux系统用于和用户进行交互的一个程序,具体作用就是提供用户与内核进行交互操作的一种接口,它接收用户输入的指令,让后将指令送入到内核中去执行。
shell的功能:
- 相当于解释器,将用户命令解释给内核,然后内核进行执行,最后将执行结果返还给用户。
- shell也是一种高级程序设计语言,通常用于编写脚本以实现批量化的重复工作,提高工作的效率与稳定。
范例:查看系统所支持的shell
cat /etc/shells
范例:查看当前所使用的shell
echo $SHELL
1.5 设置主机名
设置主机名的方式有两种:
- 设置临时生效的主机名,系统关机重启后不会生效
- 主机名持久生效,将主机名写入到配置文件中
范例:临时设置主机名
#hostname命令可以查看主机名,加上选项-I可以查看ip地址,后面跟一串字符串可临时更改主机名
范例:主机名持久生效
放法一:将主机名写入到/etc/hostname的文件中
方法二:通过命令实现
hostnamectl set-hostname USERNAME
设置主机名的注意事项:
- 修改hostname 需要root权限
- 主机名不支持使用下划线,但支持横线,可使用字母,横线或数字组合
1.6 命令提示符
查看当前的命令提示符格式:
echo $PS1
范例:临时修改主机名
centos系列:
PS1=\[\e[1;31m\][\u@\h \W]\$\[\e[0m\]
ubuntu系列:
PS1="\[\e[1;33m\][\u@\h \W]\\$\[\e[0m\]"
#说明:
1表示高亮显示
31表示红色,可以设置30-37
范例:修改命令提示符持久生效
echo "PS1=\[\e[1;31m\][\u@\h \W]\$\[\e[0m\]" > /etc/profile.d/env.sh
source /etc/profile.d/env.sh
.bashrc 仅对当前用户生效
/etc/bashrc 对所有用户生效
/etc/profile 对所有用户生效
/etc/profile.d/xxx.sh 对所有用户生效
2 常用命令
2.1 命令分类
在Linux中的命令可分为两类:
- 内部命令:由shell自带的,用户登陆后自动加载并常驻内存中
- 外部命令:在文件系统路径下有对应的可执行程序文件,当执行命令时才会从磁盘加载到内存中,执行完毕后有从内存中删除
区分命令类型的方式:
type
常用选项:
-a #列出所有,有可能是内部命令的同时,又是外部命令
说明:
外部命令通过type进行判断时会给出该命令的程序文件的路径,反之就是内部命令。
范例:判断命令类型
管理内部命令:
enable
范例:
查看所有的内部命令
enable
禁用内部命令echo
enable -n echo
查看所有被禁用的内部命令
enable -
启用内部命令echo
enable echo
2.2 给命令设置别名
对于经常执行的比较长的命令,可以将其定义成较短的别名,以方便执行。
alias
作用:查看别名,定义别名
范例:将进入网卡文件目录的命令设置成cdnet
alias cdnet="cd /etc/sysconfig/network-scripts/"
范例:设置扫描磁盘的命令别名****
alias scandisk="echo - - - > /sys/class/scsi_host/host0/scan;\
echo - - - > /sys/class/scsi_host/host1/scan;echo - - - > /sys/class/scsi_host/host2/scan"
在命令行设置的别名都是临时生效的,下次关机重启后别名就没有了,要想别名永久生效需要将设置别名的命令写到配置文件中,然后重新加载配置文件。
.bashrc 仅对当前用户生效
/etc/bashrc 对所有用户生效
/etc/profile 对所有用户生效
/etc/profile.d/xxx.sh 对所有用户生效
重新加载配置文件:
方法一:
source 配置文件
方法二:
. 配置文件
范例:设置别名永久生效
echo 'alias cdnet="cd /etc/sysconfig/network-scripts/"' >> /etc/bashrc
source /etc/bashrc
2.3 hash缓存机制
由于外部命令在执行过程中每次都需要去PATH路径中找命令的程序文件,在工作中同样的命令需要执行多次,每次都去找,这样增加了磁盘的io性能。所以通过hash缓存将执行过的命令路径记录到缓存中以提升命令的执行效率。
管理hash缓存:
hash
常用选项:
-r #删除所有hash缓存
-d CMD #删除指定CMD的hash缓存
PATH变量:
用于存放命令的路径,查看PATH的值
echo $PATH
2.4 查看命令路径
which
作用:查找并显示给定命令的绝对路径
whereis
作用:查找二进制程序、代码等相关文件路径
范例:
2.5 查看硬件信息
- 查看CPU信息:
方式一:
lscpu
方式二:
cat /etc/cpuinfo
- 查看内存信息:
方式一:
free
常用选项:
-h #自动换算单位为kb M G
方式二:
cat /etc/meminfo
范例:
内存信息说明:
total #系统总的可用物理内存大小
used #已被使用的物理内存大小
free #还有多少物理内存可用
shared #被共享使用的物理内存大小
buff/cache #被 buffer 和 cache 使用的物理内存大小
available #还可以被 应用程序 使用的物理内存大小
- 查看硬盘和分区情况
lsblk
作用:查看硬盘分区情况
df
作用:查看硬盘使用情况
常用选项:
-h #自动换算单位为kb M G
范例:
2.6 查看系统信息
- 查看系统架构
方式一:
arch
方式二:
uname -
范例:
- 查看系统内核版本
uname -
范例:
- 查看操作系统发行版本
通用命令:
cat /etc/os-release
rocky/centos/redhat系列:
cat /etc/redhat-release
ubuntu系列:
cat /etc/lsb-release
国产麒麟:
cat /etc/.kyinfo
国产统信:
cat /etc/os-version
2.7 时间和日期
Linux的两种时钟:
- 系统时钟:Linux内核通过CPU的工作频率进行
- 硬件时钟:主板
date命令
作用:查看或设置时间
使用范例:
date +%F_%T #说明:+表示以特定格式显示时间,%F表示年-月-日,%T表示时:分:秒
date +%Y-%m-%d_%H:%M:%S #说明:%Y表示年,%m表示月,%d表示日,%H表示时,%M表示分,%S表示秒
date -s "年-月-日 时:分:秒" #设置系统时间
timedatectl命令
作用:查看或设置时区
使用范例:
timedatectl list-timezones #列出所有的时区
timedatectl set-timezone Asia/Shanghai #设置时区为Asia/Shanghai
范例:
2.8 关机和重启
关机:
方式一:
poweroff
方式二:
shutdown -h now #不加now会在一分钟后关机
shutdown -c #取消关机
重启:
方式一:
reboot
方式二:
shutdown -r now #不加now会在一分钟后重启
shutdown -c #取消重启
2.9 用户登陆信息
- 用户id身份信息
id #查看当前用户
id USER #查看指定的USER用户
- 当前用户身份
whoami
- 已经登陆的用户信息
who
- 已经登陆的用户具体信息
2.10 文件目录相关
- 列出目录内容
ls
常用选项:
-a #列出所有内容,包括隐藏文件(以点开头的文件)
-l #显示详细信息
-h #计算文件大小进行单位换算
范例:
- 进入目录
cd
常用范例:
cd .. #回到上级目录
cd - #回到上次工作目录
cd . #当前目录(这个点表示当前目录,后面其它命令会常用到)
- 查看当前工作目录
pwd
- 查看文件内容
cat
常用选项:
-n #显示行号(包括空行)
-b #显示行号(不包括空行)
-A #显示结尾的标记$
范例:
- 创建文件
touch
- 创建目录
mkdir
常用选项:
-p #递归创建
2.11 命令行扩展
- 命令太长使用 \ 进行分行
- 执行多条命令使用 ; 将命令分隔
- 生成数字或字母序列用 {}
2.12 历史命令
在Linux中,每个用户每次执行的命令都会记录到自己家目录中的~/.bash_history文件中,可以通过命令history进行管理
history命令常用选项:
-c #清空历史命令
调用历史命令
!历史命令编号
范例:实现历史命令的定制化格式:
相关环境变量说明:
HISTTIMEFORMAT="%F %T `whoami` " #显示时间和用户
HISTCONTROL=ignoredups #忽略重复的命令(连续且相同为重复)
HISTCONTROL=ignorespace #忽略所有以空白开头的命令
HISTCONTROL=ignoreboth #相当于ignoredups与ignorespace的组合
实现:
echo -e 'export HISTTIMEFORMAT="%F %T `whoami` "\nexport HISTCONTROL=ignoreboth' >> ~/.profile
2.13 命令行快捷键
ctrl+a #光标跳转到命令行首
ctrl+e #光标跳转到命令行尾
ctrl+c #终止程序或命令
ctrl+u #删除当前光标之前的内容
ctrl+k #删除当前光标之后的内容
!$ #调用前一个命令的最后一个参数
!^ #调用前一个命令的第一个参数
!* #调用前一个命令的所有参数
2.14 登陆提示
登陆前的提示:
登陆前提示的内容被编辑在文件:
/etc/issue
登陆后的提示:
登陆后提示的内容被编辑在:
/etc/motd
3 会话管理
会话管理最常用的一个功能就是将会话与程序进行绑定与解绑。通过ssh远程连接Linux后,Linux会生成一个ssh会话进程,我们所有的操作都是在该会话进程下进行的,如果将这个会话关闭(比如直接将xshell连接上的伪终端窗口关闭),就会导致所有在该会话进程下的其他所有进程停止工作。如果工作中需要执行某个重要的程序(例如数据库的备份操作),该程序又可能需要执行很久,那么就可以使用会话管理工具将会话与进程解绑。
3.1 pstree进程树
安装pstree命令:
ubuntu:
apt-get - install psmisc
rocky:
yum -y install psmisc
常用选项:
-p #显示进程
范例:
3.2 screen
安装screen:
ubuntu:
apt update && apt install -y screen
centos:
yum install -y screen
screen常见用法:
screen -S SESSION #创建新会话
screen -x SESSION #加入会话
screen -ls #列出所有会话
Ctrl+a,d #剥离当前会话
exit #退出并关闭会话
3.3 tmux
安装tmux:
ubuntu:
apt update && apt install -y tmux
centos:
yum install -y tmux
tmux常见用法:
tmux new -s <session-name> #创建新会话
tmux attach -t <session-name> #加入会话
tmux ls #列出所有会话
tmux detach #剥离会话
tmux kill-session -t <session-name> #退出并关闭会话
tmux的窗格管理:
首先输入tmux命令
上下分窗格
ctrl+b,"
左右分窗格
ctrl+b,%
窗格快捷键
ctrl+b,; #光标切换到上一个窗格
ctrl+b,o #光标切换到下一个窗格
ctrl+b,{ #光标切换到左一个窗格
ctrl+b,} #光标切换到右一个窗格
ctrl+b,x #关闭当前窗格
ctrl+b,z #当前窗格全屏显示,再按一次会变回原来的模样
4 输出格式化
4.1 echo
功能:显示字符,echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后换行。
echo的常见选项:
-n #输出完成后不换行
-e #转义特定的字符
使用echo -e给字符串上色:
常用格式:
"\033[1;字体颜色;特效m字符串\033[0m"
#1表示加粗
#字体颜色范围: 30--37
范例:
echo -e "\e[1;31mhello linux\e[0m"
4.2 printf
后面结合awk学习
5 Linux帮助
5.1 命令帮助
- 查看命令的基本作用
whatis
- 内部命令详细帮助
help CMD
- 外部命令详细帮助
CMD --help
- 命令手册
man CMD
quit #退出man手册
- info手册(很少用)
info
5.2 软件帮助
- 安装好的软件在系统中一般会提供帮助文档
软件常见帮助文档路径:
/usr/share/doc
/usr/share/man
- 官方网站中提供的在线帮助文档
例如:
nginx的官方文档:
https://nginx.org/en/docs/
tomcat的官方文档:
https://tomcat.apache.org/tomcat-11.0-doc/index.html
- 相关技术网站搜索帮助
5.3 TLDR(了解)
安装tldr(注意:由于TLDR项目需要从国外的GitHub网站上下载,所以没有vpn极大概率会失败)
apt install -y python3-pip
echo "185.199.109.133 raw.githubusercontent.com" >> /etc/hosts
pip3 install tldr