Linux运维之路


Linux基础命令合集 70个常用运维命令

admin 2019-07-02 500浏览 0条评论
首页/正文
分享到: / / / /

[TOC]

注意

⭐⭐⭐⭐⭐ 工作中常用必备命令

⭐⭐⭐⭐ 常用命令

⭐⭐⭐ 偶尔用的命令

万能的帮助命令

help帮助

注意: 所有的命令几乎都有帮助手册 灵活运用帮助手册能让你工作效率,学习能力大幅度提升

[命令] --help

所有命令都是 [命令] [参数] 来执行

help命令用于显示shell内部的帮助信息。help命令只能显示shell内部的命令帮助信息。而对于外部命令的帮助信息只能使用man或者info命令查看。

man帮助

man [命令名] 如: man ls

info帮助

info指令是man 指令的详细内容。但man 使用起来要方便的多

**一般工作中常用 man [命令] 来获取帮助信息 **

history 查看历史命令 ⭐⭐⭐⭐⭐

查看历史操作命令,非常常用的命令。

系统信息查询命令

arch 查询系统处理器架构

[root@leilei ~]# arch --version         ## 查询命令版本
arch (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David MacKenzie and Karel Zak.


[root@leilei ~]# arch          ## 查询系统处理器的架构
x86_64

uptime 显示系统运行时间

[root@leilei network-scripts]# uptime 
 20:33:14 up 33 min,  2 users,  load average: 0.00, 0.01, 0.01

uname 显示处理器处理器架构

[root@leilei ~]# uname -a         ##显示命令所有信息
Linux leilei 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

[root@leilei ~]# uname -m         ##显示处理器架构
x86_64
 
[root@leilei ~]# uname -r         ## 显示当前系统内核版本
3.10.0-693.el7.x86_64

[root@leilei ~]# uname -s         ## 显示内核名
Linux

[root@leilei ~]# uname -n         ## 显示网络节点主机名
leilei

[root@leilei ~]# uname -r         ## 显示内核发行版
3.10.0-693.el7.x86_64

[root@leilei ~]# uname -v         ## 显示内核版本
#1 SMP Tue Aug 22 21:09:27 UTC 2017

[root@leilei ~]# uname -p         ## 显示处理器类型
x86_64
 
[root@leilei ~]# uname -i         ## 显示硬件平台
x86_64

[root@leilei ~]# uname -o         ## 显示操作系统
GNU/Linux


[root@leilei ~]# uname --version   ##显示命令版本
uname (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David MacKenzie.

cat 查看系统信息

cat /proc/cpuinfo 显示CPU info的信息 
  [root@leilei ~]# cat /proc/cpuinfo
    processor	: 0
	vendor_id	: GenuineIntel
	cpu family	: 6
	model		: 79
	model name	: Intel(R) Xeon(R) CPU E5-26xx v4
	stepping	: 1
	microcode	: 0x1
	cpu MHz		: 2397.222
	cache size	: 4096 KB
	physical id	: 0


cat /proc/interrupts 显示中断 

[root@leilei ~]# cat /proc/interrupts
           CPU0       CPU1       
  0:         80          0   IO-APIC-edge      timer
  1:         10          0   IO-APIC-edge      i8042
  4:        571          0   IO-APIC-edge      serial
  6:          3          0   IO-APIC-edge      floppy
  8:          0          0   IO-APIC-edge      rtc0
  9:          0          0   IO-APIC-fasteoi   acpi
 10:          0          0   IO-APIC-fasteoi   virtio2
 11:          0          0   IO-APIC-fasteoi   uhci_hcd:usb1
 12:         15          0   IO-APIC-edge      i8042
 14:    1516205          0   IO-APIC-edge      ata_piix
 15:          0          0   IO-APIC-edge      ata_piix
 24:          0          0   PCI-MSI-edge      virtio1-config
 25:    2338363          0   PCI-MSI-edge      virtio1-req.0
 26:          0          0   PCI-MSI-edge      virtio0-config
 27:    5193353          0   PCI-MSI-edge      virtio0-input.0
 28:         86          0   PCI-MSI-edge      virtio0-output.0
 29:          2    6254347   PCI-MSI-edge      virtio0-input.1
 30:          1        103   PCI-MSI-edge      virtio0-output.1
NMI:          0          0   Non-maskable interrupts
LOC:  289105293  298713500   Local timer interrupts
SPU:          0          0   Spurious interrupts
PMI:          0          0   Performance monitoring interrupts
IWI:    4131529    4117687   IRQ work interrupts
RTR:          0          0   APIC ICR read retries
RES:   18723296   20670284   Rescheduling interrupts
CAL:        843    1334980   Function call interrupts
TLB:    1185802    1185540   TLB shootdowns
TRM:          0          0   Thermal event interrupts
THR:          0          0   Threshold APIC interrupts
DFR:          0          0   Deferred Error APIC interrupts
MCE:          0          0   Machine check exceptions
MCP:       5175       5175   Machine check polls
ERR:          0
MIS:          0
PIN:          0          0   Posted-interrupt notification event
PIW:          0          0   Posted-interrupt wakeup event


cat /proc/meminfo 校验内存使用 

[root@leilei ~]# cat /proc/meminfo
MemTotal:        3881804 kB
MemFree:          173328 kB
MemAvailable:    2145472 kB
Buffers:          215108 kB
Cached:          1842696 kB
SwapCached:            0 kB
Active:          2825952 kB
Inactive:         605416 kB
Active(anon):    1373836 kB
Inactive(anon):      156 kB
Active(file):    1452116 kB
Inactive(file):   605260 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                32 kB
Writeback:             0 kB
AnonPages:       1373564 kB
Mapped:            52876 kB
Shmem:               428 kB
Slab:             217096 kB
SReclaimable:     201944 kB
SUnreclaim:        15152 kB
KernelStack:        4464 kB
PageTables:         8264 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1940900 kB
Committed_AS:    3522240 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       14316 kB
VmallocChunk:   34359715580 kB
HardwareCorrupted:     0 kB
AnonHugePages:   1042432 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       67576 kB
DirectMap2M:     4126720 kB


cat /proc/swaps 显示哪些swap被使用 没有swap分区显示为空
	[root@leilei ~]# cat /proc/swaps
	Filename				Type		Size	Used	Priority  
    

cat /proc/version 显示内核的版本 
	[root@leilei ~]# cat /proc/version
	Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017

cat /proc/net/dev 显示网络适配器及统计 
[root@leilei ~]# cat /proc/net/dev
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
  eth0: 1236590899 12477458    0    0    0     0          0         0 2926880445 12370679    0    0    0     0       0          0
    lo: 489331630  281773    0    0    0     0          0         0 489331630  281773    0    0    0     0       0          0


cat /proc/mounts 显示已加载的文件系统 

[root@leilei ~]# cat /proc/mounts
rootfs / rootfs rw 0 0
sysfs /sys sysfs rw,relatime 0 0
proc /proc proc rw,relatime 0 0
devtmpfs /dev devtmpfs rw,nosuid,size=1931420k,nr_inodes=482855,mode=755 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
devpts /dev/pts devpts rw,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,nodev,mode=755 0 0
tmpfs /sys/fs/cgroup tmpfs ro,nosuid,nodev,noexec,mode=755 0 0
cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd 0 0
pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0
cgroup /sys/fs/cgroup/hugetlb cgroup rw,nosuid,nodev,noexec,relatime,hugetlb 0 0
cgroup /sys/fs/cgroup/net_cls,net_prio cgroup rw,nosuid,nodev,noexec,relatime,net_prio,net_cls 0 0
cgroup /sys/fs/cgroup/pids cgroup rw,nosuid,nodev,noexec,relatime,pids 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0
cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpuacct,cpu 0 0
cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0
configfs /sys/kernel/config configfs rw,relatime 0 0
/dev/vda1 / ext4 rw,noatime,data=ordered 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=25,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=8604 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
mqueue /dev/mqueue mqueue rw,relatime 0 0
tmpfs /run/user/0 tmpfs rw,nosuid,nodev,relatime,size=388184k,mode=700 0 0

date 显示和设置系统时间

加粗的重点记忆

参数 描述信息
date 显示当前时间
date -d 显示过去的时间 必须指定过去的时间范围 如 过去的一天: date -d -1day 过去的一分钟:date -d -1min 加上now 则代表显示当前时间
date –version 显示版本
+%A 显示 周几 英文缩写
+%B +%B 显示 英文 +%b 显示月缩写
+%d 显示日期 (以01-31来表示)
+%D 显示日期(含年月日)。
+%F 显示日期(含年月日) 如:2019-06-29 常用
+%G 显示当前年份 +%g显示当前年份的后两位 如2019 只会显示 19
+%h 显示 时 英文显示
+%H 显示 时 数字显示
+%j 当前年的第 N 天
+%N 纳秒显示
+%u 当前周的 第几天
+%U 当前年的 第几周
+%w 一周的第几天 (0..6); 0 代表周日 重点记忆
+%W 当前年的 第几周
+%x 当前年月日 显示方式:06/29/2019
+%X 显示当前时间[12小时制] 如: 10:26:38 AM
+%Y 显示当前年份
date -d yesterday +%Y%m%d 显示前一天的年月日
date +%Y%m%d 显示当前的年月日 20190629

按各种格式显示当前日期时间

命令 显示样式
date '+%Y-%m-%d' 2019-06-29
date +%Y-%m-%d 2019-06-29
date +%m/%d/%y 06/29/19
date "+%Y-%m-%d %H:%M:%S" 2019-06-29 10:38:14

date 设置系统时间

[root@leilei ~]# date -s "2019-11-11 00:00:00"

使用打包命令增加时间

方式1:
[root@leilei ~]# tar -zcvf etc-$(date +%F).tar.gz /etc

方式2:
[root@leilei ~]# tar zcvf etc-`date +%F`.tar.gz /etc

显示文件最后修改的时间

[root@leilei scripts]# date -r date.txt
Sun Jan 29 10:49:11 CST 2017

设置系统时间

[root@leilei scripts]# date -s "2018-12-12 00:00:00"

生产场景中常用时间格式来打包数据:

[root@Andy andy]# date +%F
2016-11-16
[root@Andy andy]# date +%F -d "-1day"
2016-11-15
[root@Andy andy]# date +%F -d "+2day"
2016-11-18
[root@Andy andy]# date +%F -d "+24hour"
2016-11-17
[root@Andy andy]# date +%F-%H -d "+2hour" 
2016-11-16-14

如:打包etc目录,并显示打包时间
tar zcf leilei$(date +%F -d "-1day").tar.gz  /etc

保存时间到bios中 clock -w

clock -w

NUX相关命令

selinux是Linux系统中的安全模块,SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则) 但是在实际中作中,该设置的局限性太大,一般选择关闭selinux

getenforce 查看SElinux状态

SELINUX的几种状态 enforcing 开启 permissive 旁路 disabled 关闭

设置SELINUX状态 setenforce 0 临时关闭 setenforce 1 临时开启

重启永久关闭selinux sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux

不重启临时关闭selinux **setenforce 0

文件和目录操作命令

ls 列出文件和目录 【⭐⭐⭐⭐⭐】

全拼list,功能是列出目录的内容及其内容属性信息。

命令格式: ls [参数] [文件或目录]

命令 选项 注释
ls
-a 显示全部的文件,包括隐藏文件(开头为 . 的文件)也一起罗列出来 (⭐⭐⭐⭐⭐)
-A 显示全部文件包括隐藏文件 但不包括 . 和 .. 两个目录
-d 显示目录 (⭐⭐⭐)
-r 倒序 (⭐⭐⭐)
-t 显示时间 [常用参数 ls -lrt 按时间倒序显示文件]
-i 显示inode信息
-h 人性化显示[把字节转换为人类可读的值 如: MB KB GB] (⭐⭐⭐)
-l 长格式显示 (⭐⭐⭐)
-S 文件大小排序
-t 以时间排序(⭐⭐⭐)
--color=never 依据文件特性给予颜色显示
--color=auto auto 表示让系统自行依据配置来判断是否给予颜色 (⭐⭐⭐)
--full-time 以完整时间模式 (包含年、月、日、时、分)输出
常用选项
ls -lrt 长格式按照时间倒序显示文件和目录(⭐⭐⭐⭐⭐)
ls -lh 长格式人性化显示文件大小

cd 目录切换命令 (⭐⭐⭐⭐)

全拼change directory,功能是从当前工作目录切换到指定的工作目录。

命令格式: 命令 [目录]

命令 参数 注释
cd 目录名 如 /root 切换到指定目录
cd .. 返回上一级目录
cd ../ 返回上一级目录
cd ~ 返回用户家目录(⭐⭐⭐⭐⭐)
cd - 返回上一次进入的目录(⭐⭐⭐⭐)

pwd 显示当前所在目录 (⭐⭐⭐⭐⭐)

显示当前的所在目录

mkdir 创建目录 (⭐⭐⭐⭐⭐)

命令格式: mkdir [参数] [目录名]

命令 参数 注释
mkdir 不加参数 创建一个指定目录 如: mkdir 123
mkdir -m 创建目录时指定权限 如:mkdir a=rwx
-v 显示创建信息
-p 递归创建多个目录,如:mkdir /leilei/leilei1 (⭐⭐⭐⭐⭐)

touch 创建文件 (⭐⭐⭐⭐⭐)

命令格式: touch [参数] [文件名]

命令 参数 注释
touch 不加参数 创建一个文件

ln 创建链接文件 (⭐⭐⭐⭐)

命令格式: ln 源文件 目标文件

命令 参数 注释
ln 不加参数 创建硬链接
ln -s 创建软连接

软连接和硬链接区别:

软连接:

​ 快捷方式 存放的时源文件的位置,相当于Windows的快捷方式

硬链接:

​ 在用一个分区的,Inode号码相同的文件,互为硬链接,删除一个硬链接,源文件不会被删除,只有硬链接全部被删除文件才会被删除

cp 复制文件或命令 (⭐⭐⭐⭐⭐)

命令格式: cp [选项] 源文件 目标文件

#目标位置有同名文件,所以会提示是否覆盖

选项:

命令 参数 注释
cp -a 所有属性 [推荐使用] (⭐⭐⭐⭐⭐)
-i 提示
-d 在复制软连接文件时会一并复制软连接,不加-d 则复制源文件 [该参数只对软连接生效,硬链接无法生效]
-p 保留源文件属性不变
-f 替换正在使用的文件 如 1.txt 正在被使用, 可以通过 cp -f 2.txt 1.txt 把2.txt内容替换为1.txt

rm 删除命令 !!! (⭐⭐⭐⭐⭐)

用于删除文件和目录

rm [参数] [文件或目录]

命令 参数 注释
rm -f 删除文件
-r 递归删除,并且会询问是否删除
-rf 递归删除不询问 (⭐⭐⭐⭐⭐) 命令重要,风险高

mv 移动命令(⭐⭐⭐⭐⭐)

移动文件或目录

mv [参数] [源] [目标]

命令 参数 注释
mv 该命令用于移动目录或者为目录改名
无参数 正常移动改变目录名 如果目录存在同名目录会进行询问
-f 如果被移动的目录中存在相同目录会被强制覆盖

tree 树形显示文件和目录

命令 参数 描述
tree
-a 树形显示所有文件和目录
-L 1 显示1层目录 显示2层使用 **tree -L 2 /目录 ** ⭐⭐⭐(常用)
-f 显示文件或目录全路径
-d 显示目录名
-D 显示目录的最后修改时间
-g 列出时显示所属主的名称
-i 不使用树形显示文件和目录改为以文件列表形式显示文件和目录
-t 按时间排序

功能是以树形结构显示目录下的内容。

file 显示文件类型

file [文件或目录]

[root@leilei /]# file /etc/profile
/etc/profile: ASCII text


[root@leilei /]# file /etc/rc.local 
/etc/rc.local: symbolic link to `rc.d/rc.local'

md5sum 为文件或目录计算md5值

计算和校验文件的MD5值

[root@leilei /]# file /etc/profile
/etc/profile: ASCII text
[root@leilei /]# file /etc/rc.local 
/etc/rc.local: symbolic link to `rc.d/rc.local'

cut

将文件的每一行按指定分隔符分割并输出。

  • -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
  • -c :以字符为单位进行分割。
  • -d :自定义分隔符,默认为制表符。
  • -f :与-d一起使用,指定显示哪个区域。
  • -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的 范围之内,该字符将被写出;否则,该字符将被排除
命令 参数 描述
cut
-b
-c 指定起始和结束的块 如: cut -c 5-10 test.txt 指定多个块:cut -c 5-10,15-20 test.txt
-f 保留指定的块 如:cut -f 5-10 test.txt cut -f 10-18,27-35

sort 文件排序⭐⭐⭐

对文件的内容大小进行排序

命令 参数 描述
sort 无参数 正序排序 较小的排在最下
-r 倒序排序 较大的排在最下
-f 排序时,将小写字母视为大写字
-n 按照数值大小排序

uniq 统计字符出现次数⭐⭐⭐

统计字符出现的次数,在统计访问次数或出现频率的时候用的较多

命令 参数 描述
uniq
-c 统计次数,并且在后面显示次数
-d 仅显示多次重复的 值,与 uniq -c 一起使用可以看出现的次数
-u 仅显示出现1次的值

wc 统计行数⭐⭐⭐⭐

统计出现的行的数量 日常使用频繁

命令 参数 描述
wc
-l 显示字节数
-c 统计多个文件字节数并显示出 如:wc -c 1.txt 2.txt

vimdiff 文件对比工具

命令行可视化文件比较工具,常用于文本文件。

  1. Ctrl-w K(把当前窗口移到最上边)
  2. Ctrl-w H(把当前窗口移到最左边)
  3. Ctrl-w J(把当前窗口移到最下边)
  4. Ctrl-w L(把当前窗口移到最右边)

技巧:https://www.ibm.com/developerworks/cn/linux/l-vimdiff/

scp 拷贝命令

全拼secure copy,用于不同主机之间复制文件。

命令 参数 注释
scp
无参数 拷贝会提示
-r 递归拷贝不提示
-v 显示拷贝详情
-c cipher 使用cipher协议加密传输
-l 限定用户所能使用的带宽,以Kbit/s为单位。
-P 指定端口

案例:

1. 拷贝node1服务器下的hosts文件到 node2服务器
scp -r /etc/hosts node2:/etc

2. 使用root用户拷贝 /etc/hosts文件到远端node2上的tmp文件夹
scp -r /etc/hosts  root@node2:/etc

3. 拷贝node2服务器上的 /etc/hosts文件到本地
scp -r root@node2:/etc/hosts /etc

4. 拷贝本地/etc/hosts文件到远端服务器/etc文件夹下并使用44332端口传输
scp -r -P 44332 /etc/hosts root:node2:/etc/

wget 下载命令

通过wget能够下载公网发布的资源,如:阿里云yum源

命令 参数 注释
wget
-O 将文件写入到一个新文件中
-b 开始后放入后台
-r 递归下载

文件内容查看命令

cat (⭐⭐⭐⭐⭐)

命令 参数 注释
cat 无参数 查看文件内容
cat --help 获取帮助
-A 等价于 -vET 显示所有内容,空行会使用$表示
-n **显示行号,空行也会标识行号 ** (⭐)
-b 显示行号,但不统计行号
-s 将超过两行空行的内容显示为一行
-E 行尾会显示为 $ (用于区别内容尾部是否存在空格)
-T 将使用过tab键的位置用 ^I 显示

cat 合并文件 (⭐⭐⭐⭐⭐)

例子1:  合并文件
如果 1.txt 2.txt 3.txt 里面有内容,现在想把这3个文件内容写入到一个新的文件里,操作如下:

[root@leilei ~]# echo "111" >1.txt     #写入内容
[root@leilei ~]# echo "222" >2.txt
[root@leilei ~]# echo "333" >3.txt
[root@leilei ~]# cat 1.txt 2.txt 3.txt >4.txt   ##将 3个文件的内容都追加到 一个文件中
[root@leilei ~]# cat 4.txt    ## 查看结果
111
222
333

cat 追加和覆盖 (⭐⭐⭐⭐⭐)

追加:
[root@leilei ~]# cat 1.txt 
111
[root@leilei ~]# cat >> 1.txt <<eof
> 222
> 333
> eof

[root@leilei ~]# cat 1.txt     #通过cat命令来追加文件内容
111
222
333


覆盖:
[root@leilei ~]# cat > 1.txt <<eof    # 通过cat覆盖原有文件内容
> 111
> eof
[root@leilei ~]# cat 1.txt 
111

## 这两个方法的唯一区别在于  cat >  和 cat >>    
使用  > 时为覆盖内容
使用  >> 时为追加内容

tac 反向输出

tac是cat的反向拼写,因此命令的功能为反向显示文件内容。

more 查看文件尾部N行(⭐⭐⭐⭐⭐)

more 仅能向前移动,却不能向后移动 less 则可以

more 默认查看尾部一屏

可以使用 回车 一行一行查看

q	 退出查看
空格  一屏一屏查看
回车	一行一行查看
more 参数 注释
more 默认查看前1屏 [这个是 -p 的默认功能]
使用more 查看时 按 回车 一行一行显示
使用more 查看时 按 空格 一屏一屏显示
使用more 查看时 按 / 后 一屏一屏显示
-f 使用more 查看时 按 f 一屏一屏显示 并显示加载了多少行
使用more 查看时 按 + 号 直接显示当前行号 (⭐⭐⭐⭐)
使用more 查看时 按 数字 再按回车 向下回滚 N行 按50+回车 翻滚50行 (⭐⭐⭐⭐)

less 查看文件尾部N行(⭐⭐⭐⭐⭐)

more 仅能向前移动,却不能向后移动

less 可以随意移动

命令 参数 注释
less
[文件1] [文件2] 同时浏览多个文件
输入 :n 后,切换到 文件1
输入 :p 后,切换到 文件2
less 全屏情况下 ctrl + F - 向前移动一屏
less 全屏情况下 ctrl + B - 向后移动一屏
less 全屏情况下 ctrl + D - 向前移动半屏
less 全屏情况下 ctrl + U - 向后移动半屏
less 全屏情况下 j 向前移动一行
less 全屏情况下 k 向后移动一行
less 全屏情况下 G 到最后一行
less 全屏情况下 g 移动到第一行
less 全屏情况下 按 q 退出 (⭐⭐⭐⭐)

head 查看文件头部N行(⭐⭐⭐⭐⭐)

head 用于查看文件头的N行

命令 参数 注释
head 用于查看文件头的N行
-c 指定字节数 如:head -c 100 /var/log/dmesg 查看前100字节内容
-n 数字 查看头部 N 行 如: head -n100 /var/log/dmesg 查看前100行内容

tail 查看文件尾部N行(⭐⭐⭐⭐⭐)

tail 用于查看文件尾部的N行内容

命令 参数 注释
tail 用于查看文件尾部的N行
-f 等同于tailf 查看最新的实时数据
-c 输出文件末尾的 N 个字节数据 如: tail -c 100 /var/log/dmesg 查看末尾的100字节数据

tailf 持续查看文件最新数据 (⭐⭐⭐⭐⭐)

和tail功能一致,类似于 tail -f 功能 持续查看最新输出的数据

nl 显示行号

用于显示文件的行号

命令 参数 注释
nl 查看文件内容并显示文件行号 如:nl 1.txt

文件查找命令

find 查找命令(⭐⭐⭐⭐⭐)

仅次于 三剑客(sed awk grep) 的命令

命令格式: find [路径] [选项]

命令 参数 注释
find
-type 指定文件类型 文件类型
文件类型 ======================
-f 查找文件(⭐⭐⭐⭐⭐)
-d 查找目录 (⭐⭐⭐⭐⭐)
-l 符号链接[使用较少]
-b 块文件[使用较少]
* 通配符 查找的时候使用
文件类型 ======================
-perm 按照权限查找 如:-perm 755
-mtime 改变时间 参数用法: -mtime [时间]
-mtime +10 : 10天以前
-mtime -10 : 最近10天
-mtime 10 : 第10天
-atime 与-mtime 一样
-ctime 与-mtime 一样
-size 文件大小:
-size +10MB 大于10MB的
-size -10MB 小于10MB的
-maxdepth 最大搜索深度 如:-maxdepth 1 只会搜 指定目录的第一层文件,递归下的目录不搜索

find 练习题

1.查找当前目录下所有文件,并把文件中的 chenleilei 字符串替换成 leilei

find ./ -type f -name "*"| xargs sed -i "s#chenleilei#leilei#g"

2.查找出/tmp目录下面修改时间是7天以前,大小在50k到2M之间,并以.log结尾的文件

find /tmp -type f -mtime +7 -size +50MB -size -2MB -name "*.log"

3.在/var/sync/log 目录中查找更改时间在 5 日以前的文件井删除它们?

find /var/sync/log  -mtime -5 -name "*" | xargs rm -f

打包命令

tar 命令(⭐⭐⭐⭐)

tar命令是Linux中最常用的打包命令,命令简单功能齐全压缩比高

命令 参数 注释
tar
-c 打包
-C 指定解压目录(大写C)
-z 打包为zip格式
-v 显示打包过程
-f 指定压缩包名
-x 解压
-t 查看 一般使用 tar -tf 1.tar.gz 查看包内容
-h #打包中包含软连接文件,需要添加 -h 参数
--exclude 排除文件
-X 排除一个文件中写的所有文件和目录 (⭐⭐⭐)

tar常用命令参数演示:

打包为tar.gz:
tar -zcf /root/1.tar.gz /etc       # 将etc目录打包

打包多个目录或文件
tar -zcf /root/1.tar.gz /etc /var

打包为tar.bz2:
tar -jcf /root/1.tar.bz2 /etc

解压tar.bz2包:
tar -jxvf /root/1.tar.bz2

排除文件:


解压:
tar -xf /root/1.tar.gz -C /etc

查看包:
tar -tf /root/1.tar.gz


打包添加时间戳:
tar -zcf /root/$(date +%F)1.tar.gz /etc

时间戳:
+%F    年月日显示格式: 2019-07-02
+%H    小时
+%M    分钟
+%S    秒


排除选项 --exclude  或 -X
tar xf /tmp/2018-03-30_11.tar.gz -C --exclude 3.sh /tmp  # 3.sh 不解压

--exclude 排除带个文件
-X 排除一个文件中记录的所有文件



排除多个文件或者目录
1. 查看当前目录文件
[root@leilei chenleilei]# ls
1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  leileidir 

2. chenleilei目录下创建一个文件写入排除的文件或目录
   touch 11.txt
   echo '1.txt' >>11.txt
   echo '2.txt' >>11.txt
   echo '11.txt' >>11.txt
   
3. 开始打包
 tar -zcvf leilei1.tar.gz -X 11.txt  ../chenleilei

4. 检查打包
[root@leilei chenleilei]# tar -tf leilei1.tar.gz 
chenleilei/
chenleilei/leileidir/
chenleilei/4.txt
chenleilei/5.txt
chenleilei/6.txt
chenleilei/7.txt
chenleilei/3.txt

检查结果:
排除了 11.txt 中写的  1.txt 2.txt 11.txt  这就是tar命令中的 -X 的作用

zip 命令 unzip命令(⭐⭐⭐)

zip命令用于支持Windows中的rar zip 压缩文件解压打包的命令

该命令 Linux下用的较少,了解即可

命令 参数 描述
zip 压缩
-r 递归压缩,就是将目录下的子目录也压缩
-m 压缩之后删除源文件
-v 显示压缩过程
-q 不显示过程
-u 更新压缩文件(也就是将新的文件加入到压缩包中)
unzip 解压
-d 解压到指定目录
-n 解压时不覆盖已存在的文件
-o 解压时覆盖文件,并不提示用户
-v 查看压缩文件的详细信息
-t 测试压缩文件有无损坏,但并不解压
-x 指定一个文件 在解压时指定该文件,该文件中包含的文件不会被解压出来

gzip 命令(⭐⭐⭐)

gzip 是 Linux 系统中经常用来对文件进行压缩和解压缩的命令,通过此命令压缩得到的新文件,其扩展名通常标记为“.gz”。

gzip 命令只能用来压缩文件,不能压缩目录,即便指定了目录,也只能压缩目录内的所有文件。

命令格式: gzip [选项] 源文件

命令 参数 描述
gzip
-c 将压缩数据输出到标准输出中,并保留源文件。
-d 对压缩文件进行解压缩。
-r 递归压缩指定目录下以及子目录下的所有文件。
-v 对于每个压缩和解压缩的文件,显示相应的文件名和压缩比。
-l 对每一个压缩文件,显示以下字段:
* 压缩文件的大小
* 未压缩文件的大小
* 压缩比
* 未压缩文件的名称
- 数字 指定压缩等级

grep/egrep

过滤字符串,三剑客老三。

join

按两个文件的相同字段合并。

tr

替换或删除字符。

vi/vim

命令行文本编辑器。

文件压缩及解压缩命令(4个)

tar

打包压缩。oldboy

unzip

解压文件。

gzip

gzip压缩工具。

zip

压缩工具。

信息显示命令(11个)

uname

显示操作系统相关信息的命令。

hostname

显示或者设置当前系统的主机名。

dmesg

显示开机信息,用于诊断系统故障。

uptime

显示系统运行时间及负载。

stat

显示文件或文件系统的状态。

du

计算磁盘空间使用情况。

df

报告文件系统磁盘空间的使用情况。

top

实时显示系统资源使用情况。

free

查看系统内存。

date

显示与设置系统时间。

cal

查看日历等时间信息。

搜索文件命令(4个

which

查找二进制命令,按环境变量PATH路径查找。

find

从磁盘遍历查找文件或目录。

whereis

查找二进制命令,按环境变量PATH路径查找。

locate

从数据库 (/var/lib/mlocate/mlocate.db) 查找命令,使用updatedb更新库。

关机与重启

shutdown -h now 关闭系统(1) 
init 0 关闭系统(2) 
shutdown -h hours:minutes & 按预定时间关闭系统 
shutdown -c 取消按预定时间关闭系统 
shutdown -r now 重启(1) 
reboot 重启(2) 
logout 注销 
halt   关机

shutdown 关机/重启:

shutdown 命令是直接通过发送信号给 init 进程,通过init进程来运行关机操作

命令 参数 描述
shutdown --help 获取帮助
shutdown -h 关闭计算机后面加上 +5 则代表5分钟后关机 加上时间如:shutdown -h 17:00 代表 17点关机
shutdown -h now 立即关机 [重点掌握] 如:halt 命令
shutdown -r 重启系统[重点掌握]
shutdown -r +10 10分钟后关机 shutdown -r +10 “shutdown system” 10分钟后关机 并告知给登录用户
shutdown -c 取消已经执行过多少时间后关机命令
shutdown -k 发送信号给当前已经登录的系统用户

halt 关机:

halt 关机指令与shutdown 相同。 直接输入halt 指立即关机

命令 参数 描述
halt 等同于使用 poweroff 命令 直接断电源方式关机 危险
halt -p nihao

reboot 重启:

命令 参数 描述
reboot 不加参数 重启服务器
-i 重启前关闭所有网络

权限与用户管理相关命令

用户和组配置文件

/etc/passwd 用户的配置文件 重要

/etc/shadow 用户影子口令(密码)文件

/etc/group 组的配置文件

/etc/gshadow 组的密码文件

chown 修改文件或目录所有者

修改文件的所有者 修改目录所有者

命令 参数 描述
chown 这里是授权的主和组
-R root.root 递归授权
**.**root 组授权
root**.** 主授权
参数:
-R  递归授权



将文件所有者修改为 chenleilei
chown leilei.leilei anaconda-ks.cfg 

[root@chenleilei ~]# ll -al anaconda-ks.cfg    #检查
-rw-------. 1 leilei leilei 1341 Jul  1 06:53 anaconda-ks.cfg


修改目录所有者
chown  root.root leilei

[root@chenleilei ~]# ls -ld leilei
drwxr-xr-x. 2 root root 6 Jul  3 14:24 leilei

chmod 修改文件或目录权限

修改文件或目录的权限

文件所有者权限分为: 属主 属组 其他

文件权限分为:(高级权限) 可读(4) 可写(2) 可执行(1)

chmod中的 u代表用户 g代表 组 o代表其他 a代表所有

命令 参数 描述
chmod
u+r 拥有者用户可读参数
u+w 拥有者用户可写参数
u+x 拥有者用户可执行参数
g+r 拥有者组可读参数
g+w 拥有者组可写参数
g+x 拥有者组可执行参数
a 所有人
a+x 所有人添加可执行参数
a+w 所有人添加可写参数
a+r 所有人添加可读
u=r 拥有者用户只允许有可读
u=w 拥有者用户只允许可写
u=x 拥有者用户只允许执行
灵活使用
chmod a+rwx 所有人有所有权限
u+rwx 拥有者用户

chmod 数字权限

命令 参数 描述
chmod
777 所有权限
755 所属主:可读可写可执行权限 组:可读可执行 其他:可读可执行
644 所属主:可读可写权限 组:可读 其他:可读

chattr 命令和 lsattr 命令

chattr命令防止系统中某个关键文件被修改,进行加锁

lsattr命令对chattr加锁的文件进行查看

应用场景: 如一个系统不想再添加其他用户的时候可以对**/etc/passwd**文件进行加锁,在没有权限的用户非法入侵后,无法添加新的用户

chattr命令参数:

chattr 参数 描述
+i 加锁 ⭐⭐⭐
-i 解锁 ⭐⭐⭐
-V 显示加锁或解锁过程
-v 显示版本号

lsattr命令参数:

检查文件属性是否被枷锁。

useradd 创建用户

命令 影响文件
useradd /etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
参数:
-g    指定用户登录组的GID或组名 如 useradd -g incahome chenleilei #指定chenleilei组为incahome
-G    指定用户属于多个用户组    如 useradd -G incahome chenleilei 


useradd(增)  添加用户  #adduser命令,执行此命令会在系统中添加用户  (会更改4个文件)/etc/passwd    /etc/shadow    /etc/group    /etc/gshadow 


-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中; 
-d<登入目录>:指定用户登入时的启始目录; 
-D:变更预设值; 
-e<有效期限>:指定帐号的有效期限; 
-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号; 
-g<群组>:指定用户所属的群组; 
-G<群组>:指定用户所属的附加群组; 
-m:自动建立用户的登入目录; 
-M:不要自动建立用户的家目录; 
-n:取消建立以用户名称为名的群组; 
-r:建立系统帐号; 
-s:指定用户登入后所使用的shell; 
-u:指定用户id。
来自: http://man.linuxde.net/useradd


-u 指定uid   例子:useradd -u 504 chenleilei
-g 指定用户组  例子:useradd -g incahome chenleilei
-s 指定登陆shell (/9bin/nologin 设置某些用户不能登陆得)

useradd  用户名
useradd chenleilei  password  123456  \\ 创建用户并设置密码为 123456 
useradd -u 504 chenleilei   \\创建用户并设置uid为 504

useradd -g incahome chenleilei  //创建用户并添加入组
passwd chenleilei                //给用户添加密码

看是否因为没有完全删除用户导致的无法创建新的同名账户,可通过find 查找的方式来删除配置文件后 
提醒: 如果创建用户一直失败,可以在 /etc/passwd 中查看是否以前创建过用户 如果有记录 可以删除。
然后查看 /etc/group 组配置文件是否有用户  最后查找是否有同名的用户家目录,并删除。在重新尝试

useradd文件讲解:

[root@oldboy skel]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100                    ##//依赖/etc/login.defs 的 USERGROUPS_ENAB参数,如果为no 则为此处控制
HOME=/home                   ##//把用户的家目录建在/home 中
INACTIVE=-1                  ##//是否启用账号过期停权   -1 表示不启用
EXPIRE=                      ##//账号终止日期,不设置表示不启用终止账户有效期
SHELL=/bin/bash              ##//新用户默认的shell类型。
SKEL=/etc/skel               ##//配置新用户家目录的默认文件存放路径。 当我们添加用useradd用户时,用户家目录下的文件都是从这里配置的目录中复制过去的
CREATE_MAIL_SPOOL=yes        ##//是否创建mail文件。

更改测试:
将SHELL=/bin/bash  改成 SHELL=/bin/bash100000

修改结果:
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash100000
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

查看添加用户的默认bash结果:
[root@oldboy skel]# useradd  chen100
[root@oldboy skel]# tail -1 /etc/passwd
chen100:x:516:516::/home/chen100:/bin/bash100000     ##\\ 默认创建的bash 被修改成了  /bin/bash1000000   这就是修改默认bash的方法 
修改其他配置也是相同方法。

思考:
为什么创建用户 默认是在 /home目录中创建用户目录  为什么默认环境变量是 /bin/bash ??
答:这是因为默认用户配置文件的关系。所有新建用户都是与/etc/default/useradd 中默认定义的配置相同
-D ### \\\修改文件/etc/default/useradd

useradd 参数详解:
-s  shell            $$##\\指定默认登录shell\\重要*****
                    更改登陆shell:usermod  gongli003 -s  /bin/sh
                    [root@oldboy ~]# grep 'gongli003' /etc/passwd
                     ##\\ gongli003:x:808:523::/home/gongli003:/bin/shell

-g  initial_group    $$ (重要) ##\\指定用户登录组的GID或组名  
                     $$  useradd chen -g 517 -s /bin/shell
                     [root@oldboy ~]# grep 'chen' /etc/passwd | grep 517
                     chen110:x:517:517::/home/chen110:/bin/bash
                     chen:x:809:517::/home/chen:/bin/shell


-G                   $$ 指定属于多个组  -m 创建家目录
-D                   $$ 修改文件    /etc/default/useradd  \\-D 是修改这个文件的配置 $
-m                   $$##\\创建用户的HOME目录  默认就创建家目录

-M                   $$##\\不创建用户 家目录 (当默认设置里指定创建时,才用到) 
                    [root@oldboy ~]# useradd chen2 -g 522 -s /bin/shell -M
                    [root@oldboy ~]# ls /home/chen 
                    chen/        chen100/     chen110/     chenleilei/  chenleilei2/ 
-G 指定多个组
-s  shell           $$\\指定默认登录shell\\重要*****
                    更改登陆shell:usermod  gongli003 -s  /bin/sh
                    [root@oldboy ~]# grep 'gongli003' /etc/passwd
                     ##\\ gongli003:x:808:523::/home/gongli003:/bin/shell
                    ## 指定登陆shell (/bin/nologin 设置某些用户不能登陆)
-g  initial_group    $$ (重要) ##\\指定用户登录组的GID或组名 
                     指定用户组  例子:useradd -g incahome chenleilei
                     $$  useradd chen -g 517 -s /bin/shell
                     [root@oldboy ~]# grep 'chen' /etc/passwd | grep 517
                     chen110:x:517:517::/home/chen110:/bin/bash
                     chen:x:809:517::/home/chen:/bin/shell
-u                   ## 指定uid   例子:useradd -u 504 chenleilei
-G                   $$ 指定属于多个组  -m 创建家目录
-D                   $$ 修改文件    /etc/default/useradd  \\-D 是修改这个文件的配置 $
-m                   $$##\\创建用户的HOME目录  默认就创建家目录
-M                   $$##\\不创建用户 家目录 (当默认设置里指定创建时,才用到) 
                    [root@oldboy ~]# useradd chen2 -g 522 -s /bin/shell -M
                    [root@oldboy ~]# ls /home/chen 
                    chen/        chen100/     chen110/     chenleilei/  chenleilei2/ 
-e                   $$##\\指定过期时间

useradd  用户名
useradd chenleilei  password  123456  \\ 创建用户并设置密码为 123456 
useradd -u 504 chenleilei   \\创建用户并设置uid为 504

useradd -g incahome chenleilei  //创建用户并添加入组
passwd chenleilei                //给用户添加密码

看是否因为没有完全删除用户导致的无法创建新的同名账户,可通过find 查找的方式来删除配置文件后 
提醒: 如果创建用户一直失败,可以在 /etc/passwd 中查看是否以前创建过用户 如果有记录 可以删除。
然后查看 /etc/group 组配置文件是否有用户  最后查找是否有同名的用户家目录,并删除。在重新尝试。

-e                   $$##\\指定过期时间
[root@oldboy ~]# chage -l chen2
    Last password change					: Oct 25, 2017
    Password expires					: never
    Password inactive					: never
→→→ $# Account expires						: Jan 01, 2038       \\##过期时间 2038年 
    Minimum number of days between password change		: 0
    Maximum number of days between password change		: 99999
    Number of days of warning before password expires	: 7

-md                  ##\\给用户添加一个自定义的家目录,而不是系统默认的以名字为目录
  [root@oldboy ~]# useradd chen4 -md /home/101
  [root@oldboy ~]# ls /home/101  
  101/               ##\\给chen4 用户创建一个自定义的家目录
  
  [root@oldboy ~]# usermod  -md chen7demulu chen6
                     ##把 chen6 家目录改为chen7
   故障:
   登陆遇见  -bash-4.1$ #解决方案
   usermod -md /home/root    root    改变用户家目录

                  
-c comment           ##\\给新用户添加备注 注释
-d home_dir          ##\\为主目录指定一个名字(如果不想用登录名作为主目录名的话) 
-e expire_date       ##\\用YYYYY-MM-DD格式指定一个账户过期的日期 
                    usermod chen4 -e 2020/01/08
                    [root@oldboy ~]# chage -l chen4
                    Account expires						: Jan 08, 2020            $$\\ 过期时间
 
-f inactive_days     ##\\指定这个帐户密码过期后多少天这个账户被禁用;0表示密码一过期就立即禁 用,-1表示禁用这个功能
-G group ...         ##\\指定用户除登录组之外所属的一个或多个附加组 
-k                   ##\\必须和-m一起使用,将/etc/skel目录的内容复制到用户的HOME目录 

-n                   ##\\创建一个同用户登录名同名的新组 
-r                   ##\\创建系统账户 
-p passwd            ##\\为用户账户指定默认密码 
  
-u uid               ##\\为账户指定一个唯一的UID 
-b default_home      ##\\更改默认的创建用户HOME目录的位置 
-e expiration_date   ##\\更改默认的新账户的过期日期 
-f inactive_days     ##\\更改默认的新用户从密码过期到账户被禁用的天数 
-g group             ##\\更改默认的组名称或GID 
-s shell             ##\\更改默认的登录shell  如 #useradd -D -s /bin/tsch ,修改默认的shell为/bin/tsch

usermod 修改创建好的用户信息

usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]


命令参数:
-u  修改uid
-s  修改shell
-g 指定新的用户组
-G 指定用户多个用户组
-c  添加说明信息

案例:
usermod -g azu a1     #将用户a1添加到 azu
命令 参数 描述
usermod 修改用户信息 #---修改用户的命令,通过usermod 来修改登录名,用户的家目录等
-g 指定用户登录组的GID或组名
如 useradd -g incahome chenleilei #指定chenleilei组为incahome
-G 修改用户所属的 附加组 (添加附加组)
例子: usermod -G 附加组名 用户名
-l 修改用户的名(官方解释:变更用户登陆时的名称)(账号名) : 修改用户的账号名
例子:usermod -l rootnew root ##修改root为rootne
-L -L (锁定) : 冻结锁定用户密码,让密码无效
例子:usermod -L root ##锁定root用户
-u 修改用户的uid
例子:usermod -u 2005 root \将root用户uid 改变为2005
-U 取消或解除账号锁定
例子:usermod -U root \解除root用户的锁定

password

为一个用户设置密码,或为当前用户设置密码

root用户可以为所有用户设置密码,普通用户只能为自己设置密码

设置方法:

root设置: password [用户名]

普通用户设置: password

-n    最短修改密码期限    (-i : --inactive=DAYS)
-x    最长密码修改期限    (-x : --maxmum=DAYS)
-w    密码过期前  n 天 通知    (-w : --warning=DAYS)
-i    密码过期后  n 天 被禁用    (-i : --inactive=DAYS)
-S    查看状态  (pass我的 -S)
      如:[root@oldboy ~]# passwd -S root
          root PS 2016-04-13 0 99999 7 -1 (Password set, MD5 crypt.)

-u    解锁用户的密码    passwd -u  root
-l    锁定用户的密码    passwd -l  root

=====================使用较少===================================
-k        --keep-tokens        身份令牌不过期
-d        --delete             删除一命名的账号密码(根用户可用)
-l        --lock               锁定指定用户的密码
-u        --unlock             解锁指定用户
-e        --expire             终止指定账户的密码(root可用)



选项: passwd [OPTION...] <accountName>
  -k, --keep-tokens       保存身份令牌
  -d, --delete            删除一个账户的密码 (root权限)
  -l, --lock              锁定指定账户的密码
  -u, --unlock            解锁指定账户的密码 (root权限)
  -e, --expire            过期时间 (root权限)
  -f, --force             强制操作(仅root可用)
  -x, --maximum=DAYS      N天后必须更改密码     passwd -x 60 oldboy   //两次修改密码的最 大 天数 后面就接数字,仅root可操作
  -n, --minimum=DAYS      N天内不允许更改密码   password -n 7 oldboy  //两次修改密码的最 小 天数 后面就接数字,仅root可操作
  -w, --warning=DAYS      提前N天通知需要更改密码  passwd -w 10 oldboy //过期前10天 提醒用户更改密码    
  -i, --inactive=DAYS     过期30天 停权    passwd -i 30 oldboy //过期30天后被禁用停权  chage: password inactive 项为过期停权
  -S, --status            显示一个账户的状态
  --stdin                 // 非交互式更改密码

userdel 删除用户

userdel相关文件:

/etc/passwd 用户账号文件

/etc/shadow 用账号密码文件

/etc/group 用户组的账号文件

/etc/gshadow 用户组的密码文件

命令 参数 描述
userdel
-r 删除用户和用户家目录
-f 强制删除 此选项强制删除用户帐户,即使用户仍然登录。它还强制userdel删除

工作中删除用户的方法:

​ 1、注释用户,观察一个月,如果期间没有问题则删除,有问题则恢复该用户。 ​ 2、把用户的登陆shell 改成 /sbin/nologin 让用户无法登陆,如果出问题可以及时修改 ​ 3、ldap(类似活动目录的工具) 统一用户管理。 库里删除用户,全部都会没有(需要谨慎)

groupadd 添加组

groupadd  chenleilei

id 查询用户信息

如: id root

chage命令 (对应 /etc/shadow 文件) 修改密码有效期

[root@oldboy ~]# chage --help
选项:
 
-d,--lastday      最近日期        ## 将最近一次密码时间设为最近日期 
-E  --expiredate   过期时间        ## *****  将账户过期时间设为过期日期,日期写法:MM/DD/YY
-i  --incative     密码失效        ## 密码过期多少天后,用户被禁止使用
-l,--list         显示账户年龄信息    
-m,--mindays      最小天数        ##两次更改密码的最短间隔时间
-M,--maxdays      最大天数        ##两次更改密码的最长间隔时间
-W,--warndays     警告天数        ##密码过期多少天后开始警告
-h  --help         帮助            ## 显示帮助

[root@oldboy ~]# passwd --help

su 切换用户身份

在一个系统中有多个用户的时候 你可以使用su进行用户切换

如果你是普通用户还可以通过 sudo su - 切换到root

visudo

编辑/etc/sudoers文件的专属命令。

sudo 切换到新用户

以另外一个用户身份(默认root用户)执行事先在sudoers文件允许的命令。

网络相关工具

ping 测试连通性

命令 参数 描述
ping
-q 不显示任何传送封包的信息,只显示最后的结果
-c [num] 只输出数值 如: ping -c 5 www.baidu.com
-t 设置TTL值
-i 设置间隔时间 如: ping -i 5 -s 1024 www.baidu.com 5秒ping一次 包1024b

route 显示和设置linux系统的路由表

添加网关:
route add default gw 192.168.233.2   

删除网关
route del default gw 192.168.1.1

查看配置:
route -n
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0             192.168.233.2   0.0.0.0             UG    0      0        0 eth1
169.254.0.0     0.0.0.0               255.255.0.0     U     1002   0       0 eth0
192.168.1.0     0.0.0.0               255.255.255.0   U     0      0        0 eth0
192.168.233.0   0.0.0.0             255.255.255.0   U     0      0        0 eth1
[root@localhost ~]# 
[root@localhost ~]# route del -net 192.168.233.0 netmask 255.255.255.0 dev eth1
# 上面这个动作可以删除掉 192.168.233.0/24 这个网域!
# 请注意,在删除的时候,需要将路由表上面出现的资讯都写入
# 包括  netmask , dev 等等参数!
 
[root@localhost ~]# route add -net 192.168.233.0 netmask 255.255.255.0 dev eth1
# 透过 route add 来增加一个路由!请注意,这个路由必须要能够与你互通。
# 举例来说,如果我下达底下的指令就会显示错误:
[root@localhost ~]# route add -net 192.168.200.0 netmask 255.255.255.0 gw 192.168.200.254
# 因为我的环境内仅有 192.168.1.145 和 192.168.233.137 ,
# 所以不能与 192.168.200.254这个网段直接使用 MAC 互通!
 
[root@localhost ~]# route add default gw 192.168.1.1
# 增加默认路由的方法!请注意,只要有一个默认路由就够了!
# 在这个地方如果您随便设定后,记得使用底下的指令重新设定你的网路
  /etc/init.d/network restart
 
# 如果是要进行路由的删除与增加,那就得要参考上面的例子了,当出现『SIOCADDRT: Network is unreachable』这个错误时,


原文:https://blog.csdn.net/u011857683/article/details/83795435 

ifconfig ip查看

默认不指定网卡 查看所有网卡

指定网卡方式为: ifconfig eth0

[root@leilei skel]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.20  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::20c:29ff:feb5:ac18  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:b5:ac:18  txqueuelen 1000  (Ethernet)
        RX packets 21197  bytes 9637119 (9.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 19246  bytes 26384102 (25.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ifup 启动网卡 和 ifdown 关闭网卡

centos中除了/etc/init.d/network stop  start  停止和关闭网卡还可以通过 ifdown ifup来开启关闭网卡

启动eth0网卡: ifup eth0
关闭eth0网卡: ifdown eth0

netstat 查看网络状态⭐⭐⭐⭐⭐

查看端口和连接信息

命令 参数 描述
netstat
-t tcp
-u udp
-n 显示ip
-l 显示正在监听的端口
-r 显示路由信息
-ant 显示13种状态集
-lntup 查看服务状态 常用 ⭐⭐⭐⭐
-a 显示所有活动的连接以及本机侦听的TCP、UDP端口
-p 在使用Socket的程序PID和程序名称

ss 查看网络状态。

与netstat类似

命令 参数 描述
ss
-t tcp
-u udp
-n 显示数字IP和端口,不通过域名服务器
-l 显示正在监听的的端口
-r 域名解析
ant 与netstat 相同但是消耗资源更少

lsof 全名list open files,也就是列举系统中已经被打开的文件。

直接查看

常用 lsof -i:3306 查看某个端口是否存在

lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程
lsof -c abc:显示abc进程现在打开的文件
lsof -c -p 1234:列出进程号为1234的进程所打开的文件
lsof -g gid:显示归属gid的进程情况
lsof +d /usr/local/:显示目录下被进程开启的文件
lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长
lsof -d 4:显示使用fd为4的进程
lsof -i -U:显示所有打开的端口和UNIX domain文件

nmap 端口扫描命令。

通过nmap来查看哪些端口开放和关闭

nmap扫描IP地址端口打开情况:
nmap 192.168.20.237

nmap扫描域名情况:
nmap -v www.baidu.com

多域名扫描
nmap  www.baidu.com www.163.com

# nmap -sP 192.168.1.0/24       #进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测)

# nmap -sL 192.168.1.0/24       #仅列出指定网络上的每台主机,不发送任何报文到目标主机

# nmap -PS 192.168.1.234		#探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80)

# nmap -PU 192.168.1.0/24		#使用UDP ping探测主机

# nmap -sS 192.168.1.0/24		#使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快

# nmap -sT 192.168.1.0/24		#当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描

# nmap -sU 192.168.1.0/24		#UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口

# nmap -sO 192.168.1.19			#确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等)

# nmap -O 192.168.1.19			#探测目标主机的操作系统
# nmap -A 192.168.1.19			#探测目标主机的操作系统

# nmap -v scanme.nmap.org		#这个选项扫描主机scanme.nmap.org中 所有的保留TCP端口。选项-v启用细节模式。

# nmap -sS -O scanme.nmap.org/24  	#进行秘密SYN扫描,对象为主机Saznme所在的“C类”网段 的255台主机。同时尝试确定每台工作主机的操作系统类型。因为进行SYN扫描 和操作系统检测,这个扫描需要有根权限。

# nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127      #进行主机列举和TCP扫描,对象为B类188.116网段中255个8位子网。这 个测试用于确定系统是否运行了sshd、DNS、imapd或4564端口。如果这些端口 打开,将使用版本检测来确定哪种应用在运行。

# nmap -v -iR 100000 -P0 -p 80		#随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段 发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因 此使用-P0禁止对主机列表。

# nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20		#扫描4096个IP地址,查找Web服务器(不ping),将结果以Grep和XML格式保存。

# host -l company.com | cut -d -f 4 | nmap -v -iL -			#进行DNS区域传输,以发现company.com中的主机,然后将IP地址提供给 Nmap。上述命令用于GNU/Linux -- 其它系统进行区域传输时有不同的命令


[root@localhost ~]# nmap -O 192.168.236.188 
Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-14 04:50 EDT
Nmap scan report for 192.168.236.188
Host is up (0.0028s latency).
Not shown: 999 filtered ports
PORT   STATE SERVICE
22/tcp open  ssh
MAC Address: 00:0C:29:8B:E4:5A (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.10 - 4.11, Linux 3.2 - 4.9
Network Distance: 1 hop

OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 8.89 seconds


参考: http://linux.51yip.com/search/nmap

mail 发送和接收邮件。

mail -s test admin@aispider.com #第一种方法,你可以把当前shell当成编辑器来用,编辑完内容后Ctrl-D结束

echo “mail content”|mail -s test admin@aispider.com #第二种方法,我用的最多,可能是喜欢管道的缘故吧

mail -s test admin@aispider.com< file #第三种方法,以file的内容为邮件内.容发信

mail -s test  admin@aispider.com < file #第三种方法,以file的内容为邮件内容发信

mail -s test -c admin@aispider.com  root@aispider.com< file #第四种方法,给多个用户发送邮

nslookup 交互式查询互联网DNS服务器的命令。

dig 查询主机地址信息

[root@leilei yum.repos.d]# dig baidu.com

; <<>> DiG 9.9.4-RedHat-9.9.4-74.el7_6.1 <<>> baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32119
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;baidu.com.			IN	A

;; ANSWER SECTION:
baidu.com.		15	IN	A	220.181.38.148
baidu.com.		15	IN	A	123.125.114.144

;; Query time: 19 msec
;; SERVER: 223.5.5.5#53(223.5.5.5)
;; WHEN: Sat Jul 06 01:58:44 CST 2019
;; MSG SIZE  rcvd: 59

traceroute 追踪数据传输路由状况。路由追踪

检查一个数据包在网络上的传输情况,以此判断远端主机是否正常

[root@leilei yum.repos.d]# traceroute -I chenleilei.net
traceroute to chenleilei.net (122.228.0.250), 30 hops max, 60 byte packets
 1  gateway (10.0.0.254)  0.141 ms  0.081 ms  0.103 ms
 2  192.168.31.1 (192.168.31.1)  1.285 ms  1.513 ms  1.530 ms
 3  192.168.18.1 (192.168.18.1)  2.877 ms  4.270 ms  4.249 ms
 4  192.168.1.1 (192.168.1.1)  2.807 ms  2.868 ms  3.166 ms
 5  61.152.28.122 (61.152.28.122)  5.361 ms 61.152.29.122 (61.152.29.122)  5.482 ms 61.152.28.130 (61.152.28.130)  6.503 ms
 6  61.152.29.125 (61.152.29.125)  12.000 ms  4.927 ms  7.598 ms
 7  61.152.24.130 (61.152.24.130)  7.466 ms  6.456 ms  6.962 ms
 8  202.97.23.226 (202.97.23.226)  10.386 ms  9.903 ms  9.749 ms
 9  230.223.186.220.broad.wz.zj.dynamic.163data.com.cn (220.186.223.230)  21.924 ms  21.839 ms  21.681 ms
10  * * *
11  * * *
12  122.228.0.250 (122.228.0.250)  14.679 ms  16.278 ms  16.221 ms

tcpdump 命令行的抓包工具。

linux下用于抓包的命令

安装:yum install -y tcpdump

#监听一个接口
tcpdump -i eth1 

#截获 hostname主机的所有数据
tcpdump -i eth0 src host hostname


#对本机的udp 123 端口进行监视 123 为ntp的服务端口
tcpdump udp port 123 

mount 挂载文件系统。

挂载方式:

mount /dev/sr0 /dev/mnt 挂载到 mnt目录中 mount /dev/cdrom /mnt/cdrom/

umount 卸载文件系统

卸载文件系统。

umount /mnt/cdrom/

磁盘管理:

fdisk

磁盘分区命令,适用于2TB以下磁盘分区。

命令 参数 描述
fdisk 无参数 进入分区操作
-l 查看分区表信息 cat /proc/partitions -查看磁盘分区表

分区过程参考: https://www.cnblogs.com/rosepotato/p/8177988.html

​ https://blog.csdn.net/qq_35036995/article/details/80532351

parted 磁盘分区命令,没有磁盘大小限制,常用于2TB以下磁盘分区。

第一步: parted    /dev/sdb        ## 进入分区界面
第二步: mkdlabel gpt                ##调整分区表为gpt   mklabel gpt 
                                                   ##后出现提示 选择yes                                          
第三步: mkpart primary 0 10    ## 大小单位为MB
                                                    ### 出现提示:选择Ignore  即可完成分区 
第四步: p    查看分好的区         ## 完成

mkfs 格式化创建Linux文件系统。

fdisk -cu /dev/sdb   开始分区

默认分区单位是 柱面
分区的时候 输入 ‘ u ’

输入n 创建分区界面(ctrl+u 删除鼠标到行首)

输入 p 分区

选择分第一个区

表示从2048 开始 这里直接按回车

出现:

这里格式可以写成 (+30M 或者30G)直接填写大小,然后回车

partprobe 通知更改了

格式化分区创建文件系统

mkfs.ext4 /dev/sd[增加的磁盘盘符] 如: mkfs.ext4 /dev/sdb1

创建主分区

1.fdisk**

2. n  创建新分区

3. partprobe  通知分区更改

4.w 保存

创建分区后

tune2fs -c 0 -i 0 /dev/sdb5

最后修改:2019-07-02 23:52:54 © 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

上一篇

发表评论

评论列表

还没有人评论哦~赶快抢占沙发吧~