系统管理
systemctl:管理系统服务
Centos7 之后从 init 完全换成了 systemd 的启动方式,systemd 启动服务的机制主要是通过 systemctl 的这个系统服务管理指令来处理。systemctl 在用法上也囊括 service / chkconfig / setup / init 的大部分功能。
语法格式:
systemctl [参数] [服务]
# 常用参数:
start 启动服务
stop 停止服务
restart 重启服务
enable 使某服务开机自启
disable 关闭某服务开机自启
status 查看服务状态
list -units --type=service 列举所有已启动服务
参考实例:
# 启动httpd服务:
systemctl start httpd.service
# 停止httpd服务:
systemctl stop httpd
# 重启httpd服务:
systemctl restart httpd.service
# 查看httpd服务状态:
systemctl status httpd.service
# 使httpd开机自启:
systemctl enable httpd.service
# 取消httpd开机自启:
systemctl disable httpd.service
# 列举所有已启动服务(unit单元) :
systemctl list-units --type=service
ps:显示进程状态
ps 命令是“process status”的缩写,ps命令用于显示当前系统的进程状态。可以搭配 kill 指令随时中断、删除不必要的程序。
ps 命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
语法格式:
ps [参数]
# 常用参数:
-A, -e # 显示所有进程
-p, p, --pid <PID> # 指定程序识别码,并列出该程序的状况
-u, U, --user <UID> # 列出属于该用户的进程的状况,也可使用用户名称来指定
-C <命令> # 列出指定命令的状况
-f # 显示完整格式的输出。显示UID,PPIP,C与STIME栏位
-aux # 显示所有进程,除了阶段作业领导者之外
参考实例:
# 查看所有进程
ps -ef
# 查询指定进程
ps -ef | grep 进程名/进程号
# 杀死进程命令:kill
kill -9 pid(进程号)
# 搜索命令 grep :用于过滤搜索指定内容
# 格式:在指定文件中查找带有指定内容的信息
grep [参数] 指定内容 指定文件
-i # 不区分大小写的查找指定内容信息
## 管道运算符 | :将多个命令串起来,处理模版输出的内容。常与grep组合使用,查所有文件(/进程/软件)的指定文件(/进程/软件)等
# 格式: 把命令1的输出作为命令2的输入
命令1 | 命令2
# 实例:当前目录下从所有的文件资源中查找1.txt文件资源
ll | grep 1.txt # 先把root目录下的所有资源查出来 | 在所有资源中搜索1.txt资源
列出 PID 与相关信息
各相关信息的意义为:
- F :代表这个程序的旗标 (flag), 4 代表使用者为 superuser;
- S :代表这个程序的状态 (STAT);
- UID :代表执行者身份
- PID :进程的ID号!
- PPID :父进程的ID;
- C :CPU使用的资源百分比
- PRI :指进程的执行优先权(Priority的简写),其值越小越早被执行;
- NI :这个进程的nice值,其表示进程可被执行的优先级的修正数值。
- ADDR :这个是内核函数,指出该程序在内存的那个部分。如果是个执行 的程序,一般就是『 - 』
- SZ :使用掉的内存大小;
- WCHAN :目前这个程序是否正在运作当中,若为 - 表示正在运作;
- TTY :登入者的终端机位置;
- TIME :使用掉的 CPU 时间。
- CMD :所下达的指令名称
列出目前所有的正在内存当中的程序
- USER:该进程属于那个使用者账号。
- PID :该进程的进程ID号。
- %CPU:该进程使用掉的 CPU 资源百分比;
- %MEM:该进程所占用的物理内存百分比;
- VSZ :该进程使用掉的虚拟内存量 (Kbytes)
- RSS :该进程占用的固定的内存量 (Kbytes)
- TTY :该进程是在那个终端机上面运作,若与终端机无关,则显示 ?。另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:该程序目前的状态,主要的状态有:
- R :该程序目前正在运作,或者是可被运作;
- S :该程序目前正在睡眠当中,但可被某些讯号(signal) 唤醒。
- T :该程序目前正在侦测或者是停止了;
- Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
- START:该进程被触发启动的时间;
- TIME :该进程实际使用 CPU 运作的时间。
- COMMAND:该程序的实际指令。
kill:杀死进程
kill 命令用来删除执行中的程序或工作。
kill 命令可将指定的信号发送给相应的进程或工作。
kill 命令默认使用信号为 15,用于结束进程或工作。如果进程或工作忽略此信号,则可以使用信号 9,强制杀死进程或作业。
语法格式:
kill [参数] [进程号]
# 常用参数:
-l 列出系统支持的信号
-s 指定向进程发送的信号
-a 处理当前进程时不限制命令名和进程号的对应关系
-p 指定kill命令只打印相关进程的进程号,而不发送任何信号
参考实例:
# 列出系统支持的信号列表:
kill -l
# 查找进程,并用kill杀掉 :
$ ps
PID TTY TIME CMD
1951 pts/0 00:00:00 bash
2446 pts/0 00:00:00 ps
# 查看bash的进程ID为1951,然后用kill强制杀掉
kill -9 1951
find:查找和搜索文件
find 命令可以根据给定的路径和表达式查找的文件或目录。
find 参数选项很多,并且支持正则,功能强大。和管道结合使用可以实现复杂的功能,是系统管理者和普通用户必须掌握的命令。
find 如不加任何参数,表示查找当前路径下的所有文件和目录,如果服务器负载比较高尽量不要在高峰期使用 find 命令,find命令模糊搜索还是比较消耗系统资源的。
语法格式:
find [参数] [路径] [查找和搜索范围]
# 常用参数:
-name 按名称查找
-size 按大小查找
-user 按属性查找
-type 按类型查找
-iname 忽略大小写
参考示例:
# 列出当前目录及子目录下所有文件和文件夹:
find .
# 使用-name参数查看根目录下面所有的.conf结尾的配置文件:
find / -name "*.conf"
# 使用-size参数查看/etc目录下面大于1M的文件:
find /etc -size +1M
# 查找当前用户主目录下的所有文件:
find $HOME -print
# 在/home目录下查找以.txt结尾的文件名:
find /home -name "*.txt"
# 在/var/log目录下忽略大小写查找以.log结尾的文件名:
find /var/log -iname "*.log"
# 搜索超过七天内被访问过的所有文件:
find . -type f -atime +7
# 搜索访问时间超过10分钟的所有文件:
find . -type f -amin +10
# 找出/home下不是以.txt结尾的文件:
find /home ! -name "*.txt"
crontab:定时执行任务
crontab 是英文“cron table”的简写。该命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
Linux下的任务调度分为两类,系统任务调度和用户任务调度。
- 系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。/etc/crontab文件是系统任务调度的配置文件
用户任务调度:用户定期要执行的任务,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。
- /var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,其文件名与用户名一致。
- /etc/crontab 这个文件负责调度各种管理和维护任务。
- /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
- 还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。
语法格式:
crontab [参数]
# 常用参数:
-e 编辑该用户的计时器设置
-l 列出该用户的计时器设置
-r 删除该用户的计时器设置
-u 指定要设定计时器的用户名称
参考实例:
# 查看当前定时任务:
crontab -l
# 创建、编辑定时任务:
crontab -e
# 删除本用户所有的定时任务:
crontab -r
使用 crond 服务设置任务的参数格式:
minute hour day month week command
分 时 日 月 周 命令
# 参数字段说明:
minute 表示分钟,是从0到59之间的任何整数
hour 表示小时,是从0到23之间的任何整数
day 表示日期,是从1到31之间的任何整数
month 表示月份,是从1到12之间的任何整数
week 表示星期,是从0到7之间的任何整数,其中0或7代表星期日
command 要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
# 时间的操作符有
* # 取值范围内的所有数字
/ # 每隔n单位时间。例如:*/10 表示 每10分钟
- # 一个时间范围段。例如:8-10点 表示 8到10点
, # 分隔时段,散列数字。例如:6,0,1 表示 周六,周天,周一
# 注意事项:
注意事项:
- 在 crontab 命令中只有 “绝对路径”,不存在相对路径,故执行任何命令都需要写绝对路径
- 如果有些时间字段没有设置,则需要使用星号(*)占位
- 如果使用cron运行脚本,请将脚本执行的结果写入指定日志文件, 观察日志内容是否正常。
- 命令或脚本使用bash命令,防止脚本没有增加执行权限(/usr/bin/bash)
定时任务实例:
# 每小时的第5分钟执行 ls 命令
5 * * * * ls
# 每5分钟执行 ls 命令
*/5 * * * * ls
# 每天的 4:30 执行 ls 命令
30 4 * * * ls
# 每小时执行 ls 命令
0 * * * * ls
# 每天执行 ls 命令
0 0 * * * ls
# 每周执行 ls 命令
0 0 * * 0 ls
# 每年执行 ls 命令
0 0 1 1 * ls
# 每月 8号 的 7:20 执行 ls 命令
20 7 8 * * ls
# 每年的 6月28号 5:30 执行 ls 命令
30 5 28 6 * ls
# 每星期日的 6:30 执行 ls 命令
30 6 * * 0 ls
# 每月 10号和20号 的 4:30 执行 ls 命令
30 4 10,20 * * ls
# 每天 8~11点 的第 25 分钟执行 ls 命令
25 8-11 * * * ls
# 每个月中每隔 10天 的 5:30 执行 ls 命令。即:每月的 1、11、21、31日 在 5:30 执行一次 ls 命令
30 5 */10 * * ls
uname:显示系统信息
uname 命令的英文全称即“Unix name”。
用于显示系统相关信息,比如主机名、内核版本号、硬件架构等。
如果未指定任何选项,其效果相当于执行”uname -s”命令,即显示系统内核的名字。
语法格式:
uname [参数]
# 常用参数:
-a 显示系统所有相关信息
-m 显示计算机硬件架构
-n 显示主机名称
-r 显示内核发行版本号
-s 显示内核名称
-v 显示内核版本
-p 显示主机处理器类型
-o 显示操作系统名称
-i 显示硬件平台
参考实例:
# 显示系统主机名、内核版本号、CPU类型等信息:
$ uname -a
Linux linuxcool 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
# 仅显示系统主机名:
$ uname -n
linuxcool
# 显示当前系统的内核版本 :
$ uname -r
3.10.0-123.el7.x86_64
# 显示当前系统的硬件架构:
$ uname -i
x86_64
sudo:以系统管理者的身份执行指令
sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码。
sudo 允许一个已授权用户以超级用户或者其它用户的角色运行一个命令。当然,能做什么不能做什么都是通过安全策略来指定的。sudo 支持插件架构的安全策略,并能把输入输出写入日志。第三方可以开发并发布自己的安全策略和输入输出日志插件,并让它们无缝的和 sudo 一起工作。默认的安全策略记录在 /etc/sudoers 文件中。而安全策略可能需要用户通过密码来验证他们自己。也就是在用户执行 sudo 命令时要求用户输入自己账号的密码。如果验证失败,sudo 命令将会退出。
语法格式:
sudo [参数]
# 常用参数:
-v 因为 sudo 在第一次执行时或是在 N分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过N分钟,也会问密码
-k 强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
-b 将要执行的指令放在背景执行
-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称,%h 会显示主机名称
-s 执行环境变数中的SHELL 所指定的shell ,或是 /etc/passwd 里所指定的 shell
command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令
参考实例:
# 切换到root用户:
sudo su
# 指定用户执行命令:
sudo -u userb ls -l
# 以root权限执行上一条命令:
sudo !!
# 列出目前的权限:
sudo -l
# 列出 sudo 的版本资讯:
sudo -V
date:显示日期与时间
date 命令可以用来显示或设定系统的日期与时间,在显示方面,可以设定欲显示的格式,格式设定为一个加号后接数个标记。
若是不以加号作为开头,则表示要设定时间,而时间格式 MMDDhhmm[[CC]YY][.ss]
,其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数。
语法格式:
date [选项] [+输出形式]
# 常用参数:
-d datestr 显示 datestr 中所设定的时间 (非系统时间)
-s datestr 将系统时间设为 datestr 中所设定的时间
-u 显示目前的格林威治时间
参考实例:
# 显示当前时间:
$ date
三 4月 12 14:08:12 CST 2019
$ date '+%c'
2019年04月17日 星期三 14时09分02秒
# 按自己的格式输出:
$ date '+usr_time: $1:%M %P -hey'
usr_time: $1:16 下午 -hey
# 显示时间后跳行,再显示目前日期:
$ date '+%T%n%D'
# 只显示月份与日数:
$ date '+%B %d'
# 显示日期与设定时间(12:34:56):
$ date --date '12:34:56'
hostnamectl:修改主机名称
hostnamectl 可用于查询和更改系统主机名和相关设置。
此工具区分三种不同的主机名:
- 高级“漂亮”主机名,其中可能包括特殊字符(例如 “lennart’s laptop”)
- 静态主机名,用于在引导时初始化内核主机名(例如 “lennarts膝上型电脑”)
- 默认瞬时主机名(从网络配置接收到的)
如果是静态的主机名已设置且有效(不是 localhost),则不使用临时主机名
语法格式:
hostnamectl [参数]
# 常用参数:
-H 操作远程主机
status 显示当前主机名设置
set-hostname 设置系统主机名
参考实例:
# 显示当前主机名称的配置信息:
hostnamectl status
# 使用set-hostname命令来设置或修改主机名称:
hostnamectl set-hostname linuxprobe
source:在当前Shell环境中从指定文件读取和执行命令
- source 命令(从 C Shell 而来)是 bash shell 的内置命令。
点命令(就是个点符号,从 Bourne Shell 而来)是 source 的另一名称。
- source 命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
- source 返回文件最后一个命令的返回值,如果文件不能读取则会失败。
语法格式:
source [文件]
参考实例:
# 读取和执行/root/.bash_profile文件:
source ~/.bash_profile
# 执行刚修改的初始化文件,使之立即生效:
source /etc/bash_profile
# 在一些工具的执行过程中,会把环境变量设置以”export XXX=XXXXXX”或”declare XXX=XXXXXX”的形式导出到 一个文件中,然后用source加载该文件内容到执行环境中:
[root@linuxcool ~]# vi /etc/profile
[root@linuxcool ~]# source /etc/profile
如果把一些命令做成一个文件,让它自动顺序执行,对于需要多次反复编译系统核心的用户来说会很方便,而用 source 命令就可以做到这一点,它的作用就是把一个文件的内容当成 shell 来执行。
先在 linux 的源代码目录下(如/usr/src/linux-2.4.20)建立一个文件,如 make_command,在其中输入一下内容:
make mrproper && make menuconfig && make dep && make clean && make bzImage && make modules && make modules_install && cp arch/i386/boot/bzImage /boot/vmlinuz_new && cp System.map /boot && vi /etc/lilo.conf && lilo -v
文件建立好之后,每次编译核心的时候,只需要在 /usr/src/linux-2.4.20 下输入:
source make_command
ulimit:设置用户可使用的资源
ulimit :设置用户可使用的资源,如 CPU、内存、句柄等(临时修改,重启后失效)。
用法:ulimit [参数] [限制]
参数详解:
- -a :列出系统所有资源限制的值
- -S:设置软限制,超出设定的值会告警
- -H :设置硬限制,超出设定的值会报错
- -c:限制每个核心文件的最大容量,单位为 blocks
核心文件(core file):当某些程序发生错误时,系统可能会将该程序在内存中的信息写成文件(核心文件)
- -d:进程数据段的最大值,单位为 Kbytes
- -f:当前 shell 进程可创建的最大文件容量,单位为 blocks
- -l:最大可加锁的物理内存大小,单位为 Kbytes
- -m:可以使用的最大常驻内存大小,单位为 Kbytes
- -n:每个进程可以同时打开的最大文件句柄数
- -p:管道缓冲区的最大值,单位为 Kbytes
- -s:线程栈的最大值,单位为 Kbytes
- -t:进程可以使用(占用) CPU 的最大时间,单位为秒
- -u:用户可运行的最大进程并发数
- -v:当前 shell 进程可使用的最大虚拟内存,单位为 Kbytes
使用示例
在命令 [限制] 处,设置值,即可调整限制值,只对当前 shell 有效
S表示软限制;H表示硬限制;如果不指明,则表示软硬皆设置;
[root@localhost solr-7.7.3]# ulimit -u 4096 [root@localhost solr-7.7.3]# ulimit -u 65535 [root@localhost solr-7.7.3]# ulimit -u 65535
永久生效 ulimit
修改 /etc/security/limits.conf 文件,更新或新增内容如下(示例):
[root@localhost solr-7.7.3]# vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 * soft nproc 65536 * hard nproc 65536
/etc/security/limits.conf 配置详解
- 格式:
<domain> <type> <item> <value>
参数详解:
domain 是指生效实体
- 用户名
- 也可以通过 @group 指定用户组
- 使用 * 表示默认值
type 指限制类型
- soft 软限制
- hard 硬限制
item 限制资源
- core :同 ulimit -c
- data :同 ulimit -d
- fsize :同 ulimit -f
- memloc :同 ulimit -l
- nofile :同 ulimit -n
- stack :同 ulimit -s
- cpu :同 ulimit -t
- nproc :同 ulimit -u
- sigpengding :同 ulimit -i
- msgqueue :同 ulimit -q
- maxlogins:指定用户可以同时登陆的数量
- maxsyslogins :系统可以同时登陆的用户数
- priority :用户进程运行的优先级
- locks :用户可以锁定的文件最大值
防火墙常用命令
防火墙的区别:
- CentOS6 自带的防火墙是 iptables,CentOS7自带的防火墙是 firewall。
- iptables:用于过滤数据包,属于网络层防火墙。
- firewall:底层还是使用 iptables 对内核命令动态通信包过滤的,简单理解就是 firewall 是 centos7 下管理 iptables 的新命令。
iptables 防火墙
安装 iptables 防火墙:
# 通过 yum install 命令联网下载安装iptables
yum install iptables-services
常用命令:
# 查看防火墙状态
service iptables status | systemctl status iptables
# 启动防火墙
service iptables start | systemctl start iptables
# 重启防火墙
service iptables restart | systemctl restart iptables
# 停止防火墙
service iptables stop | systemctl stop iptables
# 将iptables设置为开机启动
systemctl enable iptables.service
# 永久关闭防火墙
chkconfig iptables off
# 永久关闭后重启
chkconfig iptables on
开启 80 端口
# 编辑iptales
vim /etc/sysconfig/iptables
# 加入以下代码然后保存退出
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
#重启防火墙
service iptables restart
查看防火墙策略、开放的端口
iptables -nL 或 /sbin/iptables -L -n
firewall 防火墙
查看 firewall 服务状态
systemctl status firewalld
# 出现 Active: active (running)绿色高亮显示则表示是启动状态。
# 出现 Active: inactive (dead)灰色表示停止状态。
查看 firewall 的状态
firewall-cmd --state
开启、重启、关闭firewall服务
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
查看防火墙规则
firewall-cmd --list-all
查看、开放、关闭端口
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
firewall其他命令
# 查看防火墙状态,是否是running
firewall-cmd --state
# 重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --reload
# 列出支持的zone
firewall-cmd --get-zones
# 列出支持的服务,在列表中的服务是放行的
firewall-cmd --get-services
# 查看ftp服务是否支持,返回yes或者no
firewall-cmd --query-service ftp
# 临时开放ftp服务
firewall-cmd --add-service=ftp
# 永久开放ftp服务
firewall-cmd --add-service=ftp --permanent
# 永久移除ftp服务
firewall-cmd --remove-service=ftp --permanent
# 永久添加80端口
firewall-cmd --add-port=80/tcp --permanent
# 查看规则,这个命令和iptables的相同
iptables -L -n
# 查看帮助
man firewall-cmd
查看 cpu、内存环境信息
2C2G,4C4G,8C16G,16C32G
这里 C 指 cpu 物理核数,G 指总内存大小
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
# C=CPU总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
# 查看内存信息。MemTotal键值即为内存大小,单位kb
cat /proc/meminfo
查看内存使用信息
# 以合适的单位显示内存使用情况
free -h
# 说明
Mem # (第二行)是内存的使用情况。
Swap # (第三行)是交换空间的使用情况。
total # 列显示系统总的可用物理内存和交换空间大小。
used # 列显示已经被使用的物理内存和交换空间。
free # 列显示还有多少物理内存和交换空间可用使用。
shared # 列显示被共享使用的物理内存大小。
buff/cache # 列显示被 buffer 和 cache 使用的物理内存大小。
available # 列显示还可以被应用程序使用的物理内存大小。
# 释放缓存
# 在清理缓存先要先把buffe中的数据先写入到硬盘中
sync
# 手动释放内存的命令
echo 1 > /proc/sys/vm/drop_caches
drop_caches的值可以是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)。改为其他值后,只能系统重启恢复为0,无法手动改为0
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存
top:实时显示系统中各个进程的资源占用状况
查看 GPU 使用信息
Nvidia 显卡自带一个命令行工具可以查看显存的使用情况:
# 查看显存的使用情况快照
nvidia-smi
# 周期性(10s)的输出显卡的使用情况
watch -n 10 nvidia-smi
表格参数详解:
- GPU:本机中的GPU编号(有多块显卡的时候,从0开始编号)图上GPU的编号是:0
- Fan:风扇转速(0%-100%),N/A表示没有风扇
- Name:GPU类型,图上GPU的类型是:Tesla T4
- Temp:GPU的温度(GPU温度过高会导致GPU的频率下降)
- Perf:GPU的性能状态,从P0(最大性能)到P12(最小性能),图上是:P0
- Persistence-M:持续模式的状态,持续模式虽然耗能大,但是在新的GPU应用启动时花费的时间更少,图上显示的是:off
- Pwr:Usager/Cap:能耗表示,Usage:用了多少,Cap总共多少
- Bus-Id:GPU总线相关显示,domain:bus:device.function
- Disp.A:Display Active ,表示GPU的显示是否初始化
- Memory-Usage:显存使用率
- Volatile GPU-Util:GPU使用率
- Uncorr. ECC:关于ECC的东西,是否开启错误检查和纠正技术,0/disabled,1/enabled
- Compute M:计算模式,0/DEFAULT,1/EXCLUSIVE_PROCESS,2/PROHIBITED
- Processes:显示每个进程占用的显存使用率、进程号、占用的哪个GPU
用户管理
passwd:修改用户账户密码
passwd 命令用于设置用户的认证信息,包括用户密码、账户锁定、密码失效等。
直接运行 passwd 命令修改当前的用户密码,对其他用户的密码操作需要管理员权限。
常用格式:
passwd [参数] 用户名
# 常用参数:
-d 删除密码,使账号无口令
-l 锁定用户密码,无法被用户自行修改。仅 root 用户可用
-u 解开已锁定用户密码,允许用户自行修改。仅 root 用户可用
-e 密码立即过期,下次登陆强制修改密码
-k 保留即将过期的用户在期满后能仍能使用
-S 查询密码状态。仅 root 用户可用
--stdin 可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用
参考实例:
# 修改当前登陆的账户密码:
passwd
# 修改其他用户密码(假设有linuxcool用户):
passwd linuxcool
# 锁定密码不允许用户修改:
passwd -l linuxcool
# 解除锁定密码,允许用户修改:
passwd -u linuxcool
# 下次登陆强制改密码:
passwd -e linuxcool
# 清除登录密码。清除之后登录时无需密码,风险极大,不推荐使用:
passwd -d linuxcool
# 查询密码状态:
passwd -S linuxcool
查看用户列表和用户组
# 查看所有用户的列表
cat /etc/passwd
# 说明:
# /etc/passwd 中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
# 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
# 查看用户组
cat /etc/group
# 删除用户组
groupdel 用户组
# 查看当前登录用户的用户组
groups
# 查看当前登录用户名
whoami
创建/删除/修改/切换用户
useradd:创建用户
- useradd 命令用来创建新的用户或更改用户的信息。
- useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。
- 使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。
语法格式:
useradd [参数] [用户名]
# 常用参数:
-u, -uid UID 指定用户id
-g, -gid GROUP 指定用户对应的用户组名称或ID
-d, -home-dir HOME_DIR 新用户每次登陆时所使用的家目录
-m 用户目录不存在时则自动创建
-M 不建立用户家目录,优先于/etc/login.defs文件设定
-D 改变新建用户的预设值
-c 添加备注文字
-e 用户终止日期,日期的格式为YYYY-MM-DD
-f 用户过期几日后永久停权。当值为0时用户立即被停权,而值为-1时则关闭此功能,预设值为-1
-G 定义此用户为多个不同组的成员
-n 取消建立以用户名称为名的群组
-r, -system 建立系统帐号
-p, -password PASSWORD 新帐户的加密密码
-l, -no-log-init 不要将用户添加到lastlog和faillog数据库
-s, -shell SHELL 新帐户的登录shell
-o, -non-unique 允许创建具有重复(非唯一)UID的用户
-U, -user-group 创建与用户同名的组
参考实例:
# 添加新用户linuxcool:
useradd linuxcool
# 不创建家目录,并且禁止登陆:
useradd -M -s /sbin/nologin linuxcool
# 添加新用户linuxcool,指定UID为888,指定归属用户组为root,cool成员,其shell类型为/bin/sh:
useradd -u 888 -s /bin/sh -G root,cool linuxcool
# 添加新用户linuxcool,设置家目录为/home/linuxcool,用户过期时间为2019/05/01.过期后两天停权:
useradd -e "2019/05/01" -f 2 -d /home/linuxcool linuxcool
userdel:删除用户
- userdel 命令用于删除指定的用户及与该用户相关的文件,英文全称即“user delete”。
其实 userdel 命令实际上是修改了系统的用户账号文件 /etc/passwd、/etc/shadow以及/etc/group文件。这与Linux系统”一切操作皆文件”的思想正好吻合。
- 值得注意的是,但是如果有该要删除用户相关的进程正在运行,userdel 命令通常不会删除一个用户账号。
如果确实必须要删除,可以先终止用户进程,然后再执行userdel命令进行删除。但是 userdel 命令也提供了一个面对该种情况的参数,即”-f”选项。
语法格式:
userdel [参数] [用户名]
# 常用参数:
-f 强制删除用户账号
-r 删除用户主目录及其中的任何文件
参考实例:
# 删除用户,但不删除其家目录及文件:
userdel linuxcool
# 删除用户,并将其家目录及文件一并删除:
userdel -r linuxcool
# 强制删除用户:
userdel -f linuxcool
usermod:修改用户属性
语法格式:
usermod [参数] [用户名]
# 常用参数:
-L 锁定用户密码,使密码无效。
-s 修改用户登入后所使用的shell
-u 修改用户ID。
-U 解除密码锁定。
su:切换用户
语法格式:
su USER_NAME
创建/删除工作组
groupadd:新建工作组
groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
语法格式:
groupadd [参数]
常用参数:
-g 指定新建工作组的id
-r 创建系统工作组,系统工作组的组ID小于500
-K 覆盖配置文件“/ect/login.defs”
-o 允许添加组ID号不唯一的工作组
参考实例:
# 使用-g参数新建linuxcool工作组名,1005是工作组id:
groupadd -g 1005 linuxcool
# 使用-r创建系统工作组:
groupadd -r -g 368 linuxcool
groupdel:删除用户组
groupdel命令用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。
userdel修改系统账户文件,删除与 GROUP 相关的所有项目。给出的组名必须存在。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
语法格式:
groupdel [参数] [群组名称]
# 常用参数:
-h 显示帮助信息
-R 在chroot_dir目录中应用更改并使用chroot_dir目录中的配置文件
参考实例:
# 使用groupdel命令删除linuxcool工作组:
groupdel linuxcool
# 查看linuxcool组是否删除成功。通过查看/etc/group配置文件里面不存在linuxcool组,说明已经被删除了。
more /etc/group | grep linuxcool
将用户加入到用户组
# 将指定用户加入到用户组
gpasswd -a USER_NAME GROUP_NAME
# 将当前用户加入到用户组
gpasswd -a $USER GROUP_NAME
# 更新用户组
newgrp GROUP_NAME
磁盘管理
df:显示磁盘空间使用情况
- df 命令的英文全称即“Disk Free”,是用于显示系统上可使用的磁盘空间。
- 默认显示单位为KB,建议使用“df -h”的参数组合,根据磁盘容量自动变换合适的单位,更利于阅读。
- 日常普遍用该命令可以查看磁盘被占用了多少空间、还剩多少空间等信息。
语法格式:
df [参数] [指定文件]
# 常用参数:
-a 显示所有系统文件
-h 以容易阅读的方式显示。根据磁盘容量自动变换合适的单位,更利于阅读。
-H 以1000字节为换算单位来显示
-i 显示索引字节信息
-l 只显示本地文件系统
-t <文件系统类型> 只显示指定类型的文件系统
-T 输出时显示文件系统类型
-B <块大小> 指定显示时的块大小
-k 指定块大小为1KB
-sync 在取得磁盘使用信息前,先执行sync命令
参考实例:
# 以容易阅读的方式显示磁盘分区使用情况:
[root@linuxcool ~]$ df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 1.1M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/fedora_linuxhell-root 15G 2.0G 14G 13% /
tmpfs 2.0G 4.0K 2.0G 1% /tmp
/dev/sda1 976M 126M 784M 14% /boot
tmpfs 390M 0 390M 0% /run/user/0
# 显示指定文件所在分区的磁盘使用情况:
[root@linuxcool ~]$ df /etc/dhcp
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/fedora_linuxcool-root 15718400 2040836 13677564 13% /
# 显示文件类型为ext4的磁盘使用情况:
[root@linuxcool ~]$ df -t ext4
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda1 999320 128264 802244 14% /boot
lsblk:查看系统的磁盘
lsblk 命令的英文是“list block”,即用于列出所有可用块设备的信息,而且还能显示它们之间的依赖关系,但是它不会列出 RAM 盘的信息。
lsblk 命令包含在 util-linux-ng 包中,现在该包改名为 util-linux。
语法格式:
lsblk [参数]
# 常用参数:
-a 显示所有设备
-b 以bytes方式显示设备大小
-d 不显示 slaves 或 holders
-D 显示弃置的性能
-e 排除设备
-f 显示文件系统信息
-h 显示帮助信息
-i 只使用ASCII字符
-m 显示权限信息
-l 使用列表格式显示
-n 不显示标题
-o 输出列
-P 使用key=”value”格式显示
-r 使用原始格式显示
-t 显示拓扑结构信息
参考实例:
# lsblk命令默认情况下将以树状列出所有块设备:
[root@linuxcool ~ ]$ lsblk
lsblk NAME MAJ:MIN rm SIZE RO type mountpoint
sda 8:0 0 232.9G 0 disk
├─sda1 8:1 0 46.6G 0 part /
├─sda2 8:2 0 1K 0 part
├─sda5 8:5 0 190M 0 part /boot
├─sda6 8:6 0 3.7G 0 part [SWAP]
├─sda7 8:7 0 93.1G 0 part /data
└─sda8 8:8 0 89.2G 0 part /personal
sr0 11:0 1 1024M 0 rom
# 默认选项不会列出所有空设备:
[root@linuxcool ~]$ lsblk -a
# 也可以用于列出一个特定设备的拥有关系,同时也可以列出组和模式:
[root@linuxcool ~]$ lsblk -m
# 要获取SCSI设备的列表,你只能使用-S选项,该选项是用来以颠倒的顺序打印依赖的:
[root@linuxcool ~]$ lsblk -S
# 例如,你也许想要以列表格式列出设备,而不是默认的树状格式。可以将两个不同的选项组合,以获得期望的输出:
[root@linuxcool ~]$ lsblk -nl
定位较大文件目录并清理硬盘
# 搜索根目录下超过指定大小的文件(按大小降序排序,单位MB)
find / -type f -size +500M -print0 | xargs -0 du -hm | sort -gr
# (进入根目录 / )循环定位最大文件目录:
du -h --max-depth=1
设备管理
mount:文件系统挂载
mount 命令用于加载文件系统到指定的加载点。
此命令的最常用于挂载 cdrom,使可以访问cdrom中的数据,因为将光盘插入cdrom 中,Linux 并不会自动挂载,必须使用 Linux mount 命令来手动完成挂载。
语法格式:
mount [参数]
常用参数:
-t 指定挂载类型
-l 显示已加载的文件系统列表
-a 加载文件“/etc/fstab”中描述的所有文件系统
-n 加载没有写入文件“/etc/mtab”中的文件系统
-r 将文件系统加载为只读模式
-V 显示程序版本
-h 显示帮助信息并退出
参考实例:
# 显示已加载的文件系统列表
mount -l
# 启动所有挂载:
mount -a
# 挂载 /dev/cdrom 到 /mnt:
mount /dev/cdrom /mnt
# 挂载nfs格式文件系统:
mount /123 /mnt -t nfs
# 挂载第一块盘的第一个分区到/etc目录 :
mount /dev/sda1 /etc -t ext4 -o loop,default
# 判断路径是否已挂载
mountpoint -q file_path
# 取消挂载
umount /mynfs