语法:shutdown
shutdown -h now
(立即关机)
shutdown -h 6
(6分钟后关机,shutdown后不填默认一分钟后关机)
shutdown -r now
(立即重启)
无论是要关机还是重启,建议先运行 sync 命令将内存数据保存到磁盘。
语法:man 命令或配置文件
man ls
(查看 ls 命令的帮助手册)
man date
(查看 date 命令的帮助手册)
语法:help 命令
help mkdir
(查看 mkdir 命令的相关信息)
ctrl + c
ctrl+l
reset
语法:pwd 命令
pwd
(查看当前路径)
语法:ls 目录或文件
ls
(查看当前路径下所有文件或目录)
ls -l
(查看当前路径下所有文件或目录的详细信息)
ls -a
(查看当前路径下所有文件或目录,包括隐藏文件)
ls -l index
(查看当前路径下 index 下的详细信息)
语法:cd 目录
d /home
(切换到 /home目录下)
cd ~
(切换到用户主目录)
cd -
(切换到上一次访问的目录)
cd ..
(切换到当前目录的上一级)
.
(当前目录)
..
(上一级目录)
语法:mkdir 目录名
mkdir example
(创建一个 example 目录(一级))
mkdir -p example/example1
(创建 example 目录,其下再创建example1目录(多级))
//-p 选项用于创建多级目录。
语法:rmdir 目录名
rmdir /home/ example
(删除 home 下的example目录)
rmdir -rf /home/example1
(强制删除 home 下的 example1目录)
rmdir删除的是空目录,目录下有内容时是无法删除的,-rf 则可删除非空目录,慎用。
语法:touch 文件名
touch example.txt
(创建example.txt空文件)
语法:cp 源文件 目标文件
cp 001.txt guan/
(复制001.txt 文件到 guan 目录下)
cp -r /home/guan/guan1/
(递归将 home 下的整个 guan目录拷贝到 guan1目录下)
cp -r /home/a /b/
(强制覆盖不提示)
如果连续执行相同的拷贝命令系统会一个一个提示是否覆盖文件内的文件,这时在 cp 前加一个 \ 就可以进行强制覆盖,不提示。
语法:rm 文件或目录
rm 001.txt
(删除 001.txt 文件)
rm -f 001.txt
(强制删除 001.txt 文件,不提示)
rm -r /home/guan
(递归删除整个 guan 目录)
rm -rf /home/guan
(递归删除整个 guan 目录,不提示)
语法:mv 旧文件名 新文件名、mv /源目录 /目标目录
mv 001.txt 002.txt
(将 001.txt 重命名为 002.txt)
mv 001.txt test/
(移动 001.txt 到 test 目录下)
mv 001 002
(重命名目录 001 为 002)
mv 001 002/
(将目录 001目录到 002 下)
重命名的前提是两个文件在同一个目录下。
语法:cat 文件
cat a.txt
(查看文件 a.txt 的内容)
cat -n a.txt
(查看文件 a.txt 的内容,并显示行号)
cat 指令查看文件比 vim 更安全,因为 cat 指令只能查看不能修改。
语法:more 要查看的文件
more a.txt
(查看 a.txt 文件的内容)
more 指令是一个基于 vim 编辑器的文本过滤器,可以以全屏幕的方式按页显示文本文件的内容,且有若干快捷键:
space;向下翻一页
Enter;向下翻一行
q;立即离开more,不再显示文件内容
Ctrl+F;向下滚动以一屏
Ctrl+B;返回上一屏
=;输出当前行的行号
:f;输出文件名和当前行的行号
more 指令也可以结合 cat 指令进行使用,可以让文件内容按百分比显示,使用管道指令 | more:
#cat example.txt | more (查看文件 example.txt 的内容,并以百分比显示)
语法:less 查看的文件
less 用来分屏查看文件的内容,类似 more 指令但强于 more 指令,
支持各种显示终端;less 在显示文件内容时,并不是一次将整个文件
加载后才显示,而是根据显示需要来加载内容,效率较高。
同样它也有相关快捷键:space;向下翻动一页
pagedown;向下翻动一页
pageup;向上翻动一页
/字符串;向下搜寻字符串,n 向下,N 向上
?字符串;向上搜寻字符串,n 向下,N 向上
q;离开 less
语法:echo 输出内容
echo $PATH
【输出环境变量 $PATH】
#echo “Hello World” 【输出语句“Hello World”】
语法:head 文件
#head test.txt 【查看 test.txt 文件的前 10 行内容】
#head -n 6 a.txt 【查看 a.txt 文件的前 6行内容】
默认情况下 head 显示文件的前十行。
语法:tail 文件
tail -10 test.txt
(查看 a.txt 文件的后 10 行内容)
tail -f test.txt
(查看 test.txt 文件的后 10 行内容,并实时追踪文件更新)
cat 文件1 > 文件2
(将文件1的内容覆盖到文件2)
ls -l /home > /home/info.txt
(将 /home 下的文件列表写入 info.txt 中)
重定向 > 会覆盖之前内容
date >> /home/time
(将当前日历信息追加到 /home/time 文件中)
追加 >> 会将新内容添加到之前内容的末尾
语法:ln -s 源文件 软链接名
ln -s /root /myroot
(创建一个软连接 myroot,连接到 /root 目录)
rm /myroot
(删除软连接 myroot)
软链接也称符号链接,类似 Windows 中的快捷方式,主要存放了链接其他文件的路径,删除软连接的方式与删除文件相同。
语法:history
history
(查看最近所有执行过的指令)
history 6
(查看最近执行过的10条指令)
!6
(执行历史编号为6的指令)
权限的基本组成:权限、用户、用户组
权限内容 | Windows | Linux |
---|---|---|
用户概念 | 用户 | 用户 |
用户组概念 | 用户组 | 用户组 |
权限概念 | 完全控制、修改、读取和执行、列出文件夹内容、读取、写入 | 读、写、执行 |
与用户管理相关的系统文件
第一种方式变更权限
chmod [{ugoa}{+-=}{rwx}] 文件或目录
第二种方式变更权限
chmod [mode=421 ] [文件或目录]
字符与数字的换算方法:
rwx=4+2+1=7
rw = 4 + 2 = 6
rx = 4 + 1 = 5
wx = 2 + 1 = 3
chown [选项] [最终用户] [文件或目录]
(功能描述:改变文件或者目录的所有 者)
修改文件所有者命令
例如:
chgrp [最终用户组] [文件或目录]
(功能描述:改变文件或者目录的所属组)
useradd 用户名
(功能描述:添加新用户)
useradd -G 组名 用户名
(功能描述:添加新用户到某个组)
passwd 用户名
id username
cat /etc/passwd
su 用户名称
(功能描述:切换用户,只能获得用户的执行权限,不能获得环境变量)
su - 用户名称
(功能描述:切换到用户并获得该用户的环境变量及执行权限)
userdel 用户名
(功能描述:删除用户但保存用户主目录)
userdel -r 用户名
(功能描述:用户和用户主目录,都删除)
whoami
(功能描述:显示自身用户名称)
who am i
(功能描述:显示登录用户的用户名以及登陆时间)
useradd guan
passwd guan
vim /etc/sudoers
修改 /etc/sudoers 文件,找到下面一行(91 行),在 root 下面添加一行,如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
issavior ALL=(ALL) ALL
或者配置成采用 sudo 命令时,不需要输入密码
root ALL=(ALL) ALL
issavior ALL=(ALL) NOPASSWD:ALL
修改完毕,现在可以用 guan 帐号登录,然后用命令 sudo ,即可获得 root 权限进行 操作。
usermod 修改用户
将用户加入到用户组
usermod -g 用户组 用户名
用户组管理命令
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
不同 Linux 系统对用户组的规定有所不同, 如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对 /etc/group
文件的更新。
groupadd 组名
groupdel 组名
groupmod -n 新组名 老组名
cat /etc/group
语法:date、data -s 时间
date
(显示当前时间)
date +%Y
(显示当前年份)
date +%m
(显示当前月份)
date +%d
(显示当前是哪一天)
date "+%Y-%m-%d %H:%M:%S"
(显示年月日时分秒)
data -s "2022-5-1 10:01:05"
(设置系统时间为…)
语法:cal
cal
(显示本月日历)
cal 2022
(显示 2022 年日历)
语法:find 范围 方式 文件
find /home -name test.txt
(根据文件名查找 home 下的 test.txt 文件)
find /home -user guanguan
(根据用户查找 home 下用户昵称为 guanguan 的文件)
find / -size 250M
(根据文件大小查找系统中大小为 250M 的文件)
find / -size +250M
(查找系统中大于 200M 的文件)
find 指令将从指定目录向下递归遍历其各个子目录,将满足条件的文件或目录显示在终端。
语法:locate 文件
updatedb
(创建 locate 数据库,第一次使用 locate指令前必须先创建数据库)
locate test.txt
(定位 test.txt 文件的路径)
locate 指令可以快速定位文件路径,利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位文件,无需遍历整个文件系统;但为了保证查询准确度,管理员须定期更新locate时刻。
语法:which 指令
which cd
(检索 cd 指令所在路径)
语法:grep 查找内容 源文件
grep "yes" example.txt
(查找 example.txt 文件中 “yes” 所在行)
cat example.txt | grep "yes"
(查找 example.txt 文件中 “yes” 所在行)
cat example.txt | grep -n "yes"
(查找 example.txt 文件中 “yes” 所在行并显示行号)
grep 过滤查找常和管道符 | 结合使用,表示将前一个命令的处理结果传递给后面处理。
uptime
free
free -m
cat /proc/cpuinfo
last
w [用户名]
du 目录/文件
(功能描述:显示目录下每个子目录的磁盘使用情况)
lsblk
(功能描述:查看设备挂载情况)
mount [-t vfstype] [-o options] device dir
(功能描述:挂载设备)
umount 设备文件名或挂载点
(功能描述:卸载设备)
fdisk -l
(功能描述:查看磁盘分区详情)
fdisk 硬盘设备名
(功能描述:对新增硬盘进行分区操作)
ps aux | grep xxx
(功能描述:查看系统中所有进程)
ps -ef | grep xxx
(功能描述:可以查看子父进程之间的关系)
kill [选项] 进程号
(功能描述:通过进程号杀死进程)
killall 进程名称
(功能描述:通过进程名称杀死进程,也支持通配符,这 在系统因负载过大而变得很慢时很有用)
pstree [选项]
netstat -anp | grep 进程号
(功能描述:查看该进程网络信息)
netstat –nlp | grep 端口号
(功能描述:查看网络端口号占用情况)
crond:Linux 用来周期地执行某种任务的一个守护进程
crontab -e
(编辑系统定时任务)
crontab -l
(列出系统定时任务)
语法:gzip 文件
gzip example.txt
(将 example.txt 文件压缩为 example.gz 文件)
语法:gunzip 解压文件
gzip example.txt.gz
(将 example.txt.gz 文件压缩为example .txt 文件)
语法:zip 压缩文件或目录
zip -r example.zip /home/
(将 home 以及它的子目录压缩为example.zip )
-r 递归压缩,用于压缩目录以及目录下的子文件夹。
语法:unzip xxx.zip
unzip -d /tmp example.zip
(将 example.zip 解压到 /tmp 目录下)
-d 用于指定解压后文件的存放目录。
语法:tar -[选项] xxx.tar.gz(打包的内容)
其中:
z:调用gzip压缩命令进行压缩
c:打包文件
v:显示运行过程
f:指定文件名
x:代表解压
tar -zcvf a.tar.gz b.txt c.txt
(将 b.txt 和 c.txt 压缩成 a.tar.gz)
tar -zcvf a.tar.gz /home/
(将 /home 下的文件夹压缩为 a.tar.gz)
tar -zxvf a.tar.gz
(将 a.tar.gz 解压到当前目录)
tar -zxvf a.tar.gz -C /tmp
(将 a.tar.gz 解压到 /tmp 目录下)
tar 打包后的文件为 .tar.gz 文件。
桥接
在网络网卡上安装了一个桥接协议,让这块网卡处于混杂模式,可以同时连接多个网络的做法。 桥接下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样查在这个交换机当中,所以所有桥接下网卡与网卡都是交换模式的,相互可以访问而不干扰。
NAT
虚拟机使用VMnet8网卡与主机单独组网,主机对于虚拟机相当于路由器,VMnet8网卡通过NAT地址转换协议与物理机网卡通信
Host-only
(仅与主机通信)【不常用】
虚拟机使用VMnet1网卡与主机单独组网,主机对于虚拟机相当于路由器
4.1编辑IP 配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
以下标红的项必须修改,有值的按照下面的值修改,没有该项的要增加
TYPE=“Ethernet” #网络类型(通常是 Ethemet)
PROXY_METHOD=“none”
BROWSER_ONLY=“no”
BOOTPROTO=“static” #IP 的配置方法[none|static|bootp|dhcp](引导 时不 使用协议|静态分配 IP|BOOTP 协议|DHCP 协议)
DEFROUTE=“yes”
IPV4_FAILURE_FATAL=“no”
IPV6INIT=“yes”
IPV6_AUTOCONF=“yes”
IPV6_DEFROUTE=“yes”
IPV6_FAILURE_FATAL=“no”
IPV6_ADDR_GEN_MODE=“stable-privacy”
NAME=“ens33”
UUID=“e83804c1-3257-4584-81bb-660665ac22f6” #随机 id
DEVICE=“ens33” #接口名(设备,网卡)
ONBOOT=“yes” #系统启动的时候网络接口是否有效(yes/no)
#IP 地址
IPADDR=192.168.1.100
#网关
GATEWAY=192.168.1.2
#域名解析器
DNS1=192.168.1.2
4.2编辑完后,按键盘 esc ,然后输入 :wq 回车即可
4.3执行 service network restart 重启网络
修改 IP 地址后可能会遇到的问题:
物理机能 ping 通虚拟机,但是虚拟机 ping 不通物理机,一般都是因为物理机的 防火墙问题,把防火墙关闭就行
虚拟机能 Ping 通物理机,但是虚拟机 Ping 不通外网,一般都是因为 DNS 的设置有问题
虚拟机 Ping www.baidu.com 显示域名未知等信息,一般查看 GATEWAY 和 DNS 设 置是否正确
如果以上全部设置完还是不行,需要关闭 NetworkManager 服务
systemctl stop NetworkManager
关闭
systemctl disable NetworkManager
禁用
如果检查发现 systemctl status network
有问题 需要检查 ifcfg-ens33
修改主机名称
hostname 后跟要修改的名称,如
hostname guan
(修改主机名为guan)
查看当前服务器主机名称
hostname
如果感觉此主机名不合适,我们可以进行修改。通过编辑/etc/hostname 文件
vi /etc/hostname
(修改完成后重启生效)
修改 hosts 映射配置文件
vim /etc/hosts
192.168.200.168 guan
通常在工作过程中,公司中使用的真实服务器或者是云服务器,都不允许除运维人员之外的员工直接接触,因此就需要通过远程登录的方式来操作。
所以,远程登录工具就是必不可缺的,目前,比较主流的有 Xshell
, SSH Secure Shell, SecureCRT,FinalShell 等,可以根据自己的习惯自行选择,而远程传输文件有Xftp
。【我个人装了Xshell7和Xftp7】
SSH概念
Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行文件互传)和其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。目前已经成为Linux系统的标准配置。
配置要点
关于服务器的相关操作
查看状态 | systemctl status [服务名称] |
查看启动 | systemctl start [服务名称] |
停止服务 | systemct] stop [服务名称] |
重启服务 | systemctl restart [服务名称] |
计算机中,一个正在执行的程序或命令,被叫做“进程”(process)
启动之后一直存在、常驻内存的进程,一般被称作“服务”(service)
systemctl start | stop | restart | status 服务名
systemctl status firewalld
systemctl stop firewalld
systemctl start firewalld
systemctl restart firewalld
7.1查看服务开机启动状态
systemctl list-unit-files
7.2关掉指定服务的自动启动
systemctl disable service_name
7.3开启指定服务的自动启动
systemctl enable service_name
7.4查看服务的方法:
/usr/lib/systemd/system
ls -al
multi-user.target
(多用户有网,无图形界面)
graphical.target
(多用户有网,有图形界面)
systemctl get-default
systemctl set-default TARGET.target
(这里 TARGET 取 multi-user 或者 graphical)
查看防火墙状态
systemctl status firewalld
临时关闭防火墙
systemctl stop firewalld
查看防火墙开机启动状态
systemctl enable firewalld.service
设置开机时关闭防火墙
systemctl disable firewalld.service
Apache-1.3.23-11.i386.rpm - “apache” 软件名称
“1.3.23-11”软件的版本号,主版本和此版本
“i386”是软件所运行的硬件平台,Intel 32位处理器的统称
“rpm”文件扩展名,代表RPM包
查询所安装的所有 rpm 软件包rpm -qa
由于软件包比较多,一般都会采取过滤rpm -qa | grep rpm软件包
rpm -e RPM软件包
rpm -e --nodeps 软件包
-e:卸载软件包
–nodeeps:卸载软件时,不检查依赖。这样的话,那些使用该软件包的软件在此之后可能就不能正常工作了)
rpm -ivh RPM 包全名
-i:install,安装
-v:–verbose,显示详细信息
-h:–hash,进度条
–nodeps:安装前不检查依赖
YUM(全称为 Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 CentOS 中的 Shell 前端软件包管理器,基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包 并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
我的理解:yum类似maven,可以从镜像网站下载应用程序,并直接安装。
yum [选项] [参数]
-y:对所有提问都回答yes
默认的系统 YUM 源,需要连接国外 apache 网站,网速比较慢,可以修改关联的网络 YUM 源为国内镜像的网站,比如网易 163,aliyun 等。
选项 | 功能描述 |
---|---|
[ ] | 填写YUM源唯一的ID号,可以为任意字符串 |
name | 指定YUM源名称,可以为任意字符串 |
baseurl | 指定YUM源的URL地址(可以是HTTP、FTP或本地路径),可以指定多项 |
enabled | 是否激活该YUM源(0代表禁用,1代表激活,默认为激活) |
gpgcheck | 安装软件时是否检查签名(0代表禁用, 1代表激活) |
gpąkey | 如果检查软件包的签名,该语句定义检查签名的密钥文件 |
安装 wget, wget 用来从指定的 URL 下载文件
yum install wget
在/etc/yum.repos.d/目录下,备份默认的 repos 文件
cp CentOS-Base.repo CentOS-Base.repo.bak
下载网易 163 或者是 aliyun 的 repos 文件,任选其一
wget http://mirrors.aliyun.com/repo/Centos-7.repo //阿里云
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo //网易 163
使用下载好的 repos 文件替换默认的 repos 文件
例如:用 CentOS7-Base-163.repo 替换 CentOS-Base.repo
mv CentOS7-Base-163.repo CentOS-Base.repo
清理旧缓存数据,缓存新数据
yum clean all
yum makecache
DNF软件管理器 RHEL 8和CentOS采用DNF作为主要的软件包管理工具DNF和YUM两者的主要差异如下YUM (Yellowdog Updater, Modified)API 有完整的文档API 没有完整的文档2DNF目前在Fedora, RHEL 8, CentOS 8, OEL 8和Mageia6/7 中使用YUM 目前在 RHEL 6/7, CentOS 6/7, OEL 6/7 中使用3DNF更新:在DNF更新过程中,如果包中包含不相关的依赖,则不会更新 手机尾号4978用户-u 637ed2da456eb N34QllvhUYUM 将在没有验证的情况下更新软件包4API 有良好的文档,因此很容易创建新的功能因为 API 没有正确的文档化,所以创建新功能非常困难5 DNF 在同步存储库的元数据时,使用的内存较少在同步存储库的元数据时,YUM 使用了过多的内存6 DNF 依赖关系解析快由于使用公开 API 的原因, Yum 依赖性解析变得迟钝7从内存使用量和版本库元数据的依赖性解析来看,性能都不错在很多因素的影响下,表现不佳
DNF (Dandified YUM) | YUM (Yellowdog Updater, Modified) | |
---|---|---|
1 | API 有完整的文档 | API 没有完整的文档 |
2 | DNF目前在Fedora, RHEL 8, CentOS 8, OEL 8和Mageia6/7 中使用 | YUM 目前在 RHEL 6/7, CentOS 6/7, OEL 6/7 中使用 |
3 | DNF更新:在DNF更新过程中,如果包中包含不相关的依赖,则不会更新 | YUM 将在没有验证的情况下更新软件包 |
4 | API 有良好的文档,因此很容易创建新的功能 | 因为 API 没有正确的文档化,所以创建新功能非常困难 |
5 | DNF 在同步存储库的元数据时,使用的内存较少 | 在同步存储库的元数据时,YUM 使用了过多的内存 |
6 | DNF 依赖关系解析快 | 由于使用公开 API 的原因, Yum 依赖性解析变得迟钝 |
7 | 从内存使用量和版本库元数据的依赖性解析来看,性能都不错 | 在很多因素的影响下,表现不佳 |