linux常用命令

关机重启

命令 说明 备注
shutdown -h now 立即关机 hhalt的意思
shutdown -h 1 通知给所有终端知道,并于1分钟后关机 默认shutdown的效果,使用-c取消
shutdown -r now 立即重启 rreboot的意思
halt 立即关机 -
reboot 立即重启 -
sync 把内存的数据同步到磁盘中 建议每次关机重启之前都执行一遍或多遍这个命令

用户登录、注销

命令 说明 备注
su - xxx 运行替换用户和组标识的shell,即以xxx这个用户登录 高权限到低权限不需要密码,使用exit或logout退出
logout 注销用户 在图形运行级别(5)无效,在运行进行级别3下有效

关于运行级别,详见下面的内容。

用户管理

命令 说明 备注
useradd 用户名 添加用户 -d 指定家目录,如:useradd -d /home/test king
passwd 用户名 修改密码 如不写用户名,默认给当前用户改
userdel 用户名 删除用户,保留家目录 -r 删除用户和家目录

用户查询

命令 说明 备注
id 用户名 查询用户信息 -
whoami 查看当前登录用户 who am i 是登录shell时的用户,即使用su命令后也不变

用户组操作

组:方便系统对有共性的多个用户进行统一管理(一般为权限)

命令 说明 备注
groupadd 组名 新增组 -
groupdel 组名 删除组 -
usermod -g 组名 用户名 修改用户的组 -d可以改默认登录目录:usermod -d 目录 用户名(需要有进入目录的权限)
useradd -g 组名 用户名 创建用户并将其加入到一个存在的组 -

1 用户和组相关的文件

  1. /etc/passwd用户配置文件,记录用户各种信息
    如:

    root:x:0:0:root:/root:/bin/bash
    lczmx:x:1000:1000:lczmx:/home/lczmx:/bin/bash

    含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell

  2. /etc/shadow口令的配置文件
    含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
  3. /etc/group组的配置文件,记录linux包含的组信息
    含义:组名:口令:组标识号:组内用户列表

运行级别

命令 说明 备注
init 0/1/2/3/4/5/6 指定运行级别 -
systemctl get-default 获得当前级别 -
systemctl set-default TARGET.target 设置运行级别为5 centos7以后(包括7)使用命令, 而之前的版本要修改 /etc/inittab文件

运行级别对应表

init级别 systemctl target 说明
0 shutdown.target 关机
1 emergency.target 单用户可用于找回丢失密码
2 rescure.target 多用户无网络
3 multi-user.target 多用户有网络
4 - 系统保留给用户
5 graphical.target 图形界面
6 - 重启

帮助指令

命令 说明
man 命令 获取帮助信息
help 命令 获取shell内置命令的帮助信息

文件与目录

命令 说明 备注
pwd 显示当前工作目录的绝对路径
ls [路径] 列出文件 -a显示隐藏文件,-l以列表形式显示
cd (绝对/相对)路径 改变shell的当前工作目录 cd ..上一级 cd ~ 家目录
mkdir 路径 创建目录 mkdir /home/test/-p 创建多级 mkdir -p /home/test/dog
rmdir 路径 删除空目录 非空目录要用rm -rf (慎用)
touch 路径 创建空文件
cp 源路径 目标路径 将”源路径”下的东西拷贝到”目标路径”下 -r 递归复制整个文件夹 。\cp强制覆盖不提示, 如 \cp -r /home/test /tmp
mv 源路径 目标路径 移动或重命名(在同一目录时为重命名,不同目录时为移动) mv ./t1.txt ./t2.txt:重命名 ,mv ./t1.txt ./test/:移动
rm 文件或目录路径 移除文件或目录 -f 不提示, -r 递归删除整个文件夹
ln 文件或目录 软连接名 为文件(夹)创建链接 链接类型分为硬链接和符号链接,默认硬链接,使用-s创建软连接

关于硬链接和软连接可以参考硬链接和软连接的区别

查看文件

