系统管理

空~2022年10月12日
  • linux
大约 17 分钟

系统管理

设置远程连接

获取 ip 地址

Linux 指令:

ifconfig

window 指令:

ipconfig

登录后使用 ifconfig 指令查看当前 ip

img

使用 Xhell

使用第三方工具连接 Linux 服务器,第三方工具有很多种,比较常见的有:

  1. SecureCRT: 功能强大,收费产品

  2. SSHSecureShellClient

  3. XShell: 可免费使用

  4. putty: 精巧

image-20220927190639071

打开 xhell 新建连接

image-20220927191214809

确定后双击进行连接image-20220927191527655

选择接受并保存

image-20220927191523022

输入用户名, root 或者创建的 admin

image-20220927191519185

密码

image-20220927191511226

正常连接

image-20220927191740635

关机重启

基本命令

立刻关机

shutdown -h now

1 分钟后关机

shutdown -h 1

立刻重启

shutdown -r now

关机

halt

重启

reboot

将数据保存到磁盘

sync

提示

  1. 关机和重启前都应该先运行 sync 命令.
  2. 目前 shutdown/reboot/halt 都会先自动执行 sync 命令.

运行级别

Linux 运行级别

Linux 系统有 7 种运行级别(runlevel) 常用的级别 3 和 5

  • 0:关机,系统默认运行级别不能设为 0,否则不能正常启动
  • 1:单用户工作状态,root 权限,用于系统维护,禁止远程登录
  • 2:多用户状态(没有 NFS),不支持网络
  • 3:安全的多用户状态(有 NFS),登录后进入控制台命令行模式
  • 4:系统未使用,保留
  • 5:X11 控制台,登陆后进入图形 GUI 模式
  • 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动

image-20220515153151877

命令:

init [0123456]

将图形化界面的 Linux 切换为控制台形式:

init 3

切换回来:

init 5

CentOS7 的运行级别

在 centOS7 以前, /etc/inittab 文件中对指令进行了简化.

multi-user.target:analogous to runlevel 3 等价于原运行级别 3(多用户有网,无图形界面)

graphical.target:analogous to runlevel 5 等价于原运行级别 5(多用户有网,有图形界面)

查看运行级别

查看默认运行级别

systemctl get-default

修改运行级别

修改默认运行级别为 3

systemctl set-default multi-user.target

找回 root 密码

进入开机界面, 在界面中按 e 进入编辑界面, 速度要快

image-20220929181636762

在 linux16 行尾输入 init=/bin/sh 进入单用户模式

init=/bin/sh

image-20220929182132737

Ctrl + X 启动

image-20220929182426324

输入 mount -o remount,rw / 回车, 注意空格

mount -o remount,rw /

image-20220929182901459

在新的一行输入 passwd 后就可以输入密码

passwd

image-20220929183209205

弱密码会提示最好设置 8 位数以上, 重复输入修改成功

image-20220929183448714

输入 touch /.autorelabel 回车, 注意空格

touch /.autorelabel

再输入 exec /sbin/init 回车, 注意空格

exec /sbin/init

经过漫长的等待后会自动重启, 新密码生效.

时间日期类

基本语法

date [option] + [format]

设置日期时间

date -s "日期时间"

设置系统当前时间

date -s "2022-06-19 20:52:22"

同步时间

ntpdate -u ntp1.aliyun.com

date 显示当前时间

  • date 显示当前时间
  • date +%Y 显示当前年
  • date +%m 显示当前月
  • date +%d 显示当前是哪一天
  • date "+%Y-%m-%d %H:%M:%S" 显示年月日时分秒
  • date +%s 查看时间戳
  • date -d "-1 hours ago" 一个小时后的时间
[root@Linux ~]# date
202210月 03日 星期一 21:39:46 CST
[root@Linux ~]# date +%Y
2022
[root@Linux ~]# date +%m
10
[root@Linux ~]# date +%d
03
[root@Linux ~]# date "+%Y-%m-%d %H:%M:%S"
2022-10-03 21:10:13

