Linux 常用命令(系统管理、用户管理、磁盘管理、设备管理)大全(二)

本文涉及的产品
云防火墙,500元 1000GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: Linux 常用命令(系统管理、用户管理、磁盘管理、设备管理)大全(二)

系统管理

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 与相关信息

1605493-20190314100453163-78813983.png
img

各相关信息的意义为:

  • F :代表这个程序的旗标 (flag), 4 代表使用者为 superuser;
  • S :代表这个程序的状态 (STAT);
  • UID :代表执行者身份
  • PID :进程的ID号!
  • PPID :父进程的ID;
  • C :CPU使用的资源百分比
  • PRI :指进程的执行优先权(Priority的简写),其值越小越早被执行;
  • NI :这个进程的nice值,其表示进程可被执行的优先级的修正数值。
  • ADDR :这个是内核函数,指出该程序在内存的那个部分。如果是个执行 的程序,一般就是『 - 』
  • SZ :使用掉的内存大小;
  • WCHAN :目前这个程序是否正在运作当中,若为 - 表示正在运作;
  • TTY :登入者的终端机位置;
  • TIME :使用掉的 CPU 时间。
  • CMD :所下达的指令名称

列出目前所有的正在内存当中的程序

1605493-20190314100519534-2131634848.png

  • 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 来执行。

  1. 先在 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
  2. 文件建立好之后,每次编译核心的时候,只需要在 /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 :用户可以锁定的文件最大值


防火墙常用命令

参考:Linux查看、开启、关闭防火墙操作

防火墙的区别

  • 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:实时显示系统中各个进程的资源占用状况

参考:Linux top命令详解

Snipaste_2022-03-03_22-06-55.jpg

12158715-3b79ddcf003fb780.png


查看 GPU 使用信息

参考:【GPU】nvidia-smi命令

Nvidia 显卡自带一个命令行工具可以查看显存的使用情况:

# 查看显存的使用情况快照
nvidia-smi

# 周期性(10s)的输出显卡的使用情况
watch -n 10 nvidia-smi

20180816193938730.jpg

表格参数详解:

  • 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


定位较大文件目录并清理硬盘

参考:LINUX下查找大文件及大的文件夹

# 搜索根目录下超过指定大小的文件(按大小降序排序,单位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


相关文章
|
1天前
|
Linux Shell 数据安全/隐私保护
|
2天前
|
域名解析 网络协议 安全
|
9天前
|
监控 Linux Shell
|
8天前
|
运维 监控 网络协议
|
9天前
|
Linux 开发工具 Perl
Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
【10月更文挑战第20天】Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
26 4
|
6月前
|
Linux
linux(二十八)磁盘管理类命令df、du和free查看磁盘和目录空间占用
linux(二十八)磁盘管理类命令df、du和free查看磁盘和目录空间占用
134 0
|
6月前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
293 10
|
6月前
|
IDE Linux Shell
linux查看硬盘是否挂载--和磁盘相关命令
linux查看硬盘是否挂载--和磁盘相关命令
197 0
|
3月前
|
Linux
linux磁盘管理命令
磁盘管理 查看挂载情况 lsblk -f 挂载步骤 1.虚拟机增加硬盘 2.分区命令 fdisk /dev(设备文件)/sdb m 显示命令列表 p 显示磁盘分区 n 新增分区 d 删除分区 w 写入并退出 3.格式化磁盘,并挂载 mkfs -t ext4 /dev/sdb1 mount /dev/sdb1 文件路径
|
6月前
|
运维 Linux
Linux系统调优详解(五)——磁盘IO状态查看命令
Linux系统调优详解(五)——磁盘IO状态查看命令
133 5