命令 说明 备注
cat 文件路径 查看文件内容,不能修改文件 -n显示行号 通常与more一起使用 :`cat /etc/profile
echo 输出内容 输出内容到控制台 echo $SHELL-e 输出转义内容:echo -e "hello \n world!"
head 文件 显示文件的头部内容,默认前10行 -n 指定行数,如:前20行 head -n 20 /etc/profile
tail 文件 显示文件尾部,默认后10行 -n 指定行数, -f 实时跟踪文件更新
  • more 文件 基于vi的文本过滤器

    空格:下一屏
    回车:下一行
    q:离开more
    F: 下一屏
    B: 上一屏
    =: 输出当前行号
    :f: 输出文件名和当前行号

  • less 文件 用分屏查看文件内容,类似more但强于more,对于大型文件具有较高效率

    空格/f:下一页
    b: 上一页
    q:离开less
    ?或/ :向上或下查找,使用n和N移动
    j或k:上或下一行
    h或H查看帮助

时间日期

命令 说明 备注
cal 查看日历(默认本月) -3 近三个月的;-m 星期一作为第一天; -y当前年的日历; 指定年份的日历:cal 2020
date 显示当前日期 以一定格式输出 date "+%Y/%M/%d"-d 显示字符串时间 date -d "2020/11/30 19:11:40"-s 设置时间date -s "2020/11/30 19:11:40"

日期格式字符串列表

符号 说明 符号 说明
%n 下一行 %t 跳格
%H 小时(00-23) %k 小时(0-23)
%I(大写i) 小时(01-12) %l (小写L) 小时(1-12)
%M 分钟(00-59) %p 显示本地 AM 或 PM
%r 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M) %T 直接显示时间 (24 小时制)
%s 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 %S 秒(00-60)
%X 相当于 %H:%M:%S %Z 显示时区
%a 星期几 (Sun-Sat) %A 星期几 (Sunday-Saturday)
%b 月份 (Jan-Dec) %h 同 %b
%c 直接显示日期与时间 %D 直接显示日期 (mm/dd/yy)
%j 一年中的第几天 (001-366) %w 一周中的第几天 (0-6)
%m 月份 (01-12) %B 月份 (January-December)
%U 一年中的第几周 (00-53) (以 Sunday 为一周的第一天的情形) %W : 一年中的第几周 (00-53) (以 Monday 为一周的第一天的情形)
%x 直接显示日期 (mm/dd/yy) %d 日 (01-31)
%y 年份的最后两位数字 (00.99) %Y 完整年份 (0000-9999)

上述格式不必全都记住,只需要掌握几个常用的即可。
例如%Y表示年,%m表示月,%d表示日,%H表示小时,%M表示分钟,%S表示秒,%s表示从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数,相当于time函数,%w表示一周中的第几天。

搜索查找

find命令

  • 格式: find 路径,如:find /etc -name a.txt或者find /etc -size +1k
  • 说明:从指定目录向下递归遍历,将满足条件的文件或文件夹显示到终端
  • 常用选项:
    选项 说明
    -name 以文件名查
    -user 以所属用户查
    -size 以文件大小查 (+表示大于、-表示小于、不写则为等于),单位有k(小写)、M、G,如例子的+1k

locate命令

  • 格式:locate 文件名,如:locate hello.txt
  • 说明:快速定位文件路径
    注意:第一次运行前,需要执行updatedb命令,指定创建locate数据库 ,然后才能查询

which命令

  • 格式:which 命令, 如:which ls
  • 说明:查找某个指令在那个目录下

grep命令

  • 格式:grep 查找条件 源文件,如:grep "root" /etc/passwd
  • 说明:强大的文本搜索工具
  • 常用选项:-n 显示匹配行及行号; -i 忽略字母大小写
    注意:grep命令通常配合管道符|使用,如:cat /etc/passwd | grep root

压缩与解压

  1. gzip 文件路径,把*文件压缩为*.gz
  2. gunzip *.gz,把gz文件解压出来
  3. zip *.zip 路径,压缩文件或目录
    • -r :递归压缩(压缩目录)
    • 如:zip -r myHome.zip /home/(连同home在内的全部压缩)
  4. unzip *.zip,解压缩文件
    • -d 指定解压路径
  5. tar 命令
    1. tar -zcvf xxx.tar.gz 路径,打包并压缩,如:tar -zcvf result.tar.gz /home/
    2. tar -zxvf xxx.tar.gz -C 路径,解包,如:tar -zxvf result.tar.gz -C ./temp/
    3. 选项详解:
      • -c 产生.tar打包件
      • -x 解包.tar文件
      • -v 显示详细信息
      • -f 指定的文件名
      • -z 打包的同时压缩或提取的同时解压
      • -C 指定解压路径。

组管理和权限管理

命令 说明 备注
ls -ahl 查看文件的所有者等信息
chown 用户名 文件或目录 修改文件所有者 -R 递归改变;改变所有者和所有组:chown 新用户:新组 文件或目录
chgrp 组名 文件或目录 修改文件所在组 -R递归改变
chmod 修改权限 方式一:+-= 结合 u g o a(所有人) 结合 wrx:chmod u=rwx,g=rx,o=x 文件或目录;chmod u+x,o-w 文件或目录。方式二:利用数字r=4, w=2, x=1:chmod 751 文件或目录

关于所有者等:

  1. linux中,每个用户必须属于一个组,不能独立于组外
  2. 所有者: 一般谁创建的文件,谁就是所有者
  3. 所有组:当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组
  4. 其他人:除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

读写执行权限对文件和目录的作用:

  • 文件
    • r:读取查看
    • w:修改,但删除文件要看目录
    • r: 执行
  • 目录
    • r: 可读,即可以ls
    • w:可以创建、删除、重命名
    • x:进入目录

假如输入ls -ahl 将看到的一行文字,解析其含义:
-rw-rw-r--. 1 lczmx lczmx 21 12月 1 14:43 abc.txt

  1. 第0位( - l d c b), 确定文件类型
    - 普通文件
    l 链接
    d 目录
    c 字符设备文件(鼠标,键盘、、)
    b 块设备(硬盘)
  2. 1-3位所有者对该文件的权限
  3. 4-6位所有组对该文件的权限
  4. 7-9位其他用户对该文件的权限
  5. 1表示硬链接数
  6. lczmx表示 所有者
  7. lczmx 表示所有组
  8. 21表示文件大小
  9. 12月 1 14:43最后修改日期
  10. abc.txt文件名

定时任务

任务调度crond

任务调度:指定系统在某个时间执行的特定的命令或程序
任务调度分类:

  1. 系统工作:重要工作需要周而复始
  2. 个别用户工作:某用户希望执行的程序
命令 说明 备注
crontab -e 编辑定时任务 -l 查询定时任务; -r 删除当前用户的所有定时任务
service crond restart 重启任务调度 -

crond中以五个占位符表示时间(以空格隔开的),其含义:

占位符 说明 范围
第一个 一小时中的第几分钟 0-59
第二个 一天中的第几小时 0-23
第三个 一月中的第几天 1-31
第四个 一年中的第几个月 1-12
第五个 一周中的星期几 0-7(0和7代表星期日)

特殊字符的说明:

字符 说明
* 任意时间
, 不连续的时间
- 连续时间
*/ 每隔多长时间

占位符与上述字符结合,可以表示很多时间,比如这些例子:
45 22 * * * 每天22:45
0 17 * * 1 每周一的17:00
0 4 1,15 * * 1号或15号的4:00
40 4 * * 1-5 周一到周五的4:40
*/10 4 * * * 四点的每10分钟(4:10、4:20……)

crond的使用方式:

  • 方式一

    1. 输入crontab -e命令
    2. 输入任务(用的是vim):*/1 * * * * ls -l /etc/ > /tmp/to.txt==>表示每隔一分钟将ls -l /etc/ 这个命令的结果重定向到/temp/to.txt
    3. :wq保存退出
  • 方式二

    1. 创建一个shell脚本文件, 路径为/home/lczmx/task.sh,内容如下:

      $date >> mycal
      
      $cal  >> mycal
      
    2. 为脚本添加执行权限:chmod u+x /home/lczmx/task.sh

    3. 输入crontab -e命令

    4. 输入任务:*/1 * * * * /home/lczmx/task.sh

    5. :wq保存退出

at定时任务

at命令:用于指定一次性的定时命令。

at的守护进程atd会以后台模式运行,每隔一段时间(60秒)检查作业队列来运行,所以使用at命令时,一定要保证atd进程的启动。
使用命令:ps -ef | grep atd查看(ps -ef: 检测所有当前运行的进程)。

at命令的选项

命令 说明 备注
-m 任务完成后给用户发送邮件 -
-I 列出任务队列 可以使用别名atq
-d <编号> 删除队列中的任务 可以使用别名 可以使用别名atrm
-v 显示任务将被执行的时间 -
-q <队列> 使用指定队列 -
-f <文件> 使用指定文件读入任务 -

指定时间:

  1. hh:mm 小时:分钟,如:06:00
  2. 12小时制,如:12pm
  3. 具体时间,格式:月 日、月 日 年、日.月.年,指定时间必须在指定日期后面。如:06:00 2020-12-3
  4. 相对时法,格式Now+time-units,time-units是时间单位,有minutes hours days weeks,如now + minutes (五分钟后)
  5. 直接用today tomorrow
  6. 用midnight noon teatime(下午四点左右)

at命令的使用

  1. at 时间:at 5pm + 2days (两天后的下午5点执行)
  2. 输入要执行的命令或shell脚本:/bin/ls /home
  3. 连续两次ctrl + D退出编辑界面
$at 5pm + 2days
at> /bin/ls /home
at> <EOT>
job 4 at Sat Dec  5 17:00:00 2020

可以使用atq查看任务队列,可以看到任务的编号、执行时间、创建人是谁。

$atq
4  Sat Dec  5 17:00:00 2020 a lczmx

磁盘分区及挂载

linux采用一种载入的处理方式,整个文件系统以文件树的结构存在,一个分区和一个目录联系一起(挂载)。

查看所有设备挂载情况

lsblk查看所有设备挂载情况,-f 更加详细(有fs格式、40位uuid唯一标识符 )

关于磁盘:

scsi硬盘:标识是sdx,如:sda1、sda2、sda3 … sdb … sdc …
ide硬盘:标识是hdx

为电脑增加一块硬盘的步骤

  1. 添加硬盘

  2. 分区
    使用fdisk分区命令

    fdisk 常用选项 说明
    m 显示命令列表
    p 显示磁盘分区,同fdisk -l
    n 新增分区
    d 删除分区
    w 写入并推出
    q 退出不保存

    分区步骤

    • 使用命令,指定要分区的设备:fdisk /dev/sdb

      $fdisk /dev/sdb
      欢迎使用 fdisk (util-linux 2.23.2)。
      
      更改将停留在内存中,直到您决定将更改写入磁盘。
      使用写入命令前请三思。
      
      Device does not contain a recognized partition table
      使用磁盘标识符 0x30a50703 创建新的 DOS 磁盘标签。
      
    • 输入m:显示帮助(不看也行)

      命令(输入 m 获取帮助):m
      命令操作
        a   toggle a bootable flag
        b   edit bsd disklabel
        c   toggle the dos compatibility flag
        d   delete a partition
        g   create a new empty GPT partition table
        G   create an IRIX (SGI) partition table
        l   list known partition types
        m   print this menu
        n   add a new partition
        o   create a new empty DOS partition table
        p   print the partition table
        q   quit without saving changes
        s   create a new empty Sun disklabel
        t   change a partition's system id
        u   change display/entry units
        v   verify the partition table
        w   write table to disk and exit
        x   extra functionality (experts only)
      
    • 开始分区输入n:创建分区

      命令(输入 m 获取帮助):n
      Partition type:
        p   primary (0 primary, 0 extended, 4 free)
        e   extended
      
    • 新增分区选择p:分区类型为主分区(根据自己的需要来)

      Select (default p): p
      
    • 选择分区号(默认就好)

      分区号 (1-4,默认 1):1
      
    • 选择起始扇区(默认就好)

      起始 扇区 (2048-2097151,默认为 2048):
      将使用默认值 2048
      
    • 选择此分区的大小 KMG(如: +20G)(要分多个分区的话,记得留点)

      Last 扇区, +扇区 or +size{K,M,G} (2048-2097151,默认为 2097151):+200M
      分区 2 已设置为 Linux 类型,大小设为 200 MiB
      

      这里我多分了一个区,没有需求的可以直接第八步

      命令(输入 m 获取帮助):n
      Partition type:
        p   primary (1 primary, 0 extended, 3 free)
        e   extended
      Select (default p): p
      分区号 (2-4,默认 2):
      起始 扇区 (411648-2097151,默认为 411648):
      将使用默认值 411648
      Last 扇区, +扇区 or +size{K,M,G} (411648-2097151,默认为 2097151):
      将使用默认值 2097151
      分区 2 已设置为 Linux 类型,大小设为 823 MiB
      
    • w:写入分区退出(若不保存则输入q)

      命令(输入 m 获取帮助):w
      The partition table has been altered!
      
      Calling ioctl() to re-read partition table.
      正在同步磁盘。
      
    • 查看分区结果
      分区前

      $lsblk
      NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      sda      8:0    0   20G  0 disk 
      ├─sda1   8:1    0    1G  0 part /boot
      ├─sda2   8:2    0   17G  0 part /
      └─sda3   8:3    0    2G  0 part [SWAP]
      sdb      8:16   0    1G  0 disk 
      sr0     11:0    1 1024M  0 rom 
      

      分区后

      $lsblk
      NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      sda      8:0    0   20G  0 disk 
      ├─sda1   8:1    0    1G  0 part /boot
      ├─sda2   8:2    0   17G  0 part /
      └─sda3   8:3    0    2G  0 part [SWAP]
      sdb      8:16   0    1G  0 disk 
      ├─sdb1   8:17   0  200M  0 part 
      └─sdb2   8:18   0  823M  0 part 
      sr0     11:0    1 1024M  0 rom 
      
  3. 格式化
    未格式化过的分区是不可以使用的,可以通过lsblk -f命令查看是否已经格式化。(有UUID就证明已经格式化过了)

    $lsblk -f
    NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
    sda                                                      
    ├─sda1 ext4         ecc17b31-f225-4ac5-b7bd-c5017fa2f224 /boot
    ├─sda2 ext4         db36ba76-89c8-4593-8b24-580e2dbfa18d /
    └─sda3 swap         f843c352-ca65-457d-b2f9-c64e89e22a58 [SWAP]
    sdb                                                      
    ├─sdb1                                                   
    └─sdb2                                                   
    sr0  
    

    假如没有格式化的话,需要使用格式化命令: mkfs -t 文件系统类型 分区,如:mkfs -t ext4 /dev/sdb1

    开始格式化

    $mkfs -t ext4 /dev/sdb1
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=1024 (log=0)
    分块大小=1024 (log=0)
    ......
    ......
    
    $mkfs -t ext4 /dev/sdb2
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    ......
    ......
    

    再次查看

    $lsblk -f
    NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
    sda                                                      
    ├─sda1 ext4         ecc17b31-f225-4ac5-b7bd-c5017fa2f224 /boot
    ├─sda2 ext4         db36ba76-89c8-4593-8b24-580e2dbfa18d /
    └─sda3 swap         f843c352-ca65-457d-b2f9-c64e89e22a58 [SWAP]
    sdb                                                      
    ├─sdb1 ext4         1371bca2-d95c-48ec-84e4-0c1483e175fd 
    └─sdb2 ext4         c4ec0a6a-8af7-46c5-921e-fa6a37fcac38 
    
  4. 挂载
    挂载就是给目录与分区建立联系,挂载后目录就相当于是分区的大门了。
    挂载有两个步骤:
    第一步:确定挂载点,可以创建 一个目录,也可以选择已有的。

    第二步:输入命令: mount 设备名称 挂载目录,如:mount /dev/sdb1 /mydisk

    要卸载的话使用:umount /dev/sdb1 /mydisk 或者 umount /mydisk

    注意:使用命令行的方式进性挂载,重启后失效!!

  5. 设置自动挂载
    上面已经说了,使用mount命令挂载在电脑重启后会失效,为了解决这个问题,可以通过修改/etc/fstab这个文件来实现永久挂载。
    先看一看这个文件的内容:

    $cat /etc/fstab
    
    #
    # /etc/fstab
    # Created by anaconda on Sat Nov 28 19:57:23 2020
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    UUID=db36ba76-89c8-4593-8b24-580e2dbfa18d /                       ext4    defaults        1 1
    UUID=ecc17b31-f225-4ac5-b7bd-c5017fa2f224 /boot                   ext4    defaults        1 2
    UUID=f843c352-ca65-457d-b2f9-c64e89e22a58 swap                    swap    defaults        0 0
    

    这个文件配置是有一定的格式的,所以下面讲解一下格式
    fstab输入格式详解

    UUID=db36ba76-89c8-4593-8b24-580e2dbfa18d / ext4 defaults 1 1
    UUID:分区的UUID(也可以/dev/sdb1这种形式) 挂载点 文件系统格式 文件系统的参数 能否被dump备份命令作用 是否检验扇区
    • 文件系统的参数
      • Async/sync: 设置是否为同步方式运行,默认为async
      • auto/noauto : 当下载mount -a 的命令时,此文件系统是否被主动挂载。默认为auto
      • rw/ro : 是否以以只读或者读写模式挂载
      • exec/noexec: 限制此文件系统内是否能够进行”执行”的操作
      • user/nouser: 是否允许用户使用mount命令挂载
      • suid/nosuid: 是否允许SUID的存在
      • Usrquota: 启动文件系统支持磁盘配额模式
      • Grpquota: 启动文件系统对群组磁盘配额模式的支持
      • Defaults: 同事具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置
    • 能否被dump备份命令作用
      • 0: 代表不要做dump备份
      • 1: 代表要每天进行dump的操作
      • 2: 代表不定日期的进行dump操作
    • 是否检验扇区

      开机的过程中,系统默认会以fsck检验我们系统是否为完整

      • 0: 不要检验
      • 1: 最早检验(一般根目录会选择)
      • 2: 1级别检验完成之后进行检验

    根据上述的解释,写入自己的配置,保存退出。添加完成后,执行mount -a立即生效

磁盘情况查询

命令 说明 备注
df -h 查循系统整体磁盘使用情况 -
du -h 目录 查询指定目录的磁盘占用情况,默认当前目录 -s 指定目录占用大小;-h 带计量单位;-a 含文件;--max-depth=1 子目录深度;-c 列出明细的同时,增加汇总值

磁盘情况工作实用指令

  1. 统计某个目录下有多少个文件
    ls -l | grep "^-" | wc -l
  2. 统计某个目录下有多少个文件(包括子文件夹的)
    ls -lR | grep "^-" | wc -l
  3. 树状结构查看目录
    tree 目录

网络配置

关于网络的两条指令:

  1. ifconfig: 配置和显示Linux系统网卡的网络参数
  2. ping: 目的主机 测试主机之间的网络连通性

检测主机连接
执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常
使用:ping ip地址

配置网络

下面讲解如何修改配置文件,指定ip,并可以连接公网.

  1. 修改配置文件
    这里修改的是/etc/sysconfig/network-scripts/下的ifcfg-ens33文件 (不同的网卡对应不同的文件,格式为ifcfg- + 网卡名称, )
    vim /etc/sysconfig/network-scripts/ifcfg-ens33
    具体配置根据个人而定

    BOOTPROTO="static"  # 是否要使用静态地址,动态地址用 "dhcp"
    
    ############### 假如是dhcp的话,不用写下面这几个 ###################
    
    IPADDR=xxx.xxx.xxx.xxx  # ip地址
    
    GATEWAY=xxx.xxx.xxx.xxx # 网关
    
    DNS1=xx.xxx.xxx.xxx    # 域名系统
    
  2. 重启网络服务
    使用service network restart命令重启网络服务或者使用reboot重启电脑

设置主机名和hosts映射

主机名:修改/etc/hostname,这是一个只要主机名的文件,改成自己想要的,保存退出即可。

注意:需要重启才能生效。

hosts:修改/etc/hosts,格式是:ip host,如111.111.111.111 www.baidu.com
DNS查询流程: 浏览器缓存 –> DNS缓存 –> hosts –> DNS

windows显示和清理DNS:
ipconfig /displaydns # 显示
ipconfig /flushdns # 清理

监控网络状态

netstat是用来监控网络状态的指令。一般使用的选项有:-an: 按一定的顺序输出、-p: 显示哪个进程调用。
所以,一般用netstat -anp这个命令。

进程管理

查看进程

进程有前台与后台之分,在linux中使用ps命令查看进程。
ps 查看进程命令;-a 显示当前终端所有进程;-u 以用户格式显示 ;-x 显示后台进程运行参数。
常使用ps -aux命令,其输出格式 :

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
进程所有者 进程ID 占用的 CPU 使用率 占用的内存使用率 占用的虚拟内存大小 占用的内存大小 终端的次要装置号码 进程状态(S: 睡眠 R: 正在运行 Z: 僵死 T: 被跟踪/停止) 启动进程的时间 进程消耗CPU的时间 命令的名称和参数
  • 查看父进程
    ps -ef (-e 显示所有进程、-f 全格式)
    结果中的PID指的是本进程的ID;PPID指的是父进程的ID

  • 查看进程树
    pstree 查看进程树

    • -p 显示进程ID
    • -u 显示进程的所属用户

终止进程

kill 进程号,如:kill 9416
-9: 表示强迫进程立即停止

killall 进程名 可以杀多个进程,支持通配符。如:killall gedit

服务管理

服务本身就是一个进程,它们通常运行在后台,监听某个端口,等待其它程序的请求,因此,又可以称值为守护进程。

service命令

service指令是控制系统服务的工具。
用法:
service 服务名 [start | stop | restart | reload | status],如 service network status
注意:centos7之后服务一般由systemctl管理, service继续管理的服务在/etc/init.d/下可以看到

设置服务启动

查看自启动服务有哪些
输入setup 命令,然后选择“系统服务”。其中,*表示自启动

开机流程:开机 -> BIOS -> /boot -> systemd进程1 -> 运行级别 -> 运行相对应的服务

上面的setup有设置自启动的功能,linux还有一个命令可以根据系统运行级别来配置一个服务是否自启动。
为了管理不同运行级别下的自启动服务,Red Hat公司开发了chkconfig命令,用于检查或设置系统的各种服务。

  • 查看服务:chkconfig --list
  • 设置服务:chkconfig --level 服务级别 服务名 on/off
    • 如:chkconfig --level 5 network on, 表示:在5运行级别下打开network服务

service一样,centos7之后使用systemctl管理,chkconfig继续管理服务的在/etc/init.d/下可以看到
设置完之后,需要重启后才能生效。

systemctl命令

systemctl命令是一个系统服务管理器指令,它实际上将 servicechkconfig 这两个命令组合到了一起。
systemctl可以管理的服务在/usr/lib/systemd/system/目录下。

服务管理:

  1. 查询状态 systemctl status 服务名, 如:systemctl status firewalld
  2. 关闭服务 systemctl stop 服务名, 如:systemctl stop firewalld
  3. 打开服务 systemctl start 服务名, 如:systemctl start firewalld

注意:启动或关闭服务只是临时的,要保存的话,需要设置开机启动状态(enable/disable),如下

自启动管理(3和5级别):

  1. 查看服务开机启动状态 systemctl list-unit-files,要查询某个具体的服务时,使用grep
  2. 设置开机启动 systemctl enable/disable 服务名
  3. 查询服务是否开机启动 systemctl is-enabled 服务名

firewall 防火墙管理

查询 firewall-cmd --query-port=端口/协议
打开端口 firewall-cmd --permanent --add-port=端口/协议
关闭端口 firewall-cmd --permanent --remove-port=端口/协议
注意打开或关闭端口后,需要重新载入才能生效:firewall-cmd --reload

动态监控进程

topps命令相似,不同的是top命令会每隔一段时间更新一次,是动态的。
top的选项:

  • -d 秒数:每隔几秒更新,默认3秒
  • -i:不显示限制/僵死进程
  • -p:进程ID 监控某个进程的状态

进入top后的按键:

P 以cpu排序,默认是这个
M 以内存排序
N 以pid排序
k 结束某个进程,输入进程号和信号量即可(强制退出的信号量为9)
q 退出top

软件包管理

RPM

rpm是RedHat Package Manager的缩写,用于互联网打包和安装工具,生成有.rpm扩展名的文件。

rpm查询

显示已安装
rpm -qa

查询是否安装
rpm -qa | grep 包名
或者rpm -q 包名
如:rpm -qa | grep firefoxrpm -q firefox
返回:firefox-60.2.2-1.el7.centos.x86_64
这段文字代表的意思:

firefox: 软件包的名称
60.2.2-1: 版本号
el7.centos.x86_64: 使用操作系统

  • el7是Red Hat 7.x,CentOS 7.x和CloudLinux 7.x的下载。其他的如:el6、el8等以此类推。

x86_64:64位系统
假如是:

  1. i386/i686表示32位系统(i686是i386的一个子集,仅对应P6及以上级别的CPU,i386则广泛适用于80386以上的各种CPU)
  2. noarch表示通用

查询软件包信息
rpm -qi 包名,如:rpm -qi firefox

查询软件包的文件
rpm -ql 包名,如:rpm -ql firefox

查询文件所属软件包
rpm -qf 路径,如:rpm -qf /etc/passwd

使用rpm安装

rpm -ivh 软件包的路径(-i 安装; -v 提示; -h 进度条)

rpm卸载包

rpm -e 包名
假如提示有依赖关系的话,建议不要卸载,当然也可以带上--nodeps强制卸载。

YUM

yum是一个基于rpm的shell前端软件管理器,可以从指定服务器中下载rpm包并且安装,不再需要个rpm一样需要提前把包下载到本地,而且yum还能自动处理依赖关系。

yum包查询

yum list | grep 包名 查询服务器是否有需要安装的软件 如:yum list | grep firefox
yum list installed | grep 包名 查询本地是否已经安装 如:yum list installed | grep firefox

yum安装/更新包

yum install 包名 安装指定yum包, 如:yum install firefox
yum update 全部更新
yum check-update 检查可更新的程序
yum update 包名 更新指定软件,如yum updata firefox

yum卸载包

yum remove 包名 删除指定的rpm软件包;如:yum remove firefox

yum清除缓存

yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers

APT

apt是apt advanced packaging tool简称,是Debian Linux发行版中的APT软件包管理工具。所有基于Debian的发行都使用这个包管理系统。deb包可以把一个应用的文件包在一起,大体就如同Windows上的安装文件。

apt安装包

注意:通常在安装软件前,通常需要运行sudo apt update获取的最新的软件包列表,以确保您的软件包列表是最新的。
sudo apt install 包名

apt卸载包

sudo apt remove 包名

apt其他命令

sudo apt serch 包名 搜索应用程序
sudo apt show package 获取包信息
sudo apt source package 下载包的源代码到当前目录
sudo apt install package --reinstall 重新安装包
sudo apt upgrade 升级所有可升级的软件包
sudo apt full-upgrade 在升级软件包时自动处理依赖关系
sudo apt dist-upgrade 更新包,根据依赖关系的变化,添加包,删除包
sudo apt purge 删除包,包括配置文件等
sudo apt build-dep package 安装相关的编译环境,如:sudo apt build-dep apache2
sudo apt autoremove 自动删除不需要的包
sudo apt depends package 了解使用该包的依赖包

apt修改源

由于一些linux发行版(如:Ubuntu)的apt源通常是外国的,所以导致安装或更新软件时很慢,通常我们需要修改镜像源地址。
一些常用的镜像源,点击查看

步骤:

  1. 备份源地址 cp /etc/apt/sources.list /etc/apt/sources.list.bak
  2. 修改文件 /etc/apt/sources.list
  3. 获取的最新的软件包列表 sudo apt update

符号

  1. ~ 当前用户的家目录

  2. >>>
    > 输出重定向 (里面有东西会被覆盖)
    >> 追加

      $echo "hello" >> res.txt   # "hello"z追加到res.txt文件
    
      $cal > cal.txt        # 把cal输出的内容覆盖的cal.txt
    
      $cat a.txt >> temp.txt    # 将a.txt内容追加到temp.txt
    
  3. $ 使用变量

  4. ... 当前目录和当前目录的父目录

其他

命令 说明 备注
history 查看已经执行的历史指令(包括注释) 加数字n,显示最近的第n条记录。如:history 10!5: 执行已经执行过的编号为5指令

作者: 忞翛

出处: https://www.lczmx.top/Linux/3d40772e760d/

版权: 本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

在线工具