Linux笔记_基础_2

Linux笔记_基础_2


  • 增删用户、改密
    • useradd [用户名]
      • 创建用户
    • passwd
      • 修改当前用户密码
    • passwd [用户名]
      • 修改指定用户密码
    • userdel [用户名]
      • 删除指定用户,但保存用户目录
    • userdel -r [用户名]
      • 删除指定用户,并删除用户目录
  • 切换用户
    • su [用户名]
      • 切换用户,当前路径不变
      • 只能获得用户的执行行权限,不能获得环境变量
    • su - [用户名]
      • 切换到用户,并切换到该用户的用户目录
      • 既能获得该用户的执行行权限,也能获得其环境变量
  • 查询用户
    • id [用户名]
      • 查看用户基本信息
    • whoami
      • 显示当前用户名
    • who am i
      • 显示本会话的登录用户
      • 用户名,登录接口,登录时间,IP地址
    • who
      • 看当前服务器所有的登录用户
      • 用户名,登录接口,登录时间,IP地址
    • cat /etc/passwdcat /etc/passwd | grep -v nologin
      • 查看服务器上所有的注册用户信息
  • 锁定解锁
    • usermod -L [用户名]
      • lock,锁定用户帐号
    • usermod -U [用户名]
      • unlock,解锁用户帐号

sudo 是 linux 系统管理指令,允许普通用户执行部分或全部 “本来需要root用户才具备执行权限的命令” ,如 halt,reboot,su …

这个机制减少了 root 用户的登录次数和使用时间,提高了安全性

在 CentOS 中,默认新建立的普通用户是没有 sudo 权限的

可以编辑 /etc/sudoers 授予指定用户 sudo 权限

nano /etc/sudoers ,在 root 这行下面,按格式添加指定的用户

1
2
3
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
test ALL=(ALL) ALL

  • groupadd [组名]
    • 新建用户组
  • groupdel [组名]
    • 删除用户组
  • groupmod -n [新组名] [原组名]
    • 修改组名
  • usermod -g [组名] [用户名]
    • 不移除原有的组
    • 将用户添加到该组之下,并使用该组作为 “主组”
  • cat /etc/groupcat /etc/group | grep [组名 或 用户名]
    • 查询用户组相关信息


  • ll [目录 或 文件]
  • ls -l [目录 或 文件]

file-llls22.jpg
Linux 基础 2(1.文件权限)
系统显示 二进制 421说明 数字形式 说明
rwx 111 421 7 具备所有权限
rw- 110 420 6 具备读写权限
r-x 101 401 5 具备读和执行权限
r– 100 400 4 具备只读权限
-wx 011 021 3 具备写和执行权限
-w- 010 020 2 具备写权限
–x 001 001 1 具备执行权限
000 000 0 无任何权限

常见的权限组合

系统显示 数字形式 说明
-rw——- 600 只有拥有者有读写权限
-rw-r–r– 644 只有拥有者有读写权限;而属组用户和其他用户只有读权限
-rwx—— 700 只有拥有者有读、写、执行权限
-rwxr-xr-x 755 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限
-rwx–x–x 711 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限
-rw-rw-rw- 666 所有用户都有文件读、写权限
-rwxrwxrwx 777 所有用户都有读、写、执行权限

  • chmod u=rwx,g=rx,o=rx [文件 或 目录]
    • 依次修改 属主、属组、其他用户的权限
  • chmod 755 [文件 或 目录]

chown [用户名] [文件 或 目录]

chgrp [组名] [文件 或 目录]

