系统管理
系统管理
设置远程连接
ip
地址
获取 Linux 指令:
ifconfig
window 指令:
ipconfig
登录后使用 ifconfig
指令查看当前 ip
Xhell
使用 使用第三方工具连接 Linux 服务器,第三方工具有很多种,比较常见的有:
SecureCRT
: 功能强大,收费产品SSHSecureShellClient
XShell
: 可免费使用putty
: 精巧
打开 xhell
新建连接
确定后双击进行连接
选择接受并保存
输入用户名, root
或者创建的 admin
密码
正常连接
关机重启
基本命令
立刻关机
shutdown -h now
1 分钟后关机
shutdown -h 1
立刻重启
shutdown -r now
关机
halt
重启
reboot
将数据保存到磁盘
sync
提示
- 关机和重启前都应该先运行
sync
命令. - 目前
shutdown
/reboot
/halt
都会先自动执行sync
命令.
运行级别
Linux 运行级别
Linux 系统有 7 种运行级别(runlevel) 常用的级别 3 和 5
- 0:关机,系统默认运行级别不能设为 0,否则不能正常启动
- 1:单用户工作状态,root 权限,用于系统维护,禁止远程登录
- 2:多用户状态(没有 NFS),不支持网络
- 3:安全的多用户状态(有 NFS),登录后进入控制台命令行模式
- 4:系统未使用,保留
- 5:X11 控制台,登陆后进入图形 GUI 模式
- 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动
命令:
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
进入编辑界面, 速度要快
在 linux16 行尾输入 init=/bin/sh
进入单用户模式
init=/bin/sh
按 Ctrl + X
启动
输入 mount -o remount,rw /
回车, 注意空格
mount -o remount,rw /
在新的一行输入 passwd
后就可以输入密码
passwd
弱密码会提示最好设置 8 位数以上, 重复输入修改成功
输入 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
2022年 10月 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 定时任务
- at 命令是一次性定时计划任务, at 的守护进程会以后台模式运行, 检查作业队列来运行.
- 默认情况下, atd 的守护进程妹 60 秒检查作业队列, 有作业时, 会检查作业运行时间, 如果时间与当前时间匹配, 则运行此作业.
- at 命令只会执行一次.
- 使用 at 命令的时候, 要保证 atd 进程的启动. 可使用
ps -ef |grep atd
检查服务是否启动.
at 命令格式
at [选项] [时间]
两次 Ctrl + D
结束 at 命令输入
Ctrl + 退格
删除
Ctrl + C
不保存强制退出
选项说明
选项 | 含义 |
---|---|
-m | 当指定的任务被完成后, 将给用户发送邮件, 即使没有标准输出 |
-I | atq 的别名 查看剩余任务 |
-d | atrm 的别名 删除指定编号的任务 |
-v | 显示任务将被执行的时间 |
-c | 打印任务的内容标准输出 |
-V | 显示版本信息 |
-q<队列> | 使用指定的队列 |
-f<文件> | 从指定文件读入任务而不是从标准输入读入 |
-t<时间参数> | 以时间参数的形式提交要运行的任务 |
at 时间定义
- 接受在当天的 hh:mm 式的时间指定, 如果该时间已经过去, 则在第二天执行. 例如 04:00.
- 使用 midnight(深夜), noon(中午), teatime(饮茶时间, 一般是下午 4 点)等模糊词语指定时间.
- 采用 12 小时计时制, 即在时间后面加上 AM 上午, PM 下午.
- 指定命令执行具体日期, month day 或者 mm/dd/yy 或者 dd.mm.yy. 日期必须跟在时间后面.例如 04:00 2022-10-11.
- 使用相对计时法, now + count time-units, now 就是当前时间, time-units 时间单位, 可以是 minutes, hours, days, weeks. count 是时间数量, 几天, 几小时.例如: now + 5 minutes.
- 直接使用 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
.
使用 lsblk
可以查看当前系统的分区情况.
带参数 -f
查看更加详细的信息
添加磁盘
打开虚拟机设置添加一块新硬盘, 重启虚拟机, 识别新硬盘.
重启后查看磁盘情况
磁盘分区
查看磁盘分区详情
fdisk -l
分区命令
fdisk 硬盘设备名
对 sdb
进行分区
fdisk /dev/sdb
m:显示命令列表
p:显示当前磁盘分区(同
fdisk -l
)n:新增分区
d: 删除分区
w:写入分区信息并退出
q:不保存分区信息直接退出
提示
开始分区后输入 n, 新增分区, 然后输入 p, 分区类型为主分区.
分区号表示要分多少个区, 两次回车默认一个分区和剩余全部空间.
最后输入 w 写入分区并退出, 不保存退出输入 q.
查看分区结果, 没有 UUID.
格式化磁盘
mkfs -t ext4 /dev/sdb1
使用 ext4 分区类型格式化
再次查看
挂载/卸载
对于 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
再次查看分区信息
卸载分区
umount /dev/sdb1
或者
umount /newdisk
提示
命令行挂载重启后会失效!
设置开机自启动, 建议先拍个快照备份!
vi /etc/fstab
可以使用 yyp
命令先复制一行.
第一个 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-*`
或者输入 vim /etc/sysconfig/network-scripts/ifcfg-
后按 tab
键查看 ifcfg-
开头的全部文件, 找到需要的, 如 ifcfg-ens33
修改为静态分配
BOOTPROTO="static"
设置 ip
#IP地址
IPADDR=192.168.202.100
# 网关
GATEWAY=192.168.202.2
# 域名解析器
DNS1=192.168.202.2
修改虚拟机 NAT 模式的子网 IP
和网关 IP
重启网络服务
service network restart
配置主机名
修改主机名称
查看主机名
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
windows 修改可以将文件移出来修改完成后移回去覆盖原文件, 或借助第三方工具.
C:\Windows\System32\drivers\etc\hosts
进程和服务
计算机中,一个正在执行的程序或命令,被叫做"进程"(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=端口号/协议