指令是 Linux 基础中最为核心的内容,Linux 中的所有操作基本上都是靠指令(或命令)来完成的。
该节需要掌握远程客户端和开关机命令。
可以使用 ssh 命令、SecureCRT 或者 Xshell 进行远程连接,这里以 SecureCRT 为例。
Connect
按钮。New Host Key
的对话框,点击 Accept & Save
,root
,点击 OK
按钮。OK
按钮。[root@vm ~]# logout
在 CRT 中,注销后,按
Enter
键重新登录。
[root@vm ~]# reboot
一分钟后关机
[root@vm ~]# shutdown
特定时间关机
[root@vm ~]# shutdown -h 13:30
取消关机
[root@vm ~]# shutdown -c
立即关机
[root@vm ~]# shutdown now
[root@vm ~]# poweroff
ls → 列出目录中的内容
ls -a
列出目录所有文件,包含以 .
开始的隐藏文件
[root@vm ~]# ls -a
. .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc .tcshrc
ls -A
列出除 .
及 ..
的其它文件
[root@vm ~]# ls -A
anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc .tcshrc
ls -l
以长格式形式列出目录下的非隐藏文件,可以直接使用 ll
代替
[root@vm ~]# ls -l
总用量 4
-rw-------. 1 root root 1225 11月 8 11:12 anaconda-ks.cfg
[root@vm ~]# ll
总用量 4
-rw-------. 1 root root 1225 11月 8 11:12 anaconda-ks.cfg
ls /
列出根目录下的非隐藏文件
[root@vm ~]# ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
bin
:是 Binaries 单词的缩写,这个目录存放着最经常使用的命令。boot
:这里存放的是启动 Linux 时使用的一些核心文件,包括一些链接文件以及镜像文件。dev
:是 Device 单词的缩写,该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。etc
:是 Etcetera 单词的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。home
:普通用户的主目录,在 Linux 中,每个普通用户都有一个自己的目录,类似 Windows 中的 C:\Users\
。lib
、lib64
:是 Library 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。media
:系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。mnt
:是 Mount 单词的缩写,系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱、U盘等。opt
:是 Optional 的缩写,这是给主机额外安装软件所摆放的目录。proc
:是 Processes 的缩写,它是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件root
:该目录为系统管理员,也称作超级权限者的用户主目录。run
:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。sbin
:是 Super User Binaries 的缩写,这里存放的是系统管理员使用的系统管理程序。srv
: 是 Server 单词的缩写,该目录存放一些服务启动之后需要提取的数据。sys
:是 System 单词的的缩写,该目录是系统文件目录。tmp
:是 Temporary 的缩写这个目录是用来存放一些临时文件的。usr
:是 Unix Shared Resources 的缩写,应用程序默认安装目录,类似于 windows 下的 C:\Program Files
目录。var
:是 Bariable 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。ll /
以长格式形式列出根目录下的非隐藏文件
[root@vm ~]# ls /
[root@vm ~]# ll /
总用量 16
lrwxrwxrwx. 1 root root 7 11月 8 11:09 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 11月 8 11:28 boot
drwxr-xr-x. 20 root root 3220 11月 8 15:30 dev
drwxr-xr-x. 74 root root 8192 11月 8 15:30 etc
drwxr-xr-x. 2 root root 6 4月 11 2018 home
lrwxrwxrwx. 1 root root 7 11月 8 11:09 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 11月 8 11:09 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 2 root root 6 4月 11 2018 opt
dr-xr-xr-x. 112 root root 0 11月 8 15:30 proc
dr-xr-x---. 4 root root 137 11月 8 17:33 root
drwxr-xr-x. 24 root root 720 11月 8 15:30 run
lrwxrwxrwx. 1 root root 8 11月 8 11:09 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 11月 8 15:30 sys
drwxrwxrwt. 8 root root 211 11月 8 15:30 tmp
drwxr-xr-x. 13 root root 155 11月 8 11:09 usr
drwxr-xr-x. 19 root root 267 11月 8 11:27 var
这里是以长列表格式列出目录及文件的信息,就 etc
目录为例
drwxr-xr-x. 74 root root 8192 11月 8 15:30 etc
d
代表的是文件类型,其他的还包括:-
普通文件,d
目录,l
链接文件,p
管理文件,b
块设备文件,c
字符设备文件,s
套接字文件rwxr-xr-x.
,其中 r
代表读,w
代表写,x
代表执行,-
代表无,.
代表 SELinux 的安全标签。排除符号 .
后,可将九个字符每三个分一组,第一组为该文件的所属人(Owner),第二组为该文件的所属组(Group),第三组为该文件的其他人(Other),即如下所示: rwx r-x r-x
Owner Group Other
ll -h /
以长格式形式列出根目录下的非隐藏文件(大小采用好识别的方式)
[root@vm ~]# ll -h /
总用量 16K
lrwxrwxrwx. 1 root root 7 11月 8 11:09 bin -> usr/bin
dr-xr-xr-x. 5 root root 4.0K 11月 8 11:28 boot
drwxr-xr-x. 20 root root 3.2K 11月 9 16:48 dev
drwxr-xr-x. 74 root root 8.0K 11月 9 16:48 etc
cd → 切换当前目录至特定的目录
指令 | 解释 |
---|---|
cd / |
进入根目录 |
cd ~ 或者 cd |
进入主目录 |
cd - |
回到上次的目录 |
[root@vm ~]# cd /
[root@vm /]# cd
[root@vm ~]# cd -
/
[root@vm /]# cd
[root@vm ~]#
/
写起,例如: /usr/share/doc
这个目录。/
写起,一般是相对于当前目录而言,例如当前目录是 /usr/share/doc
,需要切换到 /usr/share/man
底下时,可以写成: cd ../man
,其中 ../
就是相对当前目录而言的上级目录pwd → 命令用于查看当前工作目录路径
[root@vm ~]# pwd
/root
mkdir → 命令用于创建文件夹
[root@vm ~]# mkdir src
[root@vm ~]# mkdir target
[root@vm ~]# ls
anaconda-ks.cfg src target
[root@vm ~]# mkdir -p src/main/java
[root@vm ~]# mkdir -p src/test/java
[root@vm ~]# mkdir -p src/main/resources
rmdir → 命令用于删除空文件夹
[root@vm ~]# rmdir target/
[root@vm ~]# ls
anaconda-ks.cfg src
[root@vm ~]# rmdir src
rmdir: 删除 "src" 失败: 目录非空
[root@vm ~]#
cp → 拷贝文件和目录
[root@vm ~]# mkdir target
[root@vm ~]# ls
anaconda-ks.cfg src target
[root@vm ~]# cp anaconda-ks.cfg target/
[root@vm ~]# ls target/
anaconda-ks.cfg
复制多个目录 cp -r
[root@vm ~]# cp -r src/test/ src/main/ target/
[root@vm ~]# ls target/
anaconda-ks.cfg main test
mv →
[root@vm ~]# ls
anaconda-ks.cfg src target
[root@vm ~]# mv anaconda-ks.cfg src/main/resources/
[root@vm ~]# ls
src target
[root@vm ~]# ls src/main/resources/
anaconda-ks.cfg
[root@vm ~]#
rm →
-r
表示是否递归删除,-f
表示是否执行强制删除,不经过询问。
[root@vm ~]# rm anaconda-ks.cfg
rm:是否删除普通文件 "anaconda-ks.cfg"?yes
[root@vm ~]# ls
src target
[root@vm ~]# mkdir -p a/b
[root@vm ~]# ls
a anaconda-ks.cfg src target
[root@vm ~]# rm -r a
rm:是否进入目录"a"? yes
rm:是否删除目录 "a/b"?yes
rm:是否删除目录 "a"?yes
[root@vm ~]# rm -rf a
[root@vm ~]# ls
anaconda-ks.cfg src target
[root@vm ~]#
rm -rf /
该该命令将会引发无法逆转的后果,请慎用!
touch → 创建空文件
[root@vm ~]# touch a.txt
[root@vm ~]# ls
anaconda-ks.cfg a.txt src target
echo → 命令的功能是在显示器上显示一段文字
[root@vm ~]# echo hello
hello
[root@vm ~]# echo hello > a.txt
[root@vm ~]#
cat → 由第一行开始显示文件内容
[root@vm ~]# cat a.txt
hello
输出重定向 >
(覆写)和 >>
(追加)
[root@vm ~]# echo hello > a.txt
[root@vm ~]# cat a.txt
hello
[root@vm ~]# echo hello >> a.txt
[root@vm ~]# cat a.txt
hello
hello
[root@vm ~]# echo hi > a.txt
[root@vm ~]# cat a.txt
hi
[root@vm ~]#
tac → 从最后一行开始显示
[root@vm ~]# echo centos7 >> a.txt
[root@vm ~]# cat a.txt
hi
centos7
[root@vm ~]# tac a.txt
centos7
hi
nl → 查看文件内容并在左侧显示行号
[root@vm ~]# nl a.txt
1 hi
2 centos7
[root@vm ~]#
more → 分页的显示文件内容
[root@vm ~]# more anaconda-ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
graphical
--More--(36%)
按 Enter
键向下滚动一行,按 空格
键向下翻一页,按 q
键退出
less → 分页的显示文件内容,可以前后翻页
[root@vm ~]# less anaconda-ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
按 Enter
键向下滚动一行,按 空格
键向下翻一页,
按 PgUp
键向上翻动一页,按 PgDn
键向下翻动一页,按 q
键退出
head → 只看首十行
[root@vm ~]# head anaconda-ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
[root@vm ~]# head -n 3 anaconda-ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
[root@vm ~]#
tail → 只看尾十行
[root@vm ~]# tail anaconda-ks.cfg
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
[root@vm ~]# tail -n 4 anaconda-ks.cfg
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
[root@vm ~]#
which → 查看命令手册
[root@vm ~]# which cd
/usr/bin/cd
[root@vm ~]# which cat
/usr/bin/cat
[root@vm ~]#
man → 查看命令手册
[root@vm ~]# man cp
CP(1) User Commands CP(1)
NAME
cp - copy files and directories
SYNOPSIS
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE..
Manual page cp(1) line i (press h for help or q to quit)
workspace
的目录software/apache
, software/java
/etc/yum.repos.d/
下的文件信息,并将结果重定向到 workspace/repos
/etc/yum.repos.d/CentOS-Base.repo
拷贝到 workspace
中,并重命名为c.repo
head
, tail
和输出重定向从 /root/workspace/c.repo
文件中得到第一段有效文本信息,并将结果保存到 workspace/base.repo
中,结果示例如下:[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
tar 命令是 Linux 中常用的归档命令,可以将多个文件归档到一个文件中,也可以从归档文件中提取这些文件。
归档方式有哪些?
.gz
结尾,最常用的压缩方式.bz2
结尾,压缩能力更强(压缩后的文件更小),使用较多.Z
结尾,使用较少.zip
结尾,压缩能力较低,跨平台做的较好,使用较少.rar
结尾,压缩能力较低,使用较少tar 命令的[选项] 参数
-c
建立打包文件-f
指定打包文件名称,tar 命令必须要有该选项-t
查看打包文件中包含的文件名-r
增加文件到打包文件中-v
显示过程-x
解包-z
通过 gzip 过滤归档-Z
通过 compress 过滤归档-C
该选项用于解压缩,若要解压到指定目录,可通过该选项指定tar -cf
压缩多个文件,一般地,文件名建议以 .tar
结尾
[root@vm ~]# tar -cf archive.tar a.txt anaconda-ks.cfg
[root@vm ~]# ls
anaconda-ks.cfg archive.tar a.txt src target
tar -tf
查看压缩包里的文件
[root@vm ~]# tar -tf archive.tar
a.txt
anaconda-ks.cfg
tar -rf
向压缩包里追加文件
[root@vm ~]# tar -rf archive.tar target/
[root@vm ~]# tar -tf archive.tar
a.txt
anaconda-ks.cfg
target/
target/main/
[root@vm ~]# tar -rf archive.tar src/
[root@vm ~]# tar -tf archive.tar
a.txt
anaconda-ks.cfg
target/
target/main/
src/
src/main/
src/main/java/
src/main/resources/
src/main/resources/anaconda-ks.cfg
src/test/
src/test/java/
tar -xf
将压缩包进行解压缩
[root@vm ~]# rm -rf a.txt anaconda-ks.cfg src/ target/
[root@vm ~]# ls
archive.tar
[root@vm ~]# tar -xf archive.tar
[root@vm ~]# ls
anaconda-ks.cfg archive.tar a.txt src target
[root@vm ~]#
tar -zcvf
将所有的文件压缩为 gzip 格式的压缩包,一般地,文件名建议以 .tar.gz
或 .gz
结尾
[root@vm ~]# tar -zcvf archive.tar.gz *
anaconda-ks.cfg
archive.tar
a.txt
src/
src/main/
src/main/java/
src/main/resources/
src/main/resources/anaconda-ks.cfg
src/test/
src/test/java/
target/
target/main/
[root@vm ~]# ls
anaconda-ks.cfg archive.tar archive.tar.gz a.txt src target
tar -zxvf
将指定的文件按 gzip 的格式解压缩
[root@vm ~]# rm -rf anaconda-ks.cfg a.txt src/ target/
[root@vm ~]# ls
archive.tar archive.tar.gz
[root@vm ~]# tar -zxvf archive.tar.gz
anaconda-ks.cfg
archive.tar
a.txt
src/
src/main/
src/main/java/
src/main/resources/
src/main/resources/anaconda-ks.cfg
src/test/
src/test/java/
target/
target/main/
[root@vm ~]# ls
anaconda-ks.cfg archive.tar archive.tar.gz a.txt src target
tar -C
将压缩文件解压缩到指定的目录下
[root@vm ~]# rm -rf anaconda-ks.cfg a.txt src/ target/
[root@vm ~]# mkdir workspace
[root@vm ~]# ls
archive.tar archive.tar.gz workspace
[root@vm ~]# tar -zxf archive.tar.gz -C workspace/
[root@vm ~]# ls workspace/
anaconda-ks.cfg archive.tar a.txt src target
[root@vm ~]# tar -ztf archive.tar.gz
anaconda-ks.cfg
archive.tar
a.txt
src/
src/main/
src/main/java/
src/main/resources/
src/main/resources/anaconda-ks.cfg
src/test/
src/test/java/
target/
target/main/
[root@vm ~]#
curl -O
可用于下载某个文件
[root@vm ~]# rm -rf openjdk-8u42-b03-linux-x64-14_jul_2022.tar.gz
[root@vm ~]# curl -O https://download.java.net/openjdk/jdk8u42/ri/openjdk-8u42-b03-linux-x64-14_jul_2022.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 166M 100 166M 0 0 5563k 0 0:00:30 0:00:30 --:--:-- 6754k
[root@vm ~]# ll -h
总用量 167M
-rw-r--r--. 1 root root 10K 11月 9 17:12 archive.tar
-rw-r--r--. 1 root root 1.2K 11月 9 17:19 archive.tar.gz
-rw-r--r--. 1 root root 167M 11月 9 17:48 openjdk-8u42-b03-linux-x64-14_jul_2022.tar.gz
drwxr-xr-x. 2 root root 6 11月 9 17:36 workspace
[root@vm ~]# mkdir program
[root@vm ~]# tar -zxf openjdk-8u42-b03-linux-x64-14_jul_2022.tar.gz -C program/
[root@vm ~]# ls program/
java-se-8u42-ri
[root@vm ~]# export PATH=$PATH:/root/program/java-se-8u42-ri/bin/
[root@vm ~]# java -version
openjdk version "1.8.0_42"
OpenJDK Runtime Environment (build 1.8.0_42-b03)
OpenJDK 64-Bit Server VM (build 25.40-b25, mixed mode)
[root@vm ~]#
rpm(英文全拼:redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序
rpm 命令的[选项] 参数
-q
执行查询或者验证包
-a
查询所有包
-e
擦除指定包
-i
安装指定包
-v
显示指令执行过程
-h
安装时列出标记
--nodeps
不验证包的相互关联性
--nopgp
不验证包的 GPG 的签名认证
安装离线软件
这里以著名的 net-tools
工具为例。
curl -O
下载对应的安装包[root@vm ~]# curl -O https://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 305k 100 305k 0 0 1658k 0 --:--:-- --:--:-- --:--:-- 1652k
[root@vm ~]# ls
archive.tar net-tools-2.0-0.25.20131004git.el7.x86_64.rpm program
archive.tar.gz openjdk-8u42-b03-linux-x64-14_jul_2022.tar.gz workspace
[root@vm ~]#
[root@vm ~]# rpm -ivh net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
警告:net-tools-2.0-0.25.20131004git.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:net-tools-2.0-0.25.20131004git.el################################# [100%]
[root@vm ~]# rpm -e net-tools
[root@vm ~]# rpm -q net-tools
未安装软件包 net-tools
[root@vm ~]# rpm -ivh https://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
[1] 1952
获取https://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/net-tools-2.0-0.25.20131004git.el7.x86_64.rpm?spm=a2c6h.13651111.0.0.fa4c2f701gJQYu
警告:/var/tmp/rpm-tmp.ppMGgB: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:net-tools-2.0-0.25.20131004git.el################################# [100%]
[1]+ 完成 rpm -ivh https://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/net-tools-2.0-0.25.20131004git.el7.x86_64.rpm?spm=a2c6h.13651111.0.0.fa4c2f701gJQYu
[root@vm ~]#
[root@vm ~]# rpm -q net-tools
net-tools-2.0-0.25.20131004git.el7.x86_64
yum( Yellowdog Updater Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum常用命令
列出所有可更新的软件清单命令:yum check-update
更新所有软件命令:yum update
仅安装指定的软件命令:yum install
仅更新指定的软件命令:yum update
列出所有可安裝的软件清单命令:yum list
删除软件包命令:yum remove
查找软件包命令:yum search
根据特征或文件查询软件包提供方:yum provides
清除所有缓存命令:yum clean all
建立新的缓存:yum makecache
在使用 yum 之前,为了方便软件包从国内镜像中下载,可以到 http://mirrors.163.com/.help/centos.html 下载网易的 yum 源,这里附上链接地址:http://mirrors.163.com/.help/CentOS7-Base-163.repo
然后将该文件放置到 /etc/yum.repos.d/
目录下
[root@vm ~]# ls /etc/yum.repos.d/
CentOS7-Base-163.repo CentOS-Debuginfo.repo CentOS-Sources.repo
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo CentOS-x86_64-kernel.repo
[root@vm ~]# yum clean all
已加载插件:fastestmirror
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
正在清理软件源: base extras updates
Cleaning up list of fastest mirrors
[root@vm ~]#
[root@vm ~]#
[root@vm ~]# yum makecache
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
Determining fastest mirrors
* base: mirrors.bfsu.edu.cn
* extras: mirrors.huaweicloud.com
* updates: mirrors.bfsu.edu.cn
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/10): base/7/x86_64/group_gz | 153 kB 00:00:00
(2/10): base/7/x86_64/primary_db | 6.1 MB 00:00:00
(3/10): base/7/x86_64/filelists_db | 7.2 MB 00:00:00
(4/10): base/7/x86_64/other_db | 2.6 MB 00:00:00
(5/10): extras/7/x86_64/filelists_db | 276 kB 00:00:00
(6/10): extras/7/x86_64/other_db | 149 kB 00:00:00
(7/10): extras/7/x86_64/primary_db | 249 kB 00:00:00
(8/10): updates/7/x86_64/filelists_db | 9.6 MB 00:00:00
(9/10): updates/7/x86_64/other_db | 1.2 MB 00:00:00
(10/10): updates/7/x86_64/primary_db | 17 MB 00:00:01
元数据缓存已建立
[root@vm ~]#
[root@vm ~]#
[root@vm ~]# yum search ifconfig
已加载插件:fastestmirror
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
Loading mirror speeds from cached hostfile
* base: mirrors.bfsu.edu.cn
* extras: mirrors.huaweicloud.com
* updates: mirrors.bfsu.edu.cn
==================================== 匹配:ifconfig ====================================
net-tools.x86_64 : Basic networking tools
[root@vm ~]#
[root@vm ~]# yum search rz
已加载插件:fastestmirror
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
Loading mirror speeds from cached hostfile
* base: mirrors.bfsu.edu.cn
* extras: mirrors.huaweicloud.com
* updates: mirrors.bfsu.edu.cn
=================================== N/S matched: rz ====================================
lrzsz.x86_64 : The lrz and lsz modem communications programs
名称和简介匹配 only,使用“search all”试试。
[root@vm ~]# yum -y install lrzsz
Vi 的改进版本,一个程序员文本编辑器,它主要有三种模式
以vim打开一个文件就直接进入一般模式(默认模式)可以使用上下左右移动光标来移动光标,也可以使用删除字符来处理文件内容,也可以使用复制、粘贴来处理文件数据。
指令 | 解释 |
---|---|
[h] |
或 ← |
[j] |
或 ↓ |
[k] |
或 ↑ |
[l] |
或 → |
[H] |
光标移到当前屏幕最上方行的第一个字符 |
[M] |
光标移到当前屏幕中间行的第一个字符 |
[L] |
光标移动到当前屏幕最下方行第一个字符 |
[G] |
移到此文件最后一行 |
n[G] |
移到第n行 |
n[Enter] |
光标下移n行 |
[Ctrl]+[f] |
屏幕向下移动一页 |
[Ctrl]+[b] |
屏幕向上移动一页 |
[0] 或 [Home] |
移动光标所在行的行首 |
[$] 或 [End] |
移到光标所在行的行尾 |
指令 | 解释 |
---|---|
[x] |
向后删除一个字符 |
n[x] |
向后删除n个字符(n为数字) |
[X] |
向前删除一个字符 |
[d][d] |
删除光标所在行 |
n[d][d] |
删除光标所在行以下n行(n为数字,包含当前行在内) |
[d][1][G] |
删除光标所在行到第一行所有数据 |
[d][G] |
删除光标所在行到最后一行 |
[d][$] |
删除光标所在处到同行最后一个字符 |
[d][0] |
删除光标所在处到同行第一个字符 |
指令 | 解释 |
---|---|
[y][y] |
复制光标所在行 |
n[y][y] |
复制光标所在向下n行(n为数字) |
[y][1][G] |
复制光标所在行到第一行所有数据 |
[y][G] |
复制光标所在行到最后一行所有数据 |
[y][$] |
复制光标所在处到同行最后一个字符 |
[y][0] |
复制光标所在处到同行第一个字符 |
[p] |
小写字母 p,将已复制的数据粘贴到光标所在下一行 |
[P] |
大写字母 p,将已复制的数据粘贴到光标所在上一行 |
[u] |
小写字母 u,复原前一个操作(类似于windows中的ctrl+z) |
[ctrl][r] |
恢复上一次撤销的内容(类似于windows中的ctrl+y) |
在一般模式中可以删除、复制、粘贴等,但无法编辑文件内容。按下i、I、o、O、a、A、r、R等任何一个字母后进入编辑模式。并在左下方出现INSERT或REPLACE。该模式下可以输入文件内容。按下返回一般模式。
指令 | 解释 |
---|---|
[i] |
从光标所在处插入 |
[I] |
从所在行第一个非空白字符处插入 |
[a] |
从光标所在下一个字符处插入 |
[A] |
从光标所在行最后一个字符处插入 |
[o] |
在光标所在处下一行插入新的一行 |
[O] |
在光标所在处上一行插入新的一行 |
[s] |
删除光标所在的字符并开始插入 |
[S] |
删除光标所在行并开始插入 |
[r] |
替换光标所在处字符一次 |
[R] |
一直替换光标所在处文字直到按下Esc |
在一般模式当中,输入:/?三个字符中的任何一个按钮,就可以将光标移动到最下面那一行。在这个模式当中,可以提供查询、替换等功能。同时存盘、离开vi、显示行号等等命令都是在此模式进行。例如,:wq即可保存退出。
指令 | 解释 |
---|---|
/word | 向下查找单词“word” |
?word | 向上查找单词“word” |
指令 | 解释 |
---|---|
:s/word1/word2/g |
在当前行将word1替换成word2 |
:%s/word1/word2/g |
在当前文件将word1替换成word2 |
:n1,n2s/word1/word2/g |
在n1到n2行查找word1替换成word2 (n1、n2为数字) |
:1,$s/word1/word2/g |
从第一行到最后一行查找word1替换成word2 |
:1,$s/word1/word2/gc |
同上,在替换前confirm是否替换 |
指令 | 解释 |
---|---|
:set nu |
显示行号 |
:set nonu |
取消显示行号 |
:w |
将文件存盘 |
:w [filename] |
另存为filename |
:r [filename] |
读取filename指定文件中的内容到光标所在的行 |
:n1,n2 w [filename] |
将n1到n2行另存为filename |
:wq |
保存后离开 |
:q! |
不保存,强制离开 |
:wq! |
强制保存退出 |
:! command |
临时切换到命令行模式下执行command命令。 |
例如 :!ls /home
即可在vim当中查看/home下面以ls输出的文件信息。
案例:
/etc/profile
来手动配置 java 的全局环境变量[root@vm ~]# tar -zxf openjdk-8u42-b03-linux-x64-14_jul_2022.tar.gz -C /opt/
[root@vm ~]# vi /etc/profile
[root@vm ~]# source /etc/profile
[root@vm ~]# vi /etc/profile
[root@vm ~]# source /etc/profile
[root@vm ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/java-se-8u42-ri/bin:/root/bin
[root@vm ~]# java -version
openjdk version "1.8.0_42"
OpenJDK Runtime Environment (build 1.8.0_42-b03)
OpenJDK 64-Bit Server VM (build 25.40-b25, mixed mode)
[root@vm ~]#
/etc/profile
文件新增如下:
export JAVA_HOME=/opt/java-se-8u42-ri
PATH=$PATH:$JAVA_HOME/bin
[root@vm ~]# mkdir src
[root@vm ~]# cd src
[root@vm src]# vi Hello.java
[root@vm src]# javac Hello.java
[root@vm src]# ls
Hello.class Hello.java
[root@vm src]# java Hello
Hello World!
[root@vm src]#
yum
来安装 bash-completion
[root@vm ~]# yum -y install bash-completion
[root@vm ~]# tar -zxf node-v16.18.1-linux-x64.tar.gz -C /opt/
[root@vm ~]# vi /etc/profile
[root@vm ~]# source /etc/profile
[root@vm ~]# node -v
v16.18.1
[root@vm ~]# npm install -g cnpm --registry=https://registry.npm.taobao.org
[root@vm ~]# npm install -g cnpm --registry=https://registry.npm.taobao.org
npm WARN deprecated @npmcli/[email protected]: This functionality has been moved to @npmcli/fs
added 360 packages in 13s
11 packages are looking for funding
run `npm fund` for details
[root@vm ~]# npm -v
8.19.2
[root@vm ~]#
/etc/profile
文件新增如下:
PATH=$PATH:/opt/node-v16.18.1-linux-x64/bin
[root@vm ~]# curl -O https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 9283k 100 9283k 0 0 869k 0 0:00:10 0:00:10 --:--:-- 763k
[root@vm ~]# tar -zxf apache-maven-3.6.3-bin.tar.gz -C /opt/
[root@vm ~]# ls /opt/
apache-maven-3.6.3 java-se-8u42-ri node-v16.18.1-linux-x64
[root@vm ~]# vi /etc/profile
[root@vm ~]# source /etc/profile
[root@vm ~]# mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /opt/apache-maven-3.6.3
Java version: 1.8.0_42, vendor: Oracle Corporation, runtime: /opt/java-se-8u42-ri/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"
[root@vm ~]#
/etc/profile
文件新增如下:
export MAVEN_HOME=/opt/apache-maven-3.6.3
PATH=$PATH:$MAVEN_HOME/bin
id → 获取用户和用户组信息
[root@vm ~]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
useradd → 新增一个用户
[root@vm ~]# useradd nano
[root@vm ~]# ls /home/
nano
[root@vm ~]# id nano
uid=1001(nano) gid=1001(nano) 组=1001(nano)
[root@vm ~]#
-d
:指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
[root@vm ~]# useradd -d /home/administrator -m admin
[root@vm ~]# id admin
uid=1002(admin) gid=1002(admin) 组=1002(admin)
[root@vm ~]#
-g
:指定用户的gid(一定要存在)
-G
:指定用户的附加组(一定要存在)
[root@vm ~]# useradd master -g 1002
[root@vm ~]# id master
uid=1003(master) gid=1002(admin) 组=1002(admin)
[root@vm ~]#
[root@vm ~]# useradd admin2022 -G admin
[root@vm ~]# id admin2022
uid=1004(admin2022) gid=1004(admin2022) 组=1004(admin2022),1002(admin)
[root@vm ~]#
-u
:指定用户的 uid
[root@vm ~]# useradd u1006 -u 1006
[root@vm ~]# id u1006
uid=1006(u1006) gid=1006(u1006) 组=1006(u1006)
-s
:指定用户登录的 Shell
[root@vm ~]# useradd u1006 -u 1006
[root@vm ~]# id u1006
uid=1006(u1006) gid=1006(u1006) 组=1006(u1006)
-M
:不创建用户的主目录
[root@vm ~]# useradd nohome -M
[root@vm ~]# id nohome
uid=1008(nohome) gid=1008(nohome) 组=1008(nohome)
[root@vm ~]# ls /home
admin2022 administrator master nano nouser u1006
[root@vm ~]#
passwd → 为账户设置密码
[root@vm ~]# passwd nano
更改用户 nano 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@vm ~]#
--stdin
将上一个命令的输出作为密码输入,一般用于管道符后
[root@vm ~]# echo 123 | passwd --stdin admin2022
更改用户 admin2022 的密码 。
passwd:所有的身份验证令牌已经成功更新。
userdel → 删除账户
[root@vm ~]# userdel nohome
[root@vm ~]# userdel nouser
[root@vm ~]# ls /home/
admin2022 administrator master nano nouser u1006
[root@vm ~]# rm -rf /home/nouser/
[root@vm ~]# ls /home/
admin2022 administrator master nano u1006
-r
:删除用户的时候将其主目录一起删除
[root@vm ~]# userdel -r u1006
[root@vm ~]# ls /home/
admin2022 administrator master nano
[root@vm ~]# userdel nohome
usermod → 修改用户
[root@vm ~]# id admin2022
uid=1004(admin2022) gid=1004(admin2022) 组=1004(admin2022),1002(admin)
root@vm ~]# usermod -s /bin/false admin2022
[root@vm ~]# usermod -g 1002 admin2022
[root@vm ~]# id admin2022
uid=1004(admin2022) gid=1002(admin) 组=1002(admin)
[root@vm ~]# usermod -G admin2022 admin2022
[root@vm ~]# id admin2022
uid=1004(admin2022) gid=1002(admin) 组=1002(admin),1004(admin2022)
groupadd → 新增组
[root@vm ~]# groupadd hr
groupdel → 删除组
[root@vm ~]# groupdel hr
与用户账号有关的系统文件
/etc/passwd
:用户账户信息。文件格式内容如下用户名:口令uid:gid:注释性描述:主目录:登录Shell
/etc/shadow
:安全用户账户信息。用户名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:
用户名
:和 /etc/passwd
里的用户名保持一致
加密口令
:加密之后的用户口令,如果为空,则对应用户没有口令,登录时不需要口令
最后一次修改时间
:计算机元年到到用户最后一次修改口令时的天数,
最小时间间隔
:指的是两次修改口令之间所需的最小天数
最大时间间隔
:指的是口令保持有效的最大天数
警告时间
:指的是从系统开始警告用户到用户密码正式失效之间的天数
不活动时间
:指的是用户没有登录活动但账号仍能保持有效的最大天数
失效时间
:字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
/etc/group
:组账户信息。组名:口令:组标识号:组内用户列表
/etc/gshadow
:安全组账户信息。组名:加密密码:组管理员:组附加用户列表
su → 切换账号
[root@vm ~]#
chown → 更改文件所有者和所属组
[root@vm apache-maven-3.6.3]# ll bin/m2.conf
-rw-r--r--. 1 root root 228 11月 7 2019 m2.conf
[root@vm apache-maven-3.6.3]# chown nano bin/m2.conf
[root@vm apache-maven-3.6.3]# ll bin/m2.conf
-rw-r--r--. 1 nano root 228 11月 7 2019 m2.conf
[root@vm apache-maven-3.6.3]#
[root@vm apache-maven-3.6.3]# ll bin/m2.conf
-rw-r--r--. 1 nano root 228 11月 7 2019 bin/m2.conf
[root@vm apache-maven-3.6.3]# id master
uid=1003(master) gid=1002(admin) 组=1002(admin)
[root@vm apache-maven-3.6.3]# id desc
uid=1005(desc) gid=1006(desc) 组=1006(desc)
[root@vm apache-maven-3.6.3]# chown desc:admin bin/m2.conf
[root@vm apache-maven-3.6.3]# ll bin/m2.conf
-rw-r--r--. 1 desc admin 228 11月 7 2019 bin/m2.conf
[root@vm apache-maven-3.6.3]# ll bin/m2.conf
-rw-r--r--. 1 desc admin 228 11月 7 2019 bin/m2.conf
[root@vm apache-maven-3.6.3]# chown :nano bin/m2.conf
[root@vm apache-maven-3.6.3]# ll bin/m2.conf
-rw-r--r--. 1 desc nano 228 11月 7 2019 bin/m2.conf
[root@vm apache-maven-3.6.3]#
[root@vm apache-maven-3.6.3]# ll -d
drwxr-xr-x. 6 root root 99 11月 11 00:48 .
[root@vm apache-maven-3.6.3]# ll
总用量 36
drwxr-xr-x. 2 root root 97 11月 11 00:48 bin
drwxr-xr-x. 2 root root 76 11月 11 00:48 boot
drwxr-xr-x. 3 root root 63 11月 7 2019 conf
drwxr-xr-x. 4 root root 4096 11月 11 00:48 lib
-rw-r--r--. 1 root root 17504 11月 7 2019 LICENSE
-rw-r--r--. 1 root root 5141 11月 7 2019 NOTICE
-rw-r--r--. 1 root root 2612 11月 7 2019 README.txt
[root@vm apache-maven-3.6.3]# chown -R nano:nano .
[root@vm apache-maven-3.6.3]# ll -d
drwxr-xr-x. 6 nano nano 99 11月 11 00:48 .
[root@vm apache-maven-3.6.3]# ll
总用量 36
drwxr-xr-x. 2 nano nano 97 11月 11 00:48 bin
drwxr-xr-x. 2 nano nano 76 11月 11 00:48 boot
drwxr-xr-x. 3 nano nano 63 11月 7 2019 conf
drwxr-xr-x. 4 nano nano 4096 11月 11 00:48 lib
-rw-r--r--. 1 nano nano 17504 11月 7 2019 LICENSE
-rw-r--r--. 1 nano nano 5141 11月 7 2019 NOTICE
-rw-r--r--. 1 nano nano 2612 11月 7 2019 README.txt
[root@vm apache-maven-3.6.3]#
chgrp → 更改所属组
[root@vm apache-maven-3.6.3]# ll -d bin/
drwxr-xr-x. 2 nano nano 97 11月 11 00:48 bin
[root@vm apache-maven-3.6.3]# chgrp root bin/
[root@vm apache-maven-3.6.3]# ll -d bin/
drwxr-xr-x. 2 nano root 97 11月 11 00:48 bin/
[root@vm apache-maven-3.6.3]# ll -d .
drwxr-xr-x. 6 nano nano 99 11月 11 00:48 .
[root@vm apache-maven-3.6.3]# ll
总用量 36
drwxr-xr-x. 2 nano root 97 11月 11 00:48 bin
drwxr-xr-x. 2 nano nano 76 11月 11 00:48 boot
drwxr-xr-x. 3 nano nano 63 11月 7 2019 conf
drwxr-xr-x. 4 nano nano 4096 11月 11 00:48 lib
-rw-r--r--. 1 nano nano 17504 11月 7 2019 LICENSE
-rw-r--r--. 1 nano nano 5141 11月 7 2019 NOTICE
-rw-r--r--. 1 nano nano 2612 11月 7 2019 README.txt
[root@vm apache-maven-3.6.3]#
[root@vm apache-maven-3.6.3]# chgrp -R root .
[root@vm apache-maven-3.6.3]# ll -d .
drwxr-xr-x. 6 nano root 99 11月 11 00:48 .
[root@vm apache-maven-3.6.3]# ll
总用量 36
drwxr-xr-x. 2 nano root 97 11月 11 00:48 bin
drwxr-xr-x. 2 nano root 76 11月 11 00:48 boot
drwxr-xr-x. 3 nano root 63 11月 7 2019 conf
drwxr-xr-x. 4 nano root 4096 11月 11 00:48 lib
-rw-r--r--. 1 nano root 17504 11月 7 2019 LICENSE
-rw-r--r--. 1 nano root 5141 11月 7 2019 NOTICE
-rw-r--r--. 1 nano root 2612 11月 7 2019 README.txt
chmod → 更改权限
chmod [用户类型][操作符][权限字符] 文件或目录
用户类型:u
- 所有者(user)、g
- 所属组(group)、o
- 其他人(other)、a
- 所有人(all)
权限字符:r
- 读(read)、w
- 写(write)、x
- 执行(execute)、-
- 无
操作符:+
- 增加权限、-
- 删除权限、=
- 赋予权限
[root@vm apache-maven-3.6.3]# ll bin/m2.conf
-rw-r--r--. 1 nano root 228 11月 7 2019 bin/m2.conf
[root@vm apache-maven-3.6.3]# chmod g+w bin/m2.conf
[root@vm apache-maven-3.6.3]# ll bin/m2.conf
-rw-rw-r--. 1 nano root 228 11月 7 2019 bin/m2.conf
[root@vm apache-maven-3.6.3]# chmod u+x,o-r bin/m2.conf
[root@vm apache-maven-3.6.3]# ll bin/m2.conf
-rwxrw----. 1 nano root 228 11月 7 2019 bin/m2.conf
[root@vm apache-maven-3.6.3]# chmod o+wx bin/m2.conf
[root@vm apache-maven-3.6.3]# ll bin/m2.conf
-rwxrw--wx. 1 nano root 228 11月 7 2019 bin/m2.conf
[root@vm apache-maven-3.6.3]# chmod a=--- bin/m2.conf
[root@vm apache-maven-3.6.3]# ll bin/m2.conf
----------. 1 nano root 228 11月 7 2019 bin/m2.conf
三种权限字符有 8
中排列可能:
数值 | 权限 |
---|---|
0 | --- |
1 | --x |
2 | -w- |
3 | -wx |
4 | r-- |
5 | r-x |
6 | rw- |
7 | rwx |
所以,单独的权限字符和数字的关系是: r
→ 4
、w
→ 2
、 x
→ 1
、-
→ 0
一般地,目录的默认权限是: rwxr-xr-x
→ 755
,文件的默认权限是: rw-r--r--
→ 644
[root@vm apache-maven-3.6.3]# ll bin/m2.conf
----------. 1 nano root 228 11月 7 2019 bin/m2.conf
[root@vm apache-maven-3.6.3]# chmod 644 bin/m2.conf
[root@vm apache-maven-3.6.3]# ll bin/m2.conf
-rw-r--r--. 1 nano root 228 11月 7 2019 bin/m2.conf
需要注意的是,对于目录没有 r
权限,不能读取目录下的内容,即不能使用 ls
,如果目录没有 x
权限,则不能 cd
到该目录
[root@vm apache-maven-3.6.3]# chmod o+r bin
[root@vm apache-maven-3.6.3]# cd bin
[root@vm bin]# chmod g-x,o-x ./*
[root@vm bin]# ll
总用量 32
-rw-r---w-. 1 nano root 228 11月 13 00:21 m2.conf
-rwxr--r--. 1 nano root 5741 11月 7 2019 mvn
-rw-r--r--. 1 nano root 6349 11月 7 2019 mvn.cmd
-rwxr--r--. 1 nano root 1485 11月 7 2019 mvnDebug
-rw-r--r--. 1 nano root 1668 11月 7 2019 mvnDebug.cmd
-rwxr--r--. 1 nano root 1532 11月 7 2019 mvnyjp
setfacl →
-m
:设置后续acl参数-x
:删除后续acl参数-b
:删除全部的acl参数-k
:删除默认的acl参数-R
:递归设置acl,包括子目录-d
:设置默认acl[root@vm ~]#
网络命令:hostname、ifconfig、ip、ping
netstat、TIP 和 Socket
网络命令:hostnamectl、nmtui、nmcli
scp 进行远程文件传输,相当于 FX
在 window 中的 cmd 中使用 scp 进行文件传输文件到 Linux ,语法是:scp 源文件 账号@地址:目标位置
D:\>scp D:/wyl.bat root@192.168.12.150:/root/
在 window 中的 cmd 中使用 scp 将文件从 Linux 传输到 Window
D:\>scp root@192.168.12.150:/root/app.js D:/
hostname 查看当前主机的名称
[root@vm ~]# hostname
vm.c7
因为当前的主机名是 vm.c7
,故而,使用 ssh 的时候,其地址可以是 192.168.12.150
也可以是 127.0.0.1
,还可以是 vm.c7
hosts 文件
在 window 或者 Linux 中, hosts 文件用于本地解析域名,其作用跟 DNS 类似,即将特定的名称视作是某个 ip 地址的主机。
在 Linux 中,该文件的位置是 :/etc/hosts
,在 window 中,该文件的位置在 C:\Windows\System32\drivers\etc\hosts
。
如果在 hosts 文件中配置了主机名和 IP 地址的映射关系,则能使得任意主机名被使用
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 vm.c7
127.0.0.1 wyl.com
如果在 vm.c7
已经配置了 ip 映射关系,则可以使用 ssh 登录该主机
[root@vm ~]# ssh [email protected]
在使用 ssh 第一次连接一个目标主机的时候,会询问是否确定继续,在 回答 yes 后,会将信息保存到 家目录/.ssh/kown_hosts
文件中。
ssh-keygen:生成远程连接的密钥对(公钥和私钥)
[root@vm ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:VmB919eW7YwrKiocqkd/XI8mzoXTfNv+ZsBp1E6xs6A [email protected]
The key's randomart image is:
+---[RSA 2048]----+
| o. .+|
| . .. . o.*|
| .. o B.|
| . o * o|
| S + = + |
| . . =. E * + |
| . + oo.+o.o o |
| o +.+o+.oo o |
|.o +++ ...o+. |
+----[SHA256]-----+
[root@vm ~]#
ssh-copy-id:将公钥发送到目标主机
该指令的作用是将本机的公钥发送到目标主机的 家目录/.ssh/authorized_keys
中
[root@vm ~]# ssh-copy-id [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
[root@vm ~]# ssh [email protected]
在 Window 中免密登录到 Linux :
ssh-keygen
命令在家目录生成公钥和私钥家目录/.ssh/authorized_keys
文件中官网:https://nginx.org/
打开官方的文档:https://nginx.org/en/linux_packages.html#RHEL,安装文档大致如下
yum -y install yum-utils
/etc/yum.repos.d/nginx.repo
,其内容如下:[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
yum-config-manager --enable nginx-mainline
yum -y install nginx
systemctl 是一个系统服务管理工具
systemctl start
:启动服务[root@vm ~]# systemctl start nginx
systemctl status
:查看服务状态[root@vm ~]# systemctl status nginx
● nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: active (running) since 六 2022-11-12 22:04:50 CST; 2s ago
Docs: http://nginx.org/en/docs/
Process: 1612 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 1613 (nginx)
CGroup: /system.slice/nginx.service
├─1613 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
└─1614 nginx: worker process
11月 12 22:04:50 vm.c7 systemd[1]: Starting nginx - high performance web server...
11月 12 22:04:50 vm.c7 systemd[1]: Can't open PID file /var/run/nginx.pid (yet?) after st...ory
11月 12 22:04:50 vm.c7 systemd[1]: Started nginx - high performance web server.
Hint: Some lines were ellipsized, use -l to show in full.
systemctl stop
:停止服务[root@vm ~]# systemctl stop nginx
systemctl enable
:启用服务(开机自动启动)[root@vm ~]# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
systemctl disabled
:禁用服务[root@vm ~]# systemctl disable nginx
Removed symlink /etc/systemd/system/multi-user.target.wants/nginx.service.
[root@vm ~]#
firewall-cmd 是 firewalld 守护程序的命令行客户端。它提供接口以管理运行时和永久配置。
--add-port
:开放的端口和协议,单独使用将会立即生效(重启将会失效)
--remove-port
:移出已开放的端口和协议,单独使用将会立即生效(重启将会失效)
--permanent
:为配置设置为永久有效,但不会立即生效,重启之后才会生效
--reload
:重新加载配置,使得所有的配置立即生效
--list-ports
:查看防火墙已经开放的端口的列表
[root@vm ~]# firewall-cmd --add-port=80/tcp --permanent
[root@vm ~]# firewall-cmd --reload
success
[root@vm ~]# firewall-cmd --list-ports
80/tcp
[root@vm ~]#
提供套接字测试的工具,服务端提供端口的监听,客户端连接服务端,两边即可实现信息通信。
[root@vm ~]# yum -y install nmap-ncat
[root@vm ~]# nc -l 6666
[root@vm ~]# nc 192.168.12.153 6666
du 查看文件或目录占据的磁盘空间
-s
: 只显示总和、 -h
:人类可阅读的方式显示大小
[root@vm ~]# du -sh
df 查看磁盘剩余大小
[root@vm ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.6M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 2.6G 15G 15% /
/dev/sda1 1014M 150M 865M 15% /boot
tmpfs 182M 0 182M 0% /run/user/0
free 查看磁盘剩余大小
[root@vm ~]# free -h
lsblk 查看块设备
[root@vm ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 973M 0 rom
[root@vm ~]# mount /dev/sr0 /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@vm ~]# ls /mnt/
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@vm ~]#
[root@vm ~]# umount /dev/sr0
[root@vm ~]# ls /mnt/
[root@vm ~]# eject
如果插入的设备是来自一块 Window 的NTFS 格式的移动设备
[root@vm ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 1 29.3G 0 disk
├─sdb1 8:17 1 28.1G 0 part
└─sdb2 8:18 1 448M 0 part
[root@vm ~]# mount /dev/sdb1 /mnt/
mount: 未知的文件系统类型“ntfs”
安装 ntfs-3g 以支持 ntfs 文件系统的移动磁盘
[root@vm ~]# rpm -ivh https://mirrors.aliyun.com/epel/7/x86_64/Packages/n/ntfs-3g-libs-2022.5.17-1.el7.x86_64.rpm
获取https://mirrors.aliyun.com/epel/7/x86_64/Packages/n/ntfs-3g-libs-2022.5.17-1.el7.x86_64.rpm
警告:/var/tmp/rpm-tmp.auNwfd: 头V4 RSA/SHA256 Signature, 密钥 ID 352c64e5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:ntfs-3g-libs-2:2022.5.17-1.el7 ################################# [100%]
[root@vm ~]#
[root@vm ~]# rpm -ivh https://mirrors.aliyun.com/epel/7/x86_64/Packages/n/ntfs-3g-2022.5.17-1.el7.x86_64.rpm
获取https://mirrors.aliyun.com/epel/7/x86_64/Packages/n/ntfs-3g-2022.5.17-1.el7.x86_64.rpm
警告:/var/tmp/rpm-tmp.AGT0EA: 头V4 RSA/SHA256 Signature, 密钥 ID 352c64e5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:ntfs-3g-2:2022.5.17-1.el7 ################################# [100%]
[root@vm ~]#
[root@vm ~]# mount /dev/sdb1 /mnt/
wc
[root@vm ~]# echo 'hi, I`m Nano' >> out
[root@vm ~]# wc out
1 3 13 out
1 行,3个词,13 字节
cut 切割文件中的内容
-f
: 提取指定的字段,cut 命令使用 Tab 作为默认的分隔符。
-d
: Tab 是默认的分隔符,使用这一选项可以指定自己的分隔符。
[root@vm ~]# cut -d ':' -f1,3,5 /etc/passwd
date 查看当前时间
[root@vm ~]# date
2022年 11月 14日 星期一 14:16:13 CST
find 查找文件
[root@vm ~]# find . -name *.vue
./my-project/node_modules/jest-serializer-vue/test/components/Child.vue
./my-project/node_modules/jest-serializer-vue/test/components/List.vue
./my-project/node_modules/jest-serializer-vue/test/components/ListSpaced.vue
./my-project/node_modules/jest-serializer-vue/test/components/Parent.vue
./my-project/src/App.vue
./my-project/src/components/HelloWorld.vue
[root@vm ~]# find . -name *.vue -exec cp {} ../src/ \;
-name
:根据名称查找文件
-exec
:将找到的文件依次执行 exec 后的命令,其文件名将会替换掉 {}
部分,要以 \;
结束。
crontab 定时任务
定时任务的执行需要 crond
服务处于持续运行状态,通过 systemctl
查看:
[root@vm ~]# systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since 一 2022-11-14 13:48:34 CST; 1h 13min ago
Main PID: 687 (crond)
CGroup: /system.slice/crond.service
└─687 /usr/sbin/crond -n
11月 14 13:48:34 vm.c7 systemd[1]: Started Command Scheduler.
11月 14 13:48:34 vm.c7 crond[687]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 65% if used.)
11月 14 13:48:39 vm.c7 crond[687]: (CRON) INFO (running with inotify support)
[root@vm ~]#
如果不记得该如何配置定时任务,则查看 /etc/crontab
文件即可
[root@vm ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
每隔一分钟执行一次命令的写法:
* * * * * date >> /root/out.log