参考


  • vmstat -at
    • 系统资源总体信息
  • vmstat -at 5
    • 系统资源总体信息,监控模式,5秒自动刷新

  • 容量信息
    • df -hTdf -hT | grep ^/dev
      • 查看系统磁盘使用信息
      • grep ^/dev,不显示以 “/dev” 开头的项
    • du -achdu -ach --max-depth=1
      • 查看当前目录的磁盘占用
    • du -ach [目录]
      • 查看指定目录的磁盘占用
  • 其他信息
    • lsblk -apfblkid
      • 文件系统信息
    • lsblk -apm
      • 权限信息
    • lsblk -apt
      • 拓扑信息
    • lsblk -S
      • SCSI 设备信息

  • vmstat -dt 5
    • 显示磁盘 IO,监控模式,5秒自动刷新
  • vmstat -D
    • 磁盘 IO 总量
  • pidstat -d 5
    • 是由 sysstat 包提供的命令,安装:yum install -y sysstat
    • 查看各进程的磁盘 IO ,监控模式,5秒自动刷新
  • pidstat -d -p [进程ID] 5
    • 查看指定进程的磁盘 IO ,监控模式,5秒自动刷新

  • cat /proc/meminfo
    • 查看 /proc/meminfo ,获取系统内存使用状态
  • free -ml -s 5
    • 显示系统内存使用状态,监控模式,5秒自动刷新
    • 通过读取 /proc/meminfo,提取相关信息
  • pidstat -r 5
    • 查看各进程的内存使用 ,监控模式,5秒自动刷新
  • pidstat -r -p [进程ID] 5
    • 查看指定进程的内存使用 ,监控模式,5秒自动刷新

  • ps -auxps -ef
    • -a
      • 显示终端上的所有进程, 包括其他用户的进程
    • -u
      • 显示进程的详细状态
    • -x
      • 显示没有控制终端的进程

显示信息说明

  • Snipaste_2021-07-10_23-24-40.png
    Linux 基础 2(2. ps 命令显示信息说明)
    • USER
      • 该进程是由哪个用户产生的
    • PID
      • 进程ID
    • %CPU
      • CPU 占用
    • %MEM
      • 内存占用
    • VSZ
      • 虚拟内存使用,单位 KB
    • RSS
      • 实际使用物理内存的大小,单位KB
    • TTY
      • 该进程是在哪个终端中运行行的。
        • tty1 - tty6 是本地控制台-字符界面终端
        • tty7 是本地控制台-图形终端
        • pts / 0-255 代表虚拟终端
    • STAT
      • 进程状态
        • R:运行
        • S:睡眠
        • T:停止状态
        • s:包含子进程
        • +:位于后台
    • START
      • 启动时间
    • TIME
      • 占用CPU的运算时间,注意不是系统时间
    • COMMAND
      • 产生此进程的命令,应用程序路径

  • top
    • -d [秒数]
      • 指定刷新间隔时间,缺省是3秒
    • -i
      • 不显示任何空闲或僵死的进程
    • -p [进程ID]
      • 只监控指定的进程
  • 处于 top 显示界面时的操作
    • f
      • 选择显示的列
      • q 回到 top 显示界面
    • m
      • 切换 “表头” 显示内容、样式
    • M
      • 按内存使用率排序
    • N
      • 按 PID 排序
    • P
      • 按 CPU 使用率排序
    • q
      • 退出

显示信息说明

Snipaste_2021-07-11_00-19-14.png
Linux 基础 2(3. top 命令显示信息说明)

  • pidstat -u 5pidstat 5
    • 查看各进程的CPU占用 ,监控模式,5秒自动刷新
  • pidstat -u -p [进程ID] 5pidstat -p [进程ID] 5
    • 查看指定进程的CPU占用 ,监控模式,5秒自动刷新

  • kill [进程ID]
    • 正常停止一个进程
  • kill -9 [进程ID]
    • 强制终止一个进程

vi /etc/sysconfig/network-scripts/ifcfg-ens33

最后的 ifcfg-ens33 视具体情况(不同发行版、系统版本、网卡类型、多网卡……)可能不同

CentOS7 最小化安装,默认配置(DHCP)时,该配置文件内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=a762aa2d-4e7c-4877-bf11-1fdfdb3f9a2a
DEVICE=ens33
ONBOOT=no
  1. 这时候网卡实际上是未启用的:ip addr
  2. 需要修改配置文件:vi /etc/sysconfig/network-scripts/ifcfg-ens33
  3. ONBOOT=no 修改为 ONBOOT=yes
  4. 再重启网络服务:systemctl restart network
  5. 验证:ip addr ,(此时若能正常通过 DHCP 获取 IP ),就可以正常连接网络

若要修改为静态 IP :

  1. 需要修改配置文件:vi /etc/sysconfig/network-scripts/ifcfg-ens33

    •  1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      
      TYPE=Ethernet
      PROXY_METHOD=none
      BROWSER_ONLY=no
      BOOTPROTO=static
      DEFROUTE=yes
      IPV4_FAILURE_FATAL=no
      
      IPADDR=10.10.10.20
      NETMASK=255.255.255.0
      GATEWAY=10.10.10.1
      DNS1=223.5.5.5 
      
      IPV6INIT=yes
      IPV6_AUTOCONF=yes
      IPV6_DEFROUTE=yes
      IPV6_FAILURE_FATAL=no
      IPV6_ADDR_GEN_MODE=stable-privacy
      NAME=ens33
      UUID=a762aa2d-4e7c-4877-bf11-1fdfdb3f9a2a
      DEVICE=ens33
      ONBOOT=yes
      
    • Snipaste_2021-07-11_11-47-15.png
      Linux 基础 2(4. 设置静态IP)
  2. 再重启网络服务:systemctl restart network

  3. 验证:ip addr

是由 net-tools 包提供的命令,安装:yum install -y net-tools

用于显示与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况

常用参数组合

  • netstat -anpo
    • 查看系统网络活动信息
    • -a ,显示全部,缺省会隐藏 LISTEN 状态的网络活动
    • -n ,不解析:域名、服务名
    • -p ,显示进程信息,及所属用户
    • -o ,显示 Timer
  • netstat -anpo | grep sshdnetstat -anp | grep 22
    • 查看系统网络活动信息,并从中筛选出 ssh 协议
  • netstat -anpo --ip
    • --ip--tcpip--inet-46
      • 只显示 tcpip 类型的网络活动
      • 前面三个参数形式,只包含 ipv4
      • -46 ,同时包含 ipv4 和 ipv6
    • -x--unix
      • 只显示 unix 类型的网络活动
  • netstat -anpo -46 -c 5
    • -c 5 ,监控模式,5秒自动刷新

  • netstat -i
    • 各网络接口的信息

  • netstat -r
    • 查看路由表
  • ip route
    • 查看路由表

是由 bind-utils 包提供的命令,安装:yum install -y bind-utils

用于域名解析测试

  • dig [域名]nslook [域名]
    • 测试域名解析功能是否正常工作
  • dig @223.5.5.5 [域名]nslookup [域名] 223.6.6.6
    • 测试指定的 DNS 服务器的域名解析功能是否正常工作

是由 traceroute 包提供的命令,安装:yum install -y traceroute

用于路由追踪

traceroute -n -m 99 -w 99 [目标IP 或 域名]

(大多数网络环境,由于安全策略的原因,导致该功能未能如预期般工作)

  • 参考,安装:yum install -y lsof

  • lsof

    • lists openfiles ,列出打开文件,而在Unix中一切(包括网络套接口、硬件设备)都是文件
  • 网络

    • lsof -i
      • 显示所有网络连接(IPv4 和 IPv6)
    • lsof -i:port
      • 显示指定端口的网络连接
    • lsof -iTCPlsof -iUDP
      • 只显示 TCP 或 UDP 连接
    • lsof -i@ipaddresslsof -i@hostnamelsof -i@ipaddress:port
      • 只显示指定主机的连接
  • 用户

    • lsof -u root
      • root 用户打开的文件
    • lsof -u ^root
      • 除了 root 以外的其他用户打开的文件
  • 进程

    • lsof -c sftp-serverlsof -p 40809
      • 查看指定进程或 PID 打开的文件
  • 文件

    • lsof <目录/文件>
      • 查看正在与指定文件交互的一切
  • 组合命令示例

    • 1
      2
      3
      4
      5
      
      kill -9 `lsof -t -u adam`
      # 杀死指定用户的所有进程
      
      lsof -u adam -i @192.168.0.1
      # 查看指定用户连接到指定主机进行的活动
      

  • hostnamectlhostnamectl statushostname
    • 显示计算机名
  • hostnamectl set-hostname [计算机名].[domain名]
    • 修改计算机名


  • 显示时间
    • date
      • 显示当前时间
    • date +%Y
      • 显示当前时间,按需要显示所需要的字段
    • date +%Y%m%ddate +%Y年%m月%d日
      • 显示当前年月日
    • date "+%Y-%m-%d %H:%M:%S"
      • 年-⽉-⽇ 时:分:秒
      • 也可以使用单引号
  • 设置时间
    • date -s "2020-02-02 20:02:02"
  • 显示日历
    • cal
      • 显示当前月
    • cal -3
      • 显示上一个月、当前月、下一个月
    • cal 2021cal -y
      • 显示一年

相关内容