cal 查看日历

cal [选项]

不加选项,显示本月日历

查看 3 个月的时间

cal -3

周一放在第一天

cal -m

查看 2022 年日历

cal 2022

系统定时任务

crontab 服务管理

设定定时任务, 例如定时病毒扫描, 数据库备份等.

crontab [选项]

选项说明

选项功能
-e编辑 crontab 定时任务
-l查询 crontab 任务
-r删除当前用户所有的 crontab 任务

进入编辑界面

crontab -e
# 小例子 每分钟往hello文件追加一个"hello world"
*/1 * * * * echo "hello world" >> /root/hello
项目含义范围
第 1 个“*"一个小时当中的第几分钟0-59
第 2 个“*"一天当中的第几个小时0-23
第 3 个“*"一个月当中的第几天1-31
第 4 个“*"一年当中的第几月1-12
第 5 个“*"一周当中的星期几0-7 (0 和 7 都代表星期日)

符号说明

特殊符号含义
*代表任何时间,比如第一个“*”就代表一小时中每分钟都执行一次的意思
代表不连续的时间。比如“0 8,12,16 * * *” 就代表在每天的 8 点 0 分,,12 点 0 分,16 点 0 分都执行一次命令
-代表连续的时间访问。比如“0 5 * * 1-6" 代表在周一到周六的凌晨 5 点 0 分执行命令
*/n代表每隔多久执行一次,比如”*/10 * * * *" 命令,代表每隔 10 分钟就执行一边命令

示例

45 22 * * *每天 22 点 45 分执行命令
0 17 * * 1每周 1 的 17 点 0 分执行命令
0 5 1,15 * *每月 1 号 15 号的凌晨 5 点 0 分执行命令
40 4 * * 1-5 命令每周一到周五 4 点 40 分执行命令
*/10 4 * * *每天的凌晨 4 点,每隔 10 分钟执行一次命令
0 0 1,15 * 1 命令每月 1 号和 15 号,每周 1 的 0 点 0 分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱

at 定时任务

  1. at 命令是一次性定时计划任务, at 的守护进程会以后台模式运行, 检查作业队列来运行.
  2. 默认情况下, atd 的守护进程妹 60 秒检查作业队列, 有作业时, 会检查作业运行时间, 如果时间与当前时间匹配, 则运行此作业.
  3. at 命令只会执行一次.
  4. 使用 at 命令的时候, 要保证 atd 进程的启动. 可使用 ps -ef |grep atd 检查服务是否启动.

at 命令格式

at [选项] [时间]

两次 Ctrl + D 结束 at 命令输入

Ctrl + 退格 删除

Ctrl + C 不保存强制退出

选项说明

选项含义
-m当指定的任务被完成后, 将给用户发送邮件, 即使没有标准输出
-Iatq 的别名 查看剩余任务
-datrm 的别名 删除指定编号的任务
-v显示任务将被执行的时间
-c打印任务的内容标准输出
-V显示版本信息
-q<队列>使用指定的队列
-f<文件>从指定文件读入任务而不是从标准输入读入
-t<时间参数>以时间参数的形式提交要运行的任务

at 时间定义

  1. 接受在当天的 hh:mm 式的时间指定, 如果该时间已经过去, 则在第二天执行. 例如 04:00.
  2. 使用 midnight(深夜), noon(中午), teatime(饮茶时间, 一般是下午 4 点)等模糊词语指定时间.
  3. 采用 12 小时计时制, 即在时间后面加上 AM 上午, PM 下午.
  4. 指定命令执行具体日期, month day 或者 mm/dd/yy 或者 dd.mm.yy. 日期必须跟在时间后面.例如 04:00 2022-10-11.
  5. 使用相对计时法, now + count time-units, now 就是当前时间, time-units 时间单位, 可以是 minutes, hours, days, weeks. count 是时间数量, 几天, 几小时.例如: now + 5 minutes.
  6. 直接使用 today, tomorrow 来指定完成命令的时间.

