第一章 简单使用linux
1.1 Linux的组成
1.Linux内核:内核是系统的核心,是运行程序和管理 像磁盘和打印机等硬件设备的核心程序。
2.文件系统: 文件存放在磁盘等存储设备上的组织方法。Linux能支持多种目前浒的文件系统,如
ext4、FAT、VFAT、ISO9660、NFS、SMB等。
3.Shell:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。
应用程序:包括文本编辑器、编程语言、X Window、办公套件、Internet工具、数据库等。
Linux的操作界面常称为Shell,Shell是操作系统提供给用户使用的界面(图形、字符),它提供了用户
与内核进行交互操作的一种接口。当用户发出指令(命令或鼠标操作),先将这些指令发送给Shell,由
Shell将用户的指令翻译后传送给内核,再由内核来控制硬件的工作。然后内核将硬件的工作情况发送给
Shell,并由Shell返回硬件的工作信息和情况。
Shell的分类:
图形界面的Shell :KDE、GNOME
字符界面的Shell:bash等
(1)查看当前linux的发行版信息
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 8.3.2011
(2)查看内核版本
[root@localhost ~]# uname -r
4.18.0-240.el8.x86_64
Linux的内核版本号经历了三种不同的命名方案:
1.0~2.6之前的版本:A.B.C
A–有大幅度变动的主版本号;
B–有一些重大修改的次版本号
C–是指有轻微修订的修正号,C为奇数开发版,偶数是稳定版。
2.6.0.0~2.6.39.4版本:A.B.C.D
A和B–依次固定为2和6;
C–是内核的版本;
D–安全补丁号。
3.0版本开始:X.A.B
X–主版本号,目前有3或4;
A–内核的版本,B–安全补丁。
从本版本开始不再使用偶数代表稳定版,奇数代表开发版这样的命名方式
mainline–主线版本(代表目前主力在做的版本或曰开发版)
stabled–稳定版
longterm–长期支持版
EOL (End of Life)–已停止技术支持的旧版本。
(3)查看shell的类型
方法1:cat /etc/shells
[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
方法2:chsh -l
[root@localhost ~]# chsh -l
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
[root@localhost ~]#
(4)查看当前默认的shell
`[root@localhost ~]# echo $SHELL
/bin/bash
(5)Shell提示符:#和$
对于普通用户,Base shell 默认的提示符是美元符号 $ ;
对于超级用户(root 用户),Bash Shell 默认的提示符是井号 # 。
普通用户登录: [当前登录用户@主机名 当前工作目录 ] $
root用户登录: [root@主机名 当前工作目录 ] # (6)使用命令重启和关闭linux操作系统:
重启: reboot , shutdown -r now
关机: shutdown -h now , poweroff
(6)使用命令重启和关闭linux操作系统:
重启: reboot , shutdown -r now
关机: shutdown -h now , poweroff shutdown -r +30 ‘the system will reboot’ 再过30分钟之后系统会重启,并显示后面的消息给所
有在线用户
(7)查看网卡信息以及获取ip地址
#获取ip地址 [root@localhost ~]# dhclient #如果提示没有该命令,则需要先装包才能使用,可使用nmcli命令获 取地址
[root@localhost ~]# nmcli con up ens160
#查看ip地址 [root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:53:e2:2c brd ff:ff:ff:ff:ff:ff
inet 192.168.168.128/24 brd 192.168.168.255 scope global dynamic noprefixroute ens160
valid_lft 1284sec preferred_lft 1284sec
inet6 fe80::1d40:7cea:e3be:32d9/64 scope link noprefixroute
valid_lft forever preferred_lft forever
#注:lo网卡是环回网卡,主要用来本地测试;ens160才是我们远程连接的网卡。
1.2 远程连接Linux服务器
远程连接linux服务器的方式:以显示的类型来分类,可以分为字符界面和图形界面两种。字符界面软件
有SecureCRT、PUTTY、xshell、mobaxterm等;图形界面有Xmanager、Xdmcp和VNC软件等。
1.2.1Xshell远程连接Linux
远程连接linux服务器的方式:以显示的类型来分类,可以分为字符界面和图形界面两种。字符界面软件
有SecureCRT、PUTTY、xshell、mobaxterm等;图形界面有Xmanager、Xdmcp和VNC软件等。
(1)双击桌面Xshell 图标,启动Xshell程序。
在该窗口手动输入 ssh root@linux
主机IP地址,输入回车键,然后在弹出的输入密码的提示窗口中输
入你的root用户的密码,即可用root用户登录成功。
在该窗口手动输入 ssh 普通用户名@linux主机IP地址
,输入回车键,然后在弹出的输入密码的提示窗口
中输入你的普通用户的密码,即可用普通用户登录成功。
1.2.2 使用MobaXterm远程连接Linux
1.3 通过远程软件操控服务器
远程连接成功如下图所示:
(1)切换到你自己在安装系统时添加的普通用户
[root@localhost ~]# su - centos
Last login: Mon Jun 6 15:15:20 CST 2022 on pts/0
[centos@localhost ~]$
#输入exit退出 [centos@localhost ~]$ exit
logout
[root@localhost ~]#
#查看当前登录的用户
[root@localhost ~]# whoami
root
(2)修改主机名,需要重新远程连接才生效
[root@localhost ~]# hostname server #临时修改,重启linux系统之后失效
[root@localhost ~]# hostnamectl set-hostname server #永久生效,修改的是文件内容。重启linux系统后依旧生效
#查看主机名配置文件
[root@localhost ~]# cat /etc/hostname
server
(3)查看当前的工作目录: pwd
[root@localhost ~]# pwd
/root
[root@localhost ~]# su - centos
Last login: Mon Jun 6 15:16:56 CST 2022 on pts/0
[centos@server ~]$ pwd
/home/centos
注意:windows和linux系统的目录路径表示的不同
(4)更改当前的工作目录,即切换目录
· 绝对路径(以/开始的路径)
· 相对路径(不是以/开始的路径)
[root@localhost ~]# cd /
[root@localhost /]# cd - 注:该操作会让你回到上一次切换的目录下
/root
[root@localhost ~]#
[root@localhost /]# cd /home
[root@localhost home]# cd /home/centos
[root@localhost centos]# cd ~ 注:~代表当前用户的家目录,当前用户为root,则代表为 root用户的家目录
[root@localhost ~]# cd .. 注:..代表当前工作目录的上一级目录
[root@localhost /]# cd . 注:.代表当前工作
(5)修改密码
[root@localhost ~]# passwd
Changing password for user root.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd centos
Changing password for user centos.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd -d centos #删除centos用户的密码
分析:普通用户和root用户修改密码的相同点和不同点
普通用户:1、需要输入原密码2、更改密码时不能指定用户名3、需要长于8个字符且不能系统化
1.4重置root密码
rhel8/centos8 重置root密码
方法一:
第1步 重启系统,在下图所示界面按e键
第2步 找到linux这行,末尾空格后 输入 rd.break
然后按ctl+x,进入以下界面:
然后输入
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
如下图:
前面步骤完成后,进入修改密码
注意:写入新密码时,页面不会显示你输入的数字(如下图)
然后输入:
touch /.autorelabel
看下图:
更改密码后要输入两次“exit”
之后自动进行登录,耗时较久,耐心等待。
方法二:
与方法一类似,但是在第二步不一样。
在进入以下页面后,将下图中“ro”改为“rw”,然后在末尾添加“init=/bin/sh”
如下图:
然后输入两行代码,如下图:
后面的方法一致。
第二章 linux中执行命令
2.1 命令格式
命令格式: 主命令 选项 参数(操作对象)
命令分为两类:
内置命令(builtin):由shell程序自带的命令
外部命令:有独立的可执行程序文件,文件名即命令名
选项:指定命令的运行特性,指明要运行命令中的哪一个功能代码。
短选项:例如:-l,-d,如果同一命令同时使用多个短选项,多数可合并。【注:有些命令的选项没有-】
长选项:例如–help,–human-readable
参数:命令的作用对象,即命令对什么生效。
不同的命令的参数不同
有些选项可以带参数,有些选项可以不带参数
有些命令可同时带多个参数,多个参数之间以空白字符分隔
终止当前的命令:
按【Ctrl+C】键可中断正在执行的命令
两种补全:
补全命令:输入命令关键字的前几个字符后,按Tab键,可实现命令自动补全
补全文件名和目录名:输入文件的前几个字符后,按tab键可自动补全
[root@localhost ~]# passwd -d centos
[root@localhost ~]# cat /etc/redhat-release
[root@localhost ~]# uname -r
4.18.0-240.el8.x86_64
查看bash内部命令帮助
[root@node13 ~]# help cd
命令 --help
[root@node13 ~]# cat — —help
示例如下:cat [OPTION]... [FILE]... 表明cat后面可以加上多个可选的选项以及多个可选的文件参数
下面是对于命令的语法的一些符号的说明:
[] :表示的是可选
...: 表示的可以存在多个参数
| : 表示是可选的
<>: 必填
{}:表示作为一个整体存在的
man用来提供在线帮助,使用权限是所有用户。使用man命令可以调阅其中的帮助信息,非常方便
实用
在man命令帮助信息的界面中,所包含的常用操作按键如下:
按键 | 作用 |
---|---|
空格键,PaGe down | 向下翻一页 |
PaGe up,b | 向上翻一页 |
home | 直接前往首页 |
end | 直接前往尾页 |
/ | 向下翻一页 |
空格键,PaGe down | 从上至下搜索某个关键词,如“/linux” |
? | 从下至上搜索某个关键词,如“?linux” |
n | 定位到下一个搜索到的关键词 |
N | 定位到上一个搜索到的关键词 |
q | 退出帮助文档 |
man命令的帮助信息的结构如下:
结构名称 | 代表意义 |
---|---|
NAME | 命令的名称 |
SYNOPSIS | 参数的大致使用方法 |
DESCRIPTION | 介绍说明 |
EXAMPLES | 演示(附带简单说明) |
OVERVIEW | 概述 |
DEFAULTS | 默认的功能 |
OPTIONS | 具体的可用选项(带介绍) |
ENVIRONMENT | 环境变量 |
FILES | 用到的文件 |
SEE ALSO | 相关的资料 |
HISTORY | 维护历史与联系方式 |
man手册的几个部分
区段1:用户指令,查看命令的帮助
区段2:系统调用,查看可被内核调用的函数的帮助
区段3:程序库调用,查看函数和函数库的帮助
区段4:设备,查看特殊文件的帮助(主要是/dev目录下的文件)
区段5:文件格式,查看配置文件的帮助
区段6:游戏,查看游戏的帮助
区段7:杂项,惯例与协议等,例如Linux文件系统、网络协议、ASCII code等等的说明
区段8:系统指令,查看系统管理员可用的命令的帮助
区段9:内核内部指令,查看内核相关文件的帮助
使用如下命令可以知道某个命令在man的哪个区段有相关帮助文档:
[root@node13 ~]# whatis man
man (7) - macros to format man pages
man (1) - an interface to the on-line reference manuals
man (1p) - display system documentation
[root@node13 ~]# man -f man
man (7) - macros to format man pages
man (1) - an interface to the on-line reference manuals
man (1p) - display system documentation
[root@node13 ~]# man 1 man
[root@node13 ~]# man 7 man
info page
info与man的用途其实差不多,都是用来查询命令的用法或者是文件的格式。但是与man page不同的
是,info page则是将文件数据拆成一个一个的段落,每个段落用自己的页面来撰写, 并且在各个页面中
还有类似网页的『超链接』来跳到各不同的页面中,每个独立的页面也被称为一个节点(node)。
不过你要查询的目标数据的说明文件必须要以info的格式来写成才能够使用info的特殊功能(例如超链
接)。 而这个支持info命令的文件默认是放置在/usr/share/info/这个目录当中的。
info page当中可以使用的按键:
快 捷 键 | 作 用 |
---|---|
上箭头 | 向上移动一行 |
下箭头 | 向下移动一行 |
PgUp | 向上翻一页 |
PgDn | 向下翻一页 |
Tab | 在有“*”符号的节点间进行切换 |
回车 | 进入有“*”符号的子页面,查看详细帮助信息 |
u | 进入上一层信息 |
n | 进入下一小节信息 |
p | 回到上一小节信息 |
s或者/ | 在info page中使用关键字搜索 |
? | 查看帮助信息 |
q | 退出 info 信息 |
2.2 date命令
date命令用于显示或设置系统的时间与日期,语法格式为: date [OPTION]... [+FORMAT]
用户只需在强大的date命令后输入以 + 号开头的参数,即可按照指定格式来输出系统的时间或日期,这
样在日常工作时便可以把备份数据的命令与指定格式输出的时间结合到一起。例如,把打包后的文件自
动按照“年-月-日”的格式打包成“backup-2020-9-1.tar.gz”,用户只需要看一眼文件名称就能大概了解到
每个文件的备份时间了。
date命令中常见的参数格式及作用
参数 | 作用 |
---|---|
%Y | 完整年份(例如:2020) |
%m | 月份(1~12) |
%d | 本月中的第几天 |
%H | 小时(00~23) |
%M | 分钟(00~59) |
%j | 今年中的第几天 |
按照默认格式查看当前系统时间的date命令如下所示:
[root@kongd ~]# date
Sat Sep 5 09:13:45 CST 2020
date命令中的参数%j可用来查看今天是当年中的第几天。这个参数能够很好地区分备份时间的新旧,即
数字越大,越靠近当前时间。该参数的使用方式以及显示结果如下所示:
[root@kongd ~]# date "+%j"
306
按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间的date命令如下所示:
[root@kongd ~]# date "+%Y-%m-%d %H:%M:%S"
2020-09-05 09:14:35
将系统的当前时间设置为2020年11月1日8点30分的date命令如下所示:
[root@kongd ~]# date -s "20201101 8:30:00" 或者[root@kongd ~]# date
110108302020
Sun Nov 1 08:30:00 CST 2020
2.4 timedatectl命令
timedatectl命令用于设置系统的时间,英文全称为:“time date control”,语法格式为: timedatectl [OPTIONS...] COMMAND ...
发现电脑时间跟实际不符?如果只差几分钟的话,我们可以直接调整,但如果差几个小时,那么除了调
整当前的时间,还有必要检查下时区了,timedatectl命令中的参数以及作用:
参数 | 作用 |
---|---|
ststus | 显示状态信息 |
list-timezones | 列出已知时区 |
set-timezone | 设置生效时区 |
set-time | 设置系统时间 |
查看系统时间与时区:
[root@kongd ~]# timedatectl status
Local time: Sun 2020-09-06 19:51:22 CST
Universal time: Sun 2020-09-06 11:51:22 UTC
RTC time: Sun 2020-09-06 19:51:21
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
如果您查到的时区不是上海(Asia/Shanghai),可以手动进行设置:
[root@kongd ~]# timedatectl set-timezone Asia/Shanghai
如果时间还是不正确,我们可以手动的修改系统日期:
[root@kongd ~]# timedatectl set-time 2021-05-18
而如果想修改时间的话,也很简单:
[root@kongd ~]# timedatectl set-time 9:30
[root@kongd ~]# date
Tue May 18 09:30:01 CST 2021