Linux - 4 系统管理
系统管理
系统管理,说的就是我们的CentOS系统,它不同于Windwos,CentOS是字符界面,我们需要通过命令进行操作,在当前章节,我们先从基本命令学起,比如创建用户、设置密码、修改用户以及用户组的相关操作。也为我们后面的章节打下基础
2.3.1 日期管理
当前日期如果通过date进行设置,在系统重启后不会保存date的设置,常用的只是通过date命令查看日期
date 可以用来显示或设定系统的日期与时间
使用者权限:所有用户
语法如下:
date [参数选项]
参数
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u:显示GMT;
--help:在线帮助;
--version:显示版本信息
1、设置时间
用 -s选项可以设置系统时间,如下:
date -s "2019-12-11 16:15:00"
2、显示时间
date
(1)UTC
协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。。
(2)GMT
即格林尼治 平太阳时间,是指格林尼治所在地的标准时间,也是表示地球自转速率的一种形式
外文名:Universal Time
其他外文名G.M.T.(Greenwich Mean Time)
(3)CST
北京时间 (中国国家标准时间)
北京时间是中国采用国际时区东八时区的区时作为标准时间。
北京时间并不是北京(东经116.4°)的地方时间,而是东经120°的地方时间,故东经120度地方时比北京的地方时早约14分半钟。因为北京处于国际时区划分中的东八区,同格林尼治时间(世界时)整整相差8小时(即北京时间=世界时+8小时),故命名为“北京时间”。东八区包括的范围从东经112.5°到东经127.5°,以东经120°为中心线,东西各延伸7.5°,总宽度为15°的区域。
而中国幅员辽阔,东西相跨5个时区(即东五区、东六区、东七区、东八区、东九区5个时区)授时台必须建在地理中心地带,从而也就产生了长短波授。“北京时间”与“北京当地时间”是两个概念, “北京时间”的发播不在北京,而在陕西蒲城(处于东七区)
(4)东八区
东八区(UTC/GMT+08:00)是比世界协调时间(UTC)/格林尼治时间(GMT)快8小时的时区,理论上的位置是位于东经112.5度至127.5度之间,是东盟标准的其中一个候选时区。当格林尼治标准时间为0:00时,东八区的标准时间为08:00
总结:
上面提到了很多知识:即UTC/GMT/CST/东八区
总结一下就是,北京时间(中国国家标准时间CST)采用东八区区时,即:
协调世界时(UTC)+8 / 格林尼治时间(GMT)+8
也就是说+8后的时间才是北京时间
2.3.2 显示用户
logname命令用于显示用户名称。
执行logname指令,它会显示目前用户的名称
语法为如下:
logname [--help][--version]
参数:
- --help 在线帮助。
- --vesion 显示版本信息。
显示登录账号的信息
logname
2.3.3 su切换账户
引子:
比如我们在新增用户、修改用户或者操作用户组的时候常常需要切换到管理员账户,这个时候,我们就可以使用su进行快速切换
su命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。
使用权限:所有使用者。
语法如下:
su
变更帐号为 root 并在执行 ls 指令后退出返回原使用者
su -c ls root
切换到root
su root
这样的话,我们就进入到了root用户下。
2.3.4 id命令
我们如果需要查看当前账号详细信息的时候,比如查看它的用户id、群组id以及所属组的时候,我们就可以使用id命令进行查看
id命令用于显示用户的ID,以及所属群组的ID。
id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。
使用者权限:所有用户
语法
id [-gGnru][--help][--version][用户名称]
参数说明:
- -g或--group 显示用户所属群组的ID。
- -G或--groups 显示用户所属附加群组的ID。
- -n或--name 显示用户,所属群组或附加群组的名称。
- -r或--real 显示实际ID。
- -u或--user 显示用户ID。
- -help 显示帮助。
- -version 显示版本信息。
显示当前用户信息
id
执行效果如下
总结
id命令参数虽然很多
但是常用的也就是id命令,不带参数的
主要看他的uid和组信息
2.3.5 sudo执行
比如我们使用普通用户操作用户或者操作用户组、以及修改网卡配置文件的时候,需要切换到root用户才操作,此时我们可以使用sudo命令提高普通用户的操作权限,以达到操作目的
sudo:控制用户对系统命令的使用权限,root允许的操作。
通过sudo可以提高普通用户的操作权限
使用者权限:普通用户
语法如下:
sudo -V
sudo -h
sudo -l
sudo -v
sudo -k
sudo -s
sudo -H
sudo [ -b ] [ -p prompt ] [ -u username/#uid] -s
sudo command
参数说明:
- -V 显示版本编号
- -h 会显示版本编号及指令的使用方式说明
- -l 显示出自己(执行 sudo 的使用者)的权限
- -v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
- -k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
- -b 将要执行的指令放在背景执行
- -p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
- -u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
- -s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
- -H 将环境变数中的 HOME 指定为要变更身份的使用者HOME目录(如不加 -u 参数就是系统管理者 root )
- command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令
sudo命令使用
sudo ls
指定root用户执行指令
sudo -u root ls -l
修改网卡配置文件
比如,在下面的例子中,我们使用普通用户修改网卡的配置文件,在进行保存的时候,提示我们【无法打开并写入文件】,那么此时,我们可以通过sudo命令来提升自己的写入权限
执行:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
执行效果如下(保存)
然后点击回车
那么我们在修改上面的 命令,使用sudo进行修改
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
执行效果如下(键入itcast密码)
执行保存
我们发现此时就不在报错了
2.3.6 top命令
在企业级开发中,开发人员(运维人员也会经常使用)常常为了查看服务器上运行的程序占用的CPU情况以及占用内存情况,目的就是检测我们的程序是否在正常范围内运行
top命令用于实时显示 process 的动态。
使用权限:所有使用者。
显示进程信息
top
执行效果如下
各进程(任务)的状态监控属性解释说明:
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
显示完整命令,与top命令不同的就是command属性像是进行了命令补全
top -c
执行效果如下
显示指定的进程信息,以下显示进程号为6972的进程信息,CPU、内存占用率等
top -p 6972
执行效果如下
top命令的用法很多
但是常用的就是top(不带参数),有的时候,在进程比较多的时候,我们常常记住进程的pid,然后通过top -p pid进行查看
也就是说,top+ top -p是经常被用到的
2.3.7 ps命令
ps命令类似于我们在Windows中通过任务管理器查看进程信息
Linux ps命令用于显示当前进程 (process) 的状态信息
使用者权限:所有用户
语法如下:
ps
显示进程信息
ps -A
显示指定用户信息
ps -u itcast
显示所有进程信息
ps -ef
2.3.8 kill命令
引子:
前面,我们刚刚学习完了Windows上开发,比如,我们经常遇到的要给问题就是,我们需要经常的启动或者重启tomcat,有的时候会报端口冲突,这个时候,我们可能就去Windows的任务管理器中去结束这个进程
那么在Linux中我们可以通过kill命令来实现Windwos上手工结束进程的操作
Linux kill命令用于删除执行中的程序或工作(可强制中断)
使用者权限:所有用户
语法如下:
kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
参数说明:
- -l <信息编号> 若不加<信息编号>选项,则-l参数会列出全部的信息名称。
- -s <信息名称或编号> 指定要送出的信息。
- [程序] [程序]可以是程序的PID或是PGID,也可以是工作编号。
杀死一个进程
kill 15642
强制杀死进程
kill -KILL 15642
彻底杀死进程
kill -9 15642
杀死指定用户所有进程
1.方法一 过滤出itcast用户进程
kill -9 $(ps -ef | grep itcast)
2.方法二,直接杀死
kill -u itcast
注意
上面列举了很多kill进程的命令
但是我们我们常用的就是kill -9命令,我们常常找到进程的pid
然后通过kill -9进行杀死进程
2.3.9 关机命令
shutdown命令可以用来进行关闭系统,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机
使用者权限:管理员用户
语法如下:
shutdown [-t seconds] [-rkhncfF] time [message]
参数说明:
- -t seconds : 设定在几秒钟之后进行关机程序。
- -k : 并不会真的关机,只是将警告讯息传送给所有使用者。
- -r : 关机后重新开机。
- -h : 关机后停机。
- -n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机。
- -c : 取消目前已经进行中的关机动作。
- -f : 关机时,不做 fcsk 动作(检查 Linux 档系统)。
- -F : 关机时,强迫进行 fsck 动作。
- time : 设定关机的时间。
- message : 传送给所有使用者的警告讯息。
立即关机
shutdown -h now
或者
shudown
指定1分钟后关机,1分钟关机并显示警告信息
shutdown +1 “System will shutdown after 1 minutes”
指定1分钟后重启,并发出警告信息
shutdown –r +1 “1分钟后关机重启”
2.3.10 重启命令
reboot命令用于用来重新启动计算机
使用者权限:管理员、普通(需要验证)用户
语法如下:
reboot [-n] [-w] [-d] [-f] [-i]
参数:
- -n : 在重开机前不做将记忆体资料写回硬盘的动作
- -w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
- -d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)
- -f : 强迫重开机,不呼叫 shutdown 这个指令
- -i : 在重开机之前先把所有网络相关的装置先停止
开始重新启动
reboot
重启效果如下
此时我们的虚拟机正在重启(别忘记使用root用户执行)
2.3.11 who命令
在企业级开发过程中,我们使用who命令的时候常常需要快速重启服务器,在重启之前需要检测下有没有终端在连接(处理程序),如果有,可能就不会重启(会私下询问何时弄完,弄完后在重启),如果没有其他人连接,将执行快速重启
who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等
使用者权限:所有使用者都可使用。
语法如下:
who - [husfV] [user]
参数说明:
- -H 或 --heading:显示各栏位的标题信息列;
- -i 或 -u 或 --idle:显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串;
- -m:此参数的效果和指定"am i"字符串相同;
- -q 或--count:只显示登入系统的帐号名称和总人数;
- -s:此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题;
- -w 或-T或--mesg或--message或--writable:显示用户的信息状态栏;
- --help:在线帮助;
- --version:显示版本信息
显示当前登录系统的用户
who
显示明细(标题)信息
who -H
由上图可知,截止到现在只有itcast在线。
2.3.12 timedatectl命令
引子:
timedatectl是用于控制系统时间和日期。可以用来查询和更改系统时钟于设定,同时可以设定和修改时区信息。
在实际开发过程中,系统时间的显示会和实际出现不同步;我们一般为了校正服务器时间、时区的时候会使用timedatectl命令
使用者权限:所有使用者都可使用,设置时间需要管理员,下面会标注。
几个常见的概念,进行总结如下:
显示系统的当前时间和日期,使用命令行中的timedatectl命令
timedatectl status
执行效果如下
在上面的示例中,分别显示时区、CST时间和UTC时间,其中,RTC time就是硬件时钟的时间,硬件时间默认为UTC。
查看当前时区
timedatectl | grep Time
或者
timedatectl
执行效果如下
上图显示中国时区
查看所有可用的时区
timedatectl list-timezones
执行效果如下(下面数据没有截全)
设置本地时区
timedatectl set-timezone "Asia/Shanghai"
执行效果如下
禁用时间同步(使用管理员账户)
timedatectl set-ntp false
在执行
timedatectl set-time "2019-03-11 20:45:00"
执行效果如下
注意: 如果ntp时间同步为true时无法修改时间设定,下面马上介绍
打开ntp
timedatectl set-ntp true
在执行
timedatectl set-time "2019-03-11 20:45:00"
执行效果如下(ntp时间同步为true时无法修改时间设定)
报错信息 如下
启用时间同步
NTP即Network Time Protocol(网络时间协议),是一个互联网协议,用于同步计算机之间的系统时钟。timedatectl实用程序可以自动同步你的Linux系统时钟到使用NTP的远程服务器。
要开始自动时间同步到远程NTP服务器,在终端键入以下命令。
timedatectl set-ntp true
比如,在上面我们使用timedatectl set-time "2019-03-11 20:45:00",如下图
此时我们执行timedatectl set-ntp true,发现时间正常同步过来了如下图
要禁用NTP时间同步,在终端键入以下命令
timedatectl set-ntp false
执行上面的 命令即可关闭ntp
总结
在实际使用过程中
我们经常使用timedatectl进行时区、CST、UTC的设置
2.3.13 clear命令
clear命令用于清除屏幕
使用者权限:所有使用者都可使用。
语法
clear
执行clear前
执行clear后
通过执行clear命令,就可以把缓冲区的命令全部清理干净了
2.3.14 exit命令
exit命令用于退出目前的shell。
执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。exit也可用在script,离开正在执行的script,回到shell。
退出码(exit status,或exit code)的约定:
0表示成功(Zero - Success)
非0表示失败(Non-Zero - Failure)
2表示用法不当(Incorrect Usage)
127表示命令没有找到(Command Not Found)
126表示不是可执行的(Not an executable)
>=128 信号产生
语法如下
exit [状态值]
退出终端
# exit
exit会被经常在shell中使用
我们在明天的课程【综合案例】中会使用到exit
2.4 总结
用户账号管理和用户组是我们在实际使用过程中常用的命令,学习完创建账号、创建组后,需要通过gpasswd命令将用户添加到组,这也是我们学习的最终目的
系统管理的常用命令都是在开发过程中经常使用到的