两天后下午 5 点执行 ls /home 命令.

at 5pm + 2day

输入需要执行的命令

ls /home

atq 命令查看系统中还没有执行的工作任务

atq

明天下午执行 date > /root/date100.log 命令

at 5pm tomorrow

输入命令

date > /root/date100.log

删除编号为 1 的任务

atrm 1

磁盘管理

分区信息

装虚拟机的时候, 将磁盘分区分成了: /, /root, /swap.

image-20221011095800676

使用 lsblk 可以查看当前系统的分区情况.

image-20221011095602394

带参数 -f 查看更加详细的信息

image-20221011100419701

添加磁盘

打开虚拟机设置添加一块新硬盘, 重启虚拟机, 识别新硬盘.

image-20221011102557654

重启后查看磁盘情况

image-20221011103047709

磁盘分区

查看磁盘分区详情

fdisk -l

分区命令

fdisk 硬盘设备名

sdb 进行分区

fdisk /dev/sdb

m:显示命令列表

p:显示当前磁盘分区(同 fdisk -l)

n:新增分区

d: 删除分区

w:写入分区信息并退出

q:不保存分区信息直接退出

提示

开始分区后输入 n, 新增分区, 然后输入 p, 分区类型为主分区.

分区号表示要分多少个区, 两次回车默认一个分区和剩余全部空间.

最后输入 w 写入分区并退出, 不保存退出输入 q.

查看分区结果, 没有 UUID.

image-20221011105346466

格式化磁盘

mkfs -t ext4 /dev/sdb1

使用 ext4 分区类型格式化

再次查看

image-20221011105605291

挂载/卸载

对于 Linux 用户来讲,不论有几个分区,分别分给哪一个目录使用,它总归就是一个根目录、一个独立且唯一的文件结构。

Linux 中每个分区都是用来组成整个文件系统的一部门,它在用一种叫挂载的处理方法,它整个文件系统中包含了一整套的文件和目录,并将一个分区和一个目录联系起来,要载入的那个文件将它的存储空间在这个目录获得.

挂载设备

mount [-t vfstype] [-o options] device dir

卸载设备

umount 设备文件名或挂载点

参数信息

参数功能
-t vfstype指定文件系统的类型,通常不必指定。mount 会自动选择类型。常用类型有:光盘或光盘镜像 DOS Windows9x fat32 文件系统:vfat Windows NT ntfs 文件系统: ntfs Mount Windows 文件网络共享:smbfs UNIX(LINUX)文件共享:nfs
-o options主要用来描述设备或档案的挂接方式。常用的参数有: loop 用来把一个文件当成硬盘分区挂接上系统 ro:采用只读方式挂接设备 rw:采用读写方式挂接设备 iocharset: 指定访问系统所用字符集
device要挂接的设备
dir设备在系统上的挂载点

在根目录新建一个文件夹 /newdisk, 并挂载 sdb1.

cd /
mkdir newdisk
mount /dev/sdb1 /newdisk

再次查看分区信息

image-20221011110513674

卸载分区

umount /dev/sdb1

或者

umount /newdisk

提示

命令行挂载重启后会失效!

设置开机自启动, 建议先拍个快照备份!

vi /etc/fstab

可以使用 yyp 命令先复制一行.

image-20221011111421541

第一个 0 表示不做挂载点内备份

第二个 0 表示不进行磁盘检查修复

查看磁盘空间使用情况

df: disk free 剩余磁盘

df

以容易较阅读的格式自行显示

df -h

查看文件和目录占用的磁盘空间

du: disk usage 磁盘占用情况

显示目录下每个子目录的磁盘使用情况

du [选项] 目录/文件

选项

选项功能
-h以人们较易预读的 G,M、k 等格式自行显示
-a不仅查看子目录大小,还要包括文件
-c显示所有的文件和子目录大小后,显示总和
-s只显示总和
-max-depth=n指定统计子目录的深度为第 n 层

示例

查看当前用户主目录占用的磁盘空间大小

du -sh # 查看当前路径文件大小
# 只查看一级子目录
du --max-depth=1 -ah

网络配置

配置网络 ip

修改为静态 IP

 vim /etc/sysconfig/network-scripts/ifcfg-*

使用 ``ifconfig找到ifcfg-*`

image-20221011120225915

或者输入 vim /etc/sysconfig/network-scripts/ifcfg- 后按 tab 键查看 ifcfg- 开头的全部文件, 找到需要的, 如 ifcfg-ens33

image-20221011120328868

修改为静态分配

BOOTPROTO="static"

设置 ip

#IP地址
IPADDR=192.168.202.100
# 网关
GATEWAY=192.168.202.2
# 域名解析器
DNS1=192.168.202.2

修改虚拟机 NAT 模式的子网 IP 和网关 IP

image-20221011121141148

image-20221011121349134

重启网络服务

service network restart

image-20220513234505448

配置主机名

修改主机名称

查看主机名

hostname

修改里面的值

vim /etc/hostname

重启服务器

reboot

查看主机相关信息

hostnamectl

修改主机名为 myLinux

 hostnamectl set-hostname myLinux

hosts 映射

修改 linux 的主机映射文件(hosts 文件)给对应的 ip 起个名字

说明:后续在虚拟机多的情况时,配置时通畅会采用主机名的方式配置

linux

hostname: Linux

ip: 192.168.202.100

windows

hostname: HELLO (也可以在终端使用 hostname 查看, 或者在电脑属性查看设备名称)

ip: 192.168.137.110

linux 修改需要管理员权限

vim /etc/hosts

image-20221011134025161

windows 修改可以将文件移出来修改完成后移回去覆盖原文件, 或借助第三方工具.

C:\Windows\System32\drivers\etc\hosts

image-20221011133504264

image-20221011135508817

进程和服务

计算机中,一个正在执行的程序或命令,被叫做"进程"(process)

启动之后一直存在、常驻内存的进程,一般被称做“服务”(service)

进程管理类

进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用着一定的系统资源

查看当前系统进程状态

ps: process status 进程状态

  • ps -aux | grep XXX 查看系统中带 XXX 的进程
  • ps -ef | grep XXX 可以查看子父今后进程之间的关系
选项功能
a列出带有终端的所有用户的进程
x列出当前用户的所有今后进程,包括没有终端的进程
u面向用户友好的显示风格
e列出所有进程
u列出某个用户关联的所有进程
f显示完整格式的进程列表
ls /usr/lib/systemd/system
# 带d.service的为守护进程
ls /usr/lib/systemd/system | grep d.service
ps aux | less
ps -ef | less

ps -aux 显示信息说明

USER:该进程是由哪个用户产生的

PID: 进程的 ID 号

%CPU: 该进程占用 CPU 资源的百分比,占用越高,进程越耗费资源;

%MEM: 该进程占用物理内存的百分比,占用越高,进程越耗费资源;

VSZ: 该进程占用虚拟内存的大小,单位 KB;

RSS: 该进程占用实际物理内存的大小,单位 KB;

TTY: 该进程是哪个终端中运行的。对于 CentOS 来说,tty1 是图形化终端,tty2-tty5 是本地的字符界面终端。pts/0-255 代表虚拟终端。

STAT: 进程状态。常见的状态有:R:运行状态 S:睡眠状态 T: 暂停状态 Z:僵尸状态 s:包含子进程 l: 多线程 +:前台显示 <:高优先级 N:低优先级

START: 该进程的启动时间

TIME:该进程占用 CPU 的运算时间,注意不是系统时间

COMMAND:执行该进程的命令

ps -ef 显示信息说明

UID: 用户 ID

PID: 进程 ID

PPID: 父进程 ID

C: CPU 用于计算执行优先级的因子。数字越大,表明进程是 CPU 密集型运算,执行优先级会降低;数字越小,表明进程是 I/O 密级型运算,执行优先级会提高

STIME:进程启动的时间

TIY:完成的终端名称

TIME: CPU 时间

CMD: 启动进程所用的命令和参数

如果是想查看进程 CPU 占用率和内存占用率,可以使用 aux

如果想查看进程的父进程 ID 可以使用 ef;

kill 终止进程

通过进程号杀死进程

kill [选项] 进程号

通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用

killall 进程名称
选项功能
-9表示强迫进程立即停止

查看各个号码代表的意思

kill -l

pstree 查看进程树

pstree [选项]
选项功能
-p显示进程 PID
-u显示进程的所属用户
  • pstree
  • pstree -p
  • pstree -u

top 实施监控系统进程状态

top [选项]
选项功能
-d 秒数指定 top 命令每隔几秒更新。默认是 3 秒在 top 命令的交互模式当中可以执行
-i使 top 不显示任何闲置或者僵死进程。
-p通过指定进程 ID 来仅仅监控某个进程的状态
操作功能
P以 CPU 使用率排序,默认就是此项
M以内存的使用率排序
N以 PID 排序
q退出 top
u根据指定用户进行过滤
k直接杀死

netstat 显示网络状态和端口占用信息

  • netstat -anp | grep 进程号 查看该进程网络信息
  • netstat -nlp | grep 端口号 查看网络端口号占用情况
  • netstat -atnp 查看连接
选项功能
-a显示所有正在监听(listen)和未监听的套接字(socket)
-n拒绝显示别名,能显示数字的全部转化为数字
-l仅列出在监听的服务状态
-p表示显示哪个进程在调用

service 服务管理

CentOS 6 版本了解

ls /usr/sbin/ | grep service

基本语法

service 服务名 start | stop | restart | status

查看服务的方法

ls /etc/init.d/

查看网络服务的状态

service network status

停止网络服务

service network stop

启动网络服务

service network start

重启网络服务

service network restart

chkconfig 设置后台服务的自启配置

CentOS 6 版本

基本语法

查看所有服务器自启配置

chkconfig

关掉指定服务的自动启动

chkconfig 服务名 off

开启指定服务的自动启动

chkconfig 服务名 on

查看服务开机启动状态

chkconfig 服务名 --list

开启/关闭 network(网络)服务的自动启动

chkconfig network on
chkconfig network off

开启/关闭 network 服务指定级别的自动启动

chkconfig --level 指定级别 network on
chkconfig --level 指定级别 network off

systemctl

CentOS 7 版本-重点掌握

基本语法

systemctl start | stop | restart | status 服务名

查看服务的方法

ls -al /usr/lib/systemd/system

查看防火墙服务的状态

systemctl status firewalld

停止防火墙服务

systemctl stop firewalld

启动防火墙服务

systemctl start firewalld

重启防火墙服务

systemctl restart firewalld

systemctl 设置后台服务的自启配置

基本语法

查看服务开机启动状态

systemctl list-unit-files

关掉指定服务的自动启动

systemctl disable service_name

开启指定服务的自动启动

systemctl enable service_name

开启/关闭 iptables(防火墙)服务的自动启动

systemctl enable firewalld.service
systemctl disable firewalld.service

防火墙

关闭防火墙

# 查看防火墙状态
systemctl status firewalld
systemctl stop firewalld

开机启动时关闭防火墙

# 查看防火墙开机启动状态
systemctl enable firewalld.service
# 设置开机时关闭防火墙
systemctl disenable firewalld.service

查看服务是否开机自启动

systemctl list-unit-files | grep firewalld

端口管理

firewall 指令

打开端口

firewall-cmd --permanent --add-port=端口号/协议

关闭端口

firewall-cmd --permanent --remove-port=端口号/协议

重新载入生效

firewall-cmd --reload

查询端口是否开放

firewall-cmd --query-port=端口号/协议