前言
一、系统管理命令
ls命令
显示指定工作目录下的内容,列出工作目录所含的文件及子目录。此命令与Windows下的dir类似。另外,Linux也提供了dir命令,用户也可以用dir命令代替ls命令。ls的语法如下:
ls [ 选项 ] [ 路径或文件 ]
常用选项:
-a 显示指定目录下的所有文件以及子目录,包含隐藏文件(Linux下将“.”开头的文件或者目录视为隐藏文档)
-l 除文件名称外,同时将文件或者子目录的权限、使用者和大小等信息详细列出
-S 以文件大小排序
-pF 在每个文件名后附上一个字符以说明该文件的类型。 “*”表示可执行的普通文件,“/”表示目录, “@” 表示符号链接,“|”表示FIFOs,“=”表示套接字(sockets)
常用组合:
ls –al、ll(ls –l) 、ls –Sl、 ls -apF
[root@localhost etc]# ls -Sl
总用量 1380
-rw-r--r--. 1 root root 670293 6月 7 2013 services
-rw-r--r--. 1 root root 30124 9月 20 12:46 ld.so.cache
-rw-r--r--. 1 root root 12288 9月 20 18:51 aliases.db
-rw-r--r--. 1 root root 7265 9月 20 18:42 kdump.conf
-rw-------. 1 tss tss 7046 8月 4 2017 tcsd.conf
-rw-r--r--. 1 root root 6545 10月 31 2018 protocols
-rw-r--r--. 1 root root 5725 10月 30 2018 DIR_COLORS.256color
-rw-r--r--. 1 root root 5171 10月 31 2018 man_db.conf
-rw-r--r--. 1 root root 5122 11月 5 2018 makedumpfile.conf.sample
-rw-r--r--. 1 root root 5090 10月 30 2018 DIR_COLORS
-rw-r--r--. 1 root root 4669 10月 30 2018 DIR_COLORS.lightbgcolor
[root@localhost etc]# ls -pF
adjtime ethertypes ld.so.cache popt.d/ skel/
aliases exports ld.so.conf postfix/ snmp/
aliases.db favicon.png@ ld.so.conf.d/ ppp/ ssh/
alternatives/ filesystems libaudit.conf prelink.conf.d/ ssl/
anacrontab firewalld/ libnl/ printcap statetab
asound.conf fstab libuser.conf profile statetab.d/
audisp/ fuse.conf locale.conf profile.d/ subgid
audit/ gcrypt/ localtime@ protocols subuid
passwd 命令
用于设置用户口令。 语法格式如下:passwd [用户名]
(1)普通用户要修改自己的口令,可使用以下命令: passwd
然后根据提示连续两次输入口令即可。
(2)超级用户root修改某个用户的口令时,使用以下命令: passwd [用户名]
然后根据提示连续两次输入口令即可。
root修改自己的密码时,只需输入:passwd或者passwd root
然后根据提示连续两次输入口令即可。
su命令
su命令主要用于改变用户身份,其格式如下:su [选项] [用户名]
-加载相应用户下的环境变量
-l 使目前的shell成为改变身份后用户默认的shell
-c 改变身份运行一个指令后就结束
举例:
1)普通用户要成为超级用户,可执行如下命令。
[root@localhost ~]$su -
根据系统提示输入超级用户口令,即可转变为超级用户。
注意:su后面的“-”就是加载root环境变量,如果直接输入su也可以转变为超级用户,但是由于没有加载root环境变量,因此某些指令可能无法执行,会提示“command not found”。
(2)在普通用户A下修改超级用户root的口令,可以使用下面的命令。
[root@localhost ~]$su -c passwd
然后根据提示输入root口令,接着连续两次输入root用户新的密码。执行完毕,系统自动退出到普通用户A下。
dmesg命令
功能说明
显示开机信息。内核会将开机信息存储在系统缓冲区(ring buffer)中,如果开机来不及查看相关信息,可以在开机后利用dmesg命令查看,也可以在/var/log/目录中查看dmesg文件。其格式如下:
dmesg [选项]
-c 显示开机信息后,清除ring buffer信息
-s 设置缓冲区大小,默认设置为8192主要用途:
dmesg经常用于系统异常诊断,当系统出现问题时,会第一时间将异常信息写入dmesg内存中,注意dmesg命令和/var/log/dmesg的区别
free命令
功能说明
free命令用来显示系统内存状态,具体包括系统物理内存、虚拟内存、共享内存和系统缓存。其格式如下: free [ 选项 ] [ -s (间隔秒数)]
-b 以Byte为单位显示内存使用情况
-m 以MB为单位显示内存使用情况
-K 以kB为单位显示内存使用情况
-s(间隔秒数) 根据指定的间隔秒数持续显示内存使用情况
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 995924 316608 437952 7812 241364 493120
Swap: 3145724 0 3145724
[root@localhost ~]#
解读:
total:表示系统中总的内存容量,used:表示正在使用的容量,free:表示当前系统中还剩下的容量,share:表示共享内存容量,在实际的过程中可以直接看最后的一个参数:available :可用的容量
ps命令
功能说明
ps命令显示系统进程在瞬间的运行动态,其格式如下:ps [选项]
ps的选项非常之多,这里我们仅仅介绍常用的选项
-a 显示所有用户的进程,包含每个程序的完整路径
-x 显示所有系统程序,包括那些没有终端的程序
-u 显示使用者的名称和起始时间
-f 详细显示程序执行的路径
-e 将除内核进程以外所有进程的信息写到标准输出常用组合:
ps -ef、ps –aux
[root@localhost ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.6 193556 6528 ? Ss 10:32 0:04 /usr/lib/systemd/systemd --switched-root --system --
root 2 0.0 0.0 0 0 ? S 10:32 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 10:32 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 10:32 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 10:32 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 10:32 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 10:32 0:00 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 10:32 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S 10:32 0:00 [watchdog/0]
详解:
USER:表示运行该进程的用户名
PID:表示该进程的进程id号,可以用来对该进程的控制操作
%CPU : 占用的 CPU 使用率
%MEM: 占用的 内存 使用率
VSZ:占用的虚拟内存大小
RSS :占用的内存大小
TTY: 终端的次要装置号码;?表示后台任务,不占用终端
STAT : 进程状态
================进程状态===========================
D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行,在可中断队列中;
S 处于休眠状态,静止状态;
T 停止或被追踪,暂停执行;
W 进入内存交换(从内核2.6开始无效);
X 死掉的进程;
Z 僵尸进程不存在但暂时无法消除;
W: 没有足够的记忆体分页可分配
WCHAN 正在等待的进程资源;
<: 高优先级进程
N: 低优先序进程
L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O),即,有些页被锁进内存
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ 位于后台的进程组;
===================================================
START:启动该进程的时间
TIME:进程消耗CPU的时间
COMMAND:该进程的命令名称和参数
top命令
top命令提供了实时的对系统处理器状态的监控,它能够实时显示系统中各个进程的资源占用状况。该命令可以按照对CPU的使用、内存使用和执行时间对系统任务进程进行排序显示,同时top命令还可以通过交互式命令进行设定显示。
功能说明
查看即时活跃的进程,类似于Windows的任务管理器。
top的输出可以分为统计信息区和进程信息区两个部分,即前5行显示为统计信息区,下面为进程信息区。
top - 11:31:27 up 59 min, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 125 total, 1 running, 124 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 995924 total, 424536 free, 316164 used, 255224 buff/cache
KiB Swap: 3145724 total, 3145724 free, 0 used. 489424 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6166 root 20 0 301044 6496 5124 S 0.3 0.7 0:12.52 vmtoolsd
1 root 20 0 193556 6528 4140 S 0.0 0.7 0:04.25 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.06 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.12 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
pwd命令
功能说明:显示当前的工作目录,执行pwd指令可立刻得知目前所在的工作目录的绝对路径名称
cd命令
改变当前工作目录,其用法与Windows下的cd类似。具体的语法格式如下:cd [目录名]
cd [目录] 切换到有目录名指定的目录下,注意Linux下文件和目录是区分大小写的
cd 或者cd ~ 返回当前用户的默认工作目录,注意cd与“~”之间有一个空格
cd ~[用户名] 返回指定用户的工作目录下,注意这里“~”和用户名之间没有空格
cd ..或者cd ../ 返回到上级工作目录下
cd / 返回到根目录下
date命令
显示或者修改系统时间与日期。只有超级用户才能用date命令设置时间,一般用户只能用date命令显示时间。
date命令的语法如下:date [选项] 显示时间格式 (以+开头,后面接时间格式)
举例:
显示两天前的时间。
[root@localhost ~]# date '+%Y-%m-%d'
2022-10-09
[root@localhost ~]# date -d "2 days ago" +%Y-%m-%d
2022-10-07
uname命令
uname命令用来显示操作系统相关信息
uptime命令
uptime命令用来输出系统任务队列信息
last命令
列出目前与过去登入系统的用户相关信息。当执行last指令时,它会默认读取位于/var/log目录下名称为wtmp的文件,并把该给文件记录的登入系统的用户名单全部显示出来。
二、用户管理命令
useradd命令
用来创建用户账号或更新用户账号;格式:注意:该命令与adduser命令用法相同,看使用者习惯
- useradd [-c comment] [-d home_dir] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group[,...]] [-m [-k skeleton_dir]] [-o] [-p passwd] [-s shell ] [-u uid ] login
- useradd -D [-g default_group] [-b default_home] [-e default_expire_date] [-f default_inactive] [-s default_shell]
主要参数详解:
-c:加上备注文字,备注文字保存在passwd的备注栏中。
-d:指定用户登入时的启始目录。
-D:变更预设值。
-e:指定账号的有效期限,缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。
-g:指定用户所属的起始群组。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。
-u:指定用户ID号。
当 不 加 -D 参 数 , useradd 指 令 使 用 命 令 列 来 指 定 新 帐 号 的 设 定 值 and 使 用 系 统 上 的 预 设 值 . 新 使 用 者 帐 号 将 产 生 一 些 系 统 档 案 , 使 用 者 目 录 建 立 , 拷 备 起 始 档 案 等 , 这 些 均 可 以 利 用 命 令列 选 项 指 定
usermod命令
用来修 改 使 用 者 帐 号;格式:
usermod [-c comment] [-d home_dir [-m]] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group [,...]] [-l login_name] [-p passwd] [-s shell] [-u uid [-o]] [-L|-U] login
主要参数详解
-c, --comment
添加备信息
-d, --home HOME_DIR
用户的新主目录 (如 果 给 定 -m 选 项 , 使 用 者 旧 目 录 会 搬 到 新 的 目 录 去 ,如 旧 目 录 不 存 在 则 建 个 新 的 。)
-e, --expiredate EXPIRE_DATE
设定帐户过期的日期
-f, --inactive INACTIVE
过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP
强制使用 GROUP 为新主组
-G, --groups GROUPS
新的附加组列表 GROUPS
-a, --append GROUP
将用户追加至上边 -G 中提到的附加组中,并不从其它组中删除此用户
-h, --help
显示此帮助信息并推出
-l, --login LOGIN
新的登录名称
-L, --lock
锁定用户帐号
-m, --move-home
将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique
允许使用重复的(非唯一的) UID
-p, --password PASSWORD
将加密过的密码 (PASSWORD) 设为新密码
-s, --shell SHELL
该用户帐号的新登录 shell
-u, --uid UID
用户帐号的新 UID
-U, --unlock
解锁用户帐号
-Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射 该选项不常用
注意:usermod 不 允 许 你 改 变 正 在线 上 的 使 用 者 帐 号 名 称 。 当 usermod 用 来 改 变 user ID, 必 须 确 认 这 名 user 没 在 电 脑 上 执 行 任 何 程 序。
userdel命令
删 除 使 用 者 帐 号 及 相 关 档 案
格式:userdel -r 用户账户
-r 使 用 者 目 录 下 的 档 案 一 并 移 除 。 在 其 他 位 置 上 的 档 案 也 将 一 一 找 出 并 删 除 。
注意:userdel 不 允 许 你 移 除 正 在线 上 的 使 用 者 帐 号 。 你 必 须 砍 掉 此 帐 号 现 在 在 系 统 上 执 行 的 程 序 才 能 进 行 帐 号 删 除 。
groupadd命令
该命令主要用来建 立 新 群 组 ;groupadd 可 指 定 群 组 名 称 来 建 立 新 的 群 组 帐 号 。 需 要 时 可 从 系 统 中 取 得 新 群 组 值 。
groupadd 有 下 列 选 项 可 用 。
-g gidID 值 。 除 非 使 用 -o 参 数 不 然 该 值 必 须 是 唯 一 , 不 可 相 同 。 数 值 不 可 为 负 。 预 设 为 最 小 不 得 小 于 500 而 逐 次 增 加 。 0~499 传 统 上 是 保 留 给 系 统 帐 号 使 用 。
-r 此 参 数 是 用 来 建 立 系 统 帐 号 。 它 会 自 动 帮 你 选 定 一 个 小 于 499 的 gid 除 非 命令行 再 加 上 -g 参 数 。
-f 这是force标志。使得新 增 一 个 已 经 存 在 的 群 组 帐 号时 , 系 统 会 出 现 错 误 讯 息 然 后 结 束 groupadd 。 如 果 是 这 样 的 情 况 , 不 会 改变 这 个 群 组 ( 或 再 新 增 一 次 ) 也 可 同 时 加 上 -g 选 项 当 你 加 上 一 个 gid , 此 时 gid 就 不 用 是 唯 一 值 , 可 不 加 -o 参 数 , 建 好 群 组 后 会 显 结 果. (该操作谨慎使用)
groupdel 命令
删除某个用户组账号,前提是需要删除的群组必须是存在的,不然会报错!
格式:groupdel 群组名
groupmod命令
修 改 群 组;格式:groupmod [-g gid [-o]] [-n group_name ] group
选项含义:
-g gid 群 组 I D 值 。 必 须 为 唯 一 的 ID 值 , 除 非 用 -o 选 项 。 数 字 不 可 为 负 值。预 设 为 最 小 不 得 小 于 99 而 逐 次 增 加 。 0~99 传 统 上 是 保 留 给 系 统 帐 号 使 用;如 果 有 档 案 使 用 旧 的 群 组 ID , 而 这 时 候 你 新 增 的 群 组 ID 恰 好 与 旧 的 相 同 , 这 样 的 话 你 要 手 动 改 一 下 这 些 档 案 的 群 组 ID 。
-n group_name 更 改 群 组 名 。
who/w 命令
who命令显示目前登录到系统的用户;w显示已经登录的用户以及他们在做什么
三、网络维护命令
ifconfig命令
ifconfig命令用来配置网络或显示当前网络接口状态。类似于Windows下的ipconfig命令,同时ifconfig命令必须以root用户来执行。
其格式如下: ifconfig [选项] [interface] [inet|up|down|netmask|addr|broadcast]
在网卡ens33上配置两个IP地址,分别为192.168.110.136、192.168.110.138,子网掩码为255.255.255.0,使用以下命令:
[root@centos7 ~]# ifconfig ens33 192.168.110.136 netmask 255.255.255.0
[root@centos7 ~]# ifconfig ens33:0 192.168.66.138 netmask 255.255.255.0
修改网卡的MAC地址为新的MAC地址,使用以下命令:
[root@centos7 ~]#ifconfig ens33 hw ether xx:xx:xx:xx:xx:xx
将网卡ens33禁用后再启用,使用以下命令:
[root@centos7 ~]# ifconfig ens33 down [root@centos7 ~]# ifconfig ens33 up
ip命令
设置IP地址,可以使用下列ip命令
设置IP地址,可以使用下列ip命令:
[root@localhost ~]# ip addr add 192.168.110.193/24 dev ens33
查看IP地址:
[root@localhost ~]#ip addr show ens33
删除IP地址,只需用del代替add
[root@localhost ~]#ip addr del 192.168.100.193/24 dev ens33
列出路由表条目
[root@localhost ~]#ip route show
查看路由包来自的接口
[root@localhost ~]#ip route get 172.16.213.51
激活网络接口
[root@localhost ~]# ip link set eth0 up
停止网络接口
[root@localhost ~]# ip link set eth0 down
监控netlink消息
[root@localhost ~]# ip monitor all
显示网络统计信息
[root@localhost ~]# ip -s link
设置默认网关
[root@localhost ~]# ip route add default via 192.168.1.254
SCP命令
scp就是secure copy,用于将文件或者目录从一个Linux系统拷贝到另一个Linux系统下。scp传输数据用的是SSH协议,保证了数据传输的安全。
其格式如下: scp 远程用户名@ip地址:文件的绝对路径 本地Linux系统路径
scp 本地Linux系统文件路径 远程用户名@ip地址:远程系统文件绝对路径名
举例:
[root@centos7 ~]#scp /home/ixdba/etc.tar.gz root@192.168.110.168:/tmp
[root@centos7 ~]#scp root@192.168.110.133:/home/ixdba/etc.tar.gz /tmp
[root@centos7 ~]#scp –r /etc root@192.168.110.135:/opt
traceroute命令
traceroute命令用来显示网络数据包传输到指定主机的路径信息,追踪数据传输路由状况。预设数据包大小是38Bytes,用户可另行设置。它与Windows下的tracert命令类似,
其格式如下: traceroute [选项] [远程主机名或者IP地址] [数据包大小]
-i <网络接口> 使用指定的网络接口发送数据包
-w<超时秒数> 设置等待远程主机回应的时间
-s<来源ip> 设置本地主机发送数据包的IP地址
[root@localhost ~]# traceroute -i eth0 -s 192.168.110.251 -w 10 www.baidu.com 100 traceroute是利用ICMP连接的,有些网络设备(比如防火墙)可能会屏蔽ICMP通过的权限,因此也会出现节点没有回应的状态,如果在指定的时间内(这里我们设置的是10秒),traceroute检测不到某个路由节点的回应信息,就在屏幕输出“*”,表示此节点无法通过。
MTR命令
mtr是 Linux中有一个非常棒的网络连通性判断工具,它结合了ping, traceroute,nslookup 的相关特性.
Loss%列就是对应IP行的丢包率了,值得一提的是,只有最后的目标丢包才算是真正的丢包 Last列则是最后一次返回的延迟,按毫秒计算的
Avg列是所有返回时延的一个平均值
Best列是最快的一次返回时延
Wrst列是最长的一次返回时延
StDev列是标准偏差。
wget命令
wget命令用来从网络上下载某个软件,这个命令对于能够连接到互联网的Linux系统作用非常大,可以直接从网络下载需要的软件。
其格式如下: wget [要下载软件的网址]
举例:
wget -c断点续传
使用wget -c重新启动下载中断的文件: wget -c https://mirrors.aliyun.com/repo/Centos-7.repo
使用wget -O下载并以不同的文件名保存 wget -O yum.zip https://mirrors.aliyun.com/repo/Centos-7.repo
使用wget –limit -rate限速下载 当执行wget的时候,默认会占用全部可能的宽带下载。当需要准备下载一个大文件,就有必要限速了。
wget –limit-rate=300k https://mirrors.aliyun.com/repo/Centos-7.repo
使用wget -b后台下载 对于下载非常大的文件的时候,我们可以使用参数-b进行后台下载。
wget -b https://mirrors.aliyun.com/repo/Centos-7.repo
telnet命令
telnet命令通过telnet协议与远程的主机通信或者获取远程主机对应端口的信息。与Windows下的telnet完成相同的功能。
其格式如下: telnet 主机名或者IP地址 端口
举例:
查看某台Linux系统的22和80端口是否打开以及分别开启了什么服务,使用以下命令:
[root@localhost ~]# telnet 192.168.110.88
[root@localhost ~]# telnet 192.168.110.88 22
[root@localhost ~]# telnet www.sjyh.com 80
查看某台Linux系统的22和80端口是否打开以及分别开启了什么服务,使用以下命令:
[root@localhost ~]# telnet 192.168.110.88 22
Trying 192.168.60.88...
Connected to 192.168.60.88.
Escape character is '^]'. SSH-2.0-OpenSSH_6.6.1
从这里可以看出,在“192.168.60.88”的22端口运行着SSH服务,对应的SSH版本为SSH-2.0-OpenSSH_6.6.1。
netstat命令
netstat命令用来显示本机网络连接、运行端口和路由表等信息。
-a 显示本机所有连接和监听端口
-n 以网络IP地址的形式显示当前建立的有效连接和端口
-r 显示路由表信息
-s 显示按协议的统计信息。默认地,将显示IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP和UDPv6的统计信息
-v 显示当前的有效连接,与“-n”选项类似
-t 显示所有的TCP协议连接情况
-u 显示所有的UDP协议连接情况
-i 显示自动配置接口的状态
-l 仅显示连接状态为“LISTEN”的服务的网络状态
-p 显示连接对应的PID与Program name。
常见应用组合: netstat -antlp、netstat -i、netstat -r
四、磁盘管理命令
df命令
功能说明 df命令用来检查Linux系统的磁盘空间占用情况。其格式如下: df [选项]
选项含义
-h 以容易理解的格式输出文件系统分区占用情况,例如32kB、120MB、60GB
-k 以kB大小为单位输出文件系统分区占用情况
-m 以MB大小为单位输出文件系统分区占用情况
-i 列出文件系统分区的inodes信息 -T 显示磁盘分区的文件系统类型
常用组合 df -h 、df -i、 df -T //大家可以根据自己的需要进行匹配
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 9.8G 3.9G 5.4G 42% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.6M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda5 2.0G 33M 2.0G 2% /home
/dev/sda6 3.0G 33M 3.0G 2% /data
/dev/sda1 2.0G 128M 1.9G 7% /boot
tmpfs 98M 0 98M 0% /run/user/0
[root@localhost ~]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda2 655360 90056 565304 14% /
devtmpfs 121702 399 121303 1% /dev
tmpfs 124490 1 124489 1% /dev/shm
tmpfs 124490 730 123760 1% /run
tmpfs 124490 16 124474 1% /sys/fs/cgroup
/dev/sda5 1048576 11 1048565 1% /home
/dev/sda6 1571328 3 1571325 1% /data
/dev/sda1 1048576 326 1048250 1% /boot
tmpfs 124490 1 124489 1% /run/user/0
[root@localhost ~]# df -T
文件系统 类型 1K-块 已用 可用 已用% 挂载点
/dev/sda2 ext3 10190136 4050880 5614968 42% /
devtmpfs devtmpfs 486808 0 486808 0% /dev
tmpfs tmpfs 497960 0 497960 0% /dev/shm
tmpfs tmpfs 497960 7780 490180 2% /run
tmpfs tmpfs 497960 0 497960 0% /sys/fs/cgroup
/dev/sda5 xfs 2086912 33048 2053864 2% /home
/dev/sda6 xfs 3132416 32992 3099424 2% /data
/dev/sda1 xfs 2086912 130180 1956732 7% /boot
tmpfs tmpfs 99596 0 99596 0% /run/user/0
du命令
du命令用来显示文件或目录所占用的磁盘空间情况。其格式如下: du [选项] 文件或目录
-sh 以人性化的格式显示文件或者目录大小,例如300MB、1.2GB等
-ks 以MB为单位显示文件或者目录大小
常用命令组合
du -sh /usr/*
du -ks ./*|sort -n //排序的方式列出
[root@localhost ~]# du -sh /usr/*
340M /usr/bin
4.0K /usr/etc
4.0K /usr/games
28M /usr/include
471M /usr/lib
443M /usr/lib64
78M /usr/libexec
933M /usr/local
446M /usr/sbin
385M /usr/share
74M /usr/src
0 /usr/tmp
[root@localhost ~]# du -sh /usr/* |sort -n
0 /usr/tmp
4.0K /usr/etc
4.0K /usr/games
28M /usr/include
74M /usr/src
78M /usr/libexec
340M /usr/bin
385M /usr/share
443M /usr/lib64
446M /usr/sbin
471M /usr/lib
933M /usr/local
fsck命令
用来检查文件系统并尝试修复错误。其格式如下: fsck [-t <文件系统类型>] [设备名]
-t <文件系统类型>”是指定要检查的文件系统类型。一般情况下可不添加此选项。 注意:在执行fsck命令修复某个文件系统时,这个文件系统对应的磁盘分区一定要处于卸载状态,磁盘分区在挂载状态下进行修复是极为不安全的,数据可能遭到破坏,也有可能损坏磁盘。
使用方法: [root@localhost /]# fsck -y /dev/sda10
添加-y选项后,如果出现需要手动确认修复的,将自动输入yes进行修复。文件系统结构遭到破坏时,推荐使用y选项,让命令自动修复.
mount/umount命令
挂载以及卸载指定的文件系统。
格式:mount [选项] [-L<标签>] [-o<选项>] [-t<文件系统类型>] [设备名] [挂载点]
格式:umount [ 挂载点 ] //卸载文件系统命令
选项:
-r 以只读方式加载设备
-w 以可读写模式加载设备,属于mount默认设置
-a 加载文件/etc/fstab中指定的所有设备
-L<标签>:标签其实就是磁盘分区标识的别名,标签可以随便起名,这样便于记忆,在Linux下磁盘分区的设备名比较难记,利用标签代替设备名,简单易记。
-o<选项>:指定加载文件系统时的选项,
ro:以只读模式加载。
rw:以可读写模式加载。
-t<文件系统类型>:指定设备的文件系统类型,常见文件系统类型有xfs/ext4/ext3/ext2/vfat/nfs等。
设备名:硬盘分区在Linux上的设备标识,类似于/dev/sda1、/dev/hda2等。
挂载点:Linux系统下指定的某个目录。 即在挂载文件系统时我们先需要创建挂载点目录进行挂载
举例:
mount -t ext4 /dev/sdb6 /data1
五、权限与访问控制命令
chmod命令
改变文件的访问权限 ,格式:chmod [who] [+ | - | =] [mode] 文件名
使用chmod命令改变指定文件访问权限有两种方式:
一种是用符号标记所进行更改
--u 文件的所有者
--g 与文件所有者同组的用户
--o 其他组的用户
--a 所有用户
-- 操作符'+'使得用户选择的权限被追加到每个指定文件,(操作给指定文件添加所选权限)
-- 操作符'-'使得这些权限被撤消
-- 操作符'='使得指定文件只具有这些权限。
举例:
chmod a+r file1 给文件file1所有人都可以读的权限
另一种方式是采用8进制数指定新的访问权限。在实际过程中,通常使用该方法来赋予文件权限
数字模式是一到4个八进制数,每个数由位权为4,2,1的3位叠加而得. 被省略掉的数字缺省设置为零.
第一位为4时为suid,2时为sgid,1时为粘滞位,.
第二位设置文件所有者的权限:可读(4),可写(2),可执行(1);
第三位设置了文件所在组其他用户的权限,值如上;
第四位设置了其他组的用户的权限,值同上.
举例:chmod 774 file1 // 给文件file1赋上属主、属组读写执行的权限,其它人读和执行的权限
注意:如果是目标文件是目录的话需要加上-R表示递归赋予该目录下的所有文件的权限
chown命令
修改文件所有者和组别
格式:chown [选项]... [所有者][:[组]] 文件...
chown 修改每个由第一个非选项参数声明的给定 file(文件) 的用户和/或组的所有权.如下: 如果只给出了用户名(或者数字用户标识),那么该用户即成为每个指定文件的所有者,而该文件的组别并不改变.如果用户名后面紧跟着冒号和组名(或者是数字组标识),并且它们之间没有空格,那么文件的组所有权也随之改变.
主要参数:
-R 递归地修改目录及其下面内容的所有权.
-c, --changes 详尽地描述每个 file 实际改变了哪些所有权.
-f, --silent, --quiet 不打印文件所有权不能修改的报错信息.
-h, --no-dereference 只作用于其本身的符号链接,而不修改它们所指向的文件. 这只在提供了 lchown 系统调用的情况下才可用.
-v, --verbose 详尽地描述对每个 file 所执行的操作(或者无操作).
-R, --recursive 递归地修改目录及其下面内容的所有权.
--dereference 修改符号链接目标端的所有权,而非符号链接自身. (fileutils 4.0中实现的新功能.)
--reference=rfile (fileutils 4.0中实现的新功能.) 修改 file 的所有权为 rfile 的所有权.举例:
chown -R user1:user1 test //递归将test目录下的文件属主和属组修改成user1
chown -R user1 test //递归将test目录下的文件属主修改成user1
chown -R :user1 test //递归将test目录下的文件属组修改成user1
chattr命令
修改文件在Linux第二扩展文件系统(E2fs)上的特有属性
符号模式有+-=几种格式.-- `+'用来在文件已有属性的基础上增加选定的属性;
-- `-'用来去掉文件上的选定的属性;
-- `='用来指定该文件的唯一属性.
选项:
-R 递归地修改目录以及其下内容的属性. 如果在递归目录时遇到了符号链接,遍历将跳过.
-V 详尽地给出chattr的输出信息并打印出程序的版本.
-v version 设置文件系统的版本.详解:注意:设置了以下的权限,连root用户都无法改变,如果需要改变则需要先取消相应的权限才能操作(查看可以用lsattr命令)
-- 当修改设置了'A'属性的文件时,它的atime记录不会改变. 这可以在笔记本电脑系统中避免某些磁盘I/O处理.
-- 设置了`a'属性的文件只能在添加模式下打开用于写入. 只有超级用户可以设置或清除该属性.-- 设置了`c'属性的文件在磁盘上由内核自动进行压缩处理. 从该文件读取时返回的是未压缩的数据. 对该文件的一次写入会在保存它们到磁盘之前进行数据压缩.
-- 设置了`d'属性的文件不能对其运行 dump(8) 程序进行备份.
-- 设置了`i'属性的文件不能进行修改:你既不能删除它, 也不能给它重新命名,你不能对该文件创建链接, 而且也不能对该文件写入任何数据. 只有超级用户可以设置或清除该属性.
-- 当删除设置了`s'属性的文件时,将对其数据块清零并写回到磁盘上.
-- 当修改设置了`S'属性的文件时, 修改会同步写入到磁盘上;这与应用到文件子系统上的`sync'挂载选项有相同的效果.
-- 当删除设置了`u'属性的文件时, 将会保存其内容. 这使得用户可以请求恢复被删除的文件.
举例:
lsattr命令
显示文件在Linux第二扩展文件系统上的特有属性 ;格式:lsattr [ -RVadv ] [ files... ]
-R 递归地列出目录以及其下内容的属性.
-V 显示程序版本.
-a 列出目录中的所有文件,包括以`.'开头的文件的属性.
-d 以列出其它文件的方式那样列出目录的属性, 而不列出其下的内容.
-v 显示文件版本.
getfacl命令
获取文件访问控制列表
格式: getfacl [-aceEsRLPtpndvh] 文件 ...
-a, --access 仅显示文件访问控制列表
-d, --default 仅显示默认的访问控制列表
-c, --omit-header 不显示注释表头
-e, --all-effective 显示所有的有效权限
-E, --no-effective 显示无效权限
-s, --skip-base 跳过只有基条目(base entries)的文件
-R, --recursive 递归显示子目录
-L, --logical 逻辑遍历(跟随符号链接)
-P, --physical 物理遍历(不跟随符号链接)
-t, --tabular 使用制表符分隔的输出格式
-n, --numeric 显示数字的用户/组标识
-p, --absolute-names 不去除路径前的 '/' 符号
-v, --version 显示版本并退出
-h, --help 显示本帮助信息
setfacl命令
设定文件访问控制列表
格式: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m, --modify=acl 更改文件的访问控制列表
-M, --modify-file=file 从文件读取访问控制列表条目更改
-x, --remove=acl 根据文件中访问控制列表移除条目
-X, --remove-file=file 从文件读取访问控制列表条目并删除
-b, --remove-all 删除所有扩展访问控制列表条目
-k, --remove-default 移除默认访问控制列表
--set=acl 设定替换当前的文件访问控制列表
--set-file=file 从文件中读取访问控制列表条目设定
--mask 重新计算有效权限掩码
-n, --no-mask 不重新计算有效权限掩码
-d, --default 应用到默认访问控制列表的操作
-R, --recursive 递归操作子目录
-L, --logical 依照系统逻辑,跟随符号链接
-P, --physical 依照自然逻辑,不跟随符号链接
--restore=file 恢复访问控制列表,和“getfacl -R”作用相反
--test 测试模式,并不真正修改访问控制列表属性
-v, --version 显示版本并退出
-h, --help 显示本帮助信息
六、文件管理命令
rm命令
功能说明:
rm命令用来删除某个目录及其下的所有文件及子目录。注意:对于链接文件而言,只是断开了链接,原文件保持不变。其格式如下:rm [选项] 文件或者目录
-r 告诉rm将选项中列出的全部目录以及子目录还有文件均递归地删除,如果在选项中不指定“-r”选项,“rm”命令将不能删除目录:需要使用rmdir命令,但该命令不能删除空目录
-f 忽略不存在的问题,也不给出提示;即强制输出,需谨慎使用
-i 交互式删除,即在删除前进行确认
注意:使用rm命令要特别小心,“rm –rf”组合要甚用,因为一旦文件被删除,就不能被恢复。Linux没有类似于Windows的回收站。因此,为了防止文件或者目录被误删除,可以使用rm的“-i”选项,来逐个确认要删除的文件。使用“-i”选项时,如果用户输入“y”,文件将被删除;如果输入其他任何信息,文件则不被删除。
删除数据前,一定要备份数据,以免误删除。
ln命令
功能说明:
ln命令用来在文件或目录之间创建链接。
Linux下的链接有两种,一种是硬链接(Hard Link),一种是符号链接(Symbolic Link),默认情况下ln命令产生的是硬链接。
硬链接:是指通过文件的索引节点来进行链接。
符号链接:也叫软链接,软链接类似于Windows中的快捷方式,因此软链接是一个指向真正的文件或者目录位置的符号连接。
ln命令的格式如下:
ln [选项] 源文件 目标链接名
-s 进行软链接(Symbolic Link)
举例:
[root@mylinux ~]#ln /etc/hosts /opt/backup
[root@mylinux ~]# ln -s /etc/inittab /opt
cp命令
功能说明:
cp命令用来将给出的文件或者目录拷贝到另一个文件或者目录中。cp与Windows下的copy命令类似,但是cp命令更加强大。其格式如下:cp [选项] 源文件或目录 目标文件或目录
-a 在拷贝目录时使用。它保留所有的信息,包含文件链接、文件属性,并递归地拷贝目录
-r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名
-p 保留文件的修改时间和存取权限
-i 如果已经有相同文件名的目标文件,则提示用户是否覆盖,注意:在实际过程中需要注意覆盖的问题
[root@mylinux~]# cp –r ./* /tmp
[root@mylinux~]# \cp –r /home/iivey/* /opt/linux
find命令
功能说明
find命令用来在指定的路径下查找指定的文件。其格式如下:
find path-name [ -options] [-print –exec -ok 命令 {} \; ]
具体的选项说明如下。
path-name:find命令查找的目录路径,例如可以用“.”表示当前目录,用“/”表示系统根目录。
-options:find命令的这个选项主要用来控制搜索的方式。
-print:将搜索结果输出到标准输出。
-exec:对搜索出符合条件的文件执行所给出的Linux命令,而不询问用户是否需要执行该命令。{}表示shell命令的选项即为所查找到的文件。命令的末尾必须以“;”结束。
注意:格式要正确,“-exec 命令 {} \;”,在}和\之间一定要有空格才行。
-ok:对搜索出符合条件的文件执行所给出的Linux命令。与-exec不同的是,它会询问用户是否需要执行该命令。
举例:
查找系统中所有大小为0的普通文件,并列出它们的完整路径。
find / -type f -size 0 -exec ls -al {} \;
查找系统/var/logs目录中修改时间在7天以前的普通文件,然后以交互方式删除。
find /var/log -type f -mtime +7 -ok rm {} \;
在系统根目录下,查找文件类型为普通文件,属于ixdba用户的,并且查找时不包含/usr/bin目录的文件名为iptables.sh的文件,并将结果输出到屏幕。
find / -path "/usr/bin" -prune -o -name "iptables.sh" -user ixdba -type f -print
在系统根目录下查找不在/var/log和/usr/bin目录下的文件名为main.c的文件。
find / \( -path /var/log -o -path /usr/bin \) -prune -o -name “main.c” -print
file与stat命令
file命令用来显示文件的类型。对于长度为0的文件,将识别为空文件;对于符号连接文件,缺省情况下将显示符号连接引用的真实文件路径。
举例:
显示/bin/sh文件类型,显示结果为符号链接文件
[root@WEBServer bin]# file /bin/sh
/bin/sh: symbolic link to `bash'
显示/opt/file1.txt文件类型,显示结果为ASCII文本文件。
[root@WEBServer opt]# file file1.txt
file1.txt: ASCII text
显示/dev/sda1文件类型,显示结果为块设备文件。
[root@localhost ~]# file /dev/sda1
/dev/sda1: block special (8/1)
更详细的查看文件状态信息:
[root@localhost ~]# stat iptables.sh
grep命令
grep命令是Linux下的文本过滤工具,grep根据指定的字符串,对文件的每一行进行搜索,如果找到了这个字符串,就输出该行的内容。其格式如下:
grep [选项] 需要查找的字符串 文件名
grep命令的选项有很多,这里列出最常使用的选项说明:
-c 只显示符合条件的行数,而不是显示被匹配到的内容。
-i 搜索时忽略大小写
-n 在显示的搜索结果上显示行号
-E 支持扩展的正则表达式
-w 被匹配的文本只能是单词,而不能是单词中的某一部分。
-v : 反过来(invert),只打印没有匹配的,而匹配的反而不打印。
举例:
[root@localhost ~]# grep -ni network anaconda-ks.cfg
grep命令
grep家族总共有三个:grep,egrep,fgrep。
grep:标准grep命令,支持基本正则表达式
egrep:扩展grep命令,支持基本和扩展正则表达式,等价于grep –E
fgrep:快速grep命令,不支持正则表达式,按照字符串的字面意思进行匹配,等价于grep –F
diff命令
diff命令用来比较文件的差异。diff以逐行的方式比较文本文件的异同,其格式如下:
diff [选项] 文件1 文件2
上面的命令执行后,会将比较后的不同之处以指定的形式列出,如下所示:
n1 a n3,n4
n1,n2 d n3
n1,n2 c n3,n4
其中,字母"a"、"d"、"c"分别表示添加、删除及修改操作。而"n1"、"n2"表示在文件1中的行号,"n3"、"n4"表示在文件2中的行号。
在输出形式中,每一行后面将跟随受到影响的若干行。其中,以<开始的行属于文件1,以>开始的行属于文件2。
mv命令
mv命令用来将文件或目录改名或将文件由一个目录移入另一个目录中。如果源类型和目标类型都是文件或者目录时,mv将进行目录重命名。如果源类型为文件,而目标类型为目录时,mv将进行文件的移动。如果源类型为目录,则目标类型只能是目录,不能是文件,此时完成目录重命名。
其格式如下:mv [选项] 源文件或目录 目标文件或目录
mv命令的选项及其说明:
-i 交互式操作,对已经存在的文件或目录覆盖时,系统会询问是否覆盖,用户输入“y”进行覆盖,输入“n”则不覆盖
-f force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-b 若需覆盖文件,则覆盖前先行备份。
more命令
如果一个文本文件比较长,一屏无法显示完毕,就需要使用more命令。more命令读取文本文件时,每次一屏显示,并且在每屏后暂停,同时在屏幕底部显示单词“More”。如果此时按“Enter”键,more命令就会接着再显示文本的一行,依此类推;如果按空格键,more命令就继续显示文本文件的另一屏信息。其格式如下:
more [选项] 文件名
cat命令
cat命令用来将文件的内容打印到标准输出,类似于DOS下的type命令,同时cat还可以用于连接合并文件。其格式如下: cat [选项] 文件名
举例:
cat 文件1 文件2 > 文件3 //把文件1、文件2合并到文件3
touch命令
touch命令用来改变指定文件的访问时间和修改时间,若指定文件不存在则创建此文件。如果没有指定时间,则使用当前时间。其格式如下:
touch [选项] 设定的时间 文件
七、压缩与解压命令
zip/unzip命令
将一般的文件或者目录进行压缩或者解压,默认生成以“.zip”为后缀的压缩包。zip命令类似于Windows中的winzip压缩程序。
其格式如下: zip [选项] 压缩文件名 需要压缩的文档列表
unzip [选项] 压缩文件名
-r 递归压缩,将指定目录下的所有文件以及子目录全部压缩
-d 从压缩文件内删除指定的文件
-x “文件列表” 压缩时排除文件列表中指定的文件
-u 更新文件到压缩文件中
gzip/gunzip命令
将一般的文件进行压缩或者解压。压缩文件预设的扩展名为“.gz”,其实gunzip就是gzip的硬链接,因此无论是压缩或者解压都可以通过gzip来实现。
注意:gzip只能对文件进行压缩,不能压缩目录,即使指定压缩的目录,也只能压缩目录内的所有文件。
格式如下: gzip [选项] 压缩(解压缩)的文档名
-d 对压缩的文件进行解压
-t 检查压缩文档的完整性
-l 显示压缩文件的压缩信息,显示字段为压缩文档大小、未压缩文档大小、压缩比和未压缩文档名称
举例:
[root@localhost ~]# gzip etc.log
[root@localhost ~]# gzip -l anaconda-ks.cfg
compressed uncompressed ratio uncompressed_name
708 1230 45.2% anaconda-ks.cfg
bzip2/bunzip2命令
对文件进行压缩与解压缩。此命令类似于“gzip/gunzip”命令,只能对文件进行压缩。对于目录只能压缩目录下的所有文件,压缩完成后,在目录下生成以“.bz2”为后缀的压缩包。bunzip2其实是bzip2的符号链接,即软链接,因此压缩解压都可以通过bzip2实现。
其格式如下: bzip2 [选项] 要压缩或解压的文件
-d 执行解压缩,此时选项后面跟要解压缩的文件
-k bzip2在压缩或解压缩后,会删除原始的文件,若要保留原始文件,可使用此选项
-t 测试“.bz2”压缩文件的完整性
tar命令
tar是Linux下经常使用的归档工具,是对文件或者目录进行打包归档,归成一个文件,但是并不进行压缩。其格式如下: tar [主选项+辅助选项] 文件或者目录
tar命令主选项
-c 创建新的文件
-t 列出档案文件中已经归档的文件列表
-x 从打包的档案文件中还原出文件
-z 调用gzip命令在文件打包的过程中进行压缩/解压文件
-j 调用bzip2命令在文件打包的过程中进行压缩/解压文件
-f “-f”选项后面紧跟档案文件的存储设备,默认是磁盘,需要指定档案文件名;如果是磁带,只需指定磁带设备名即可。注意,在“-f”选项之后不能再跟任何其他选项,也就是说“-f”必须是tar命令的最后一个选项
-v 指定在创建归档文件过程中,显示各个归档文件的名称
-p 在文件归档的过程中,保持文件的属性不发生变化
--exclude file 在打包过程中,不将指定file文件打包
举例:
常用压缩方法:
[root@localhost ~]#tar -cvf etc.tar /etc
[root@localhost ~]#tar -zcvf etc.tar.gz /etc
[root@localhost ~]#tar -jcvf etc.tar.bz2 /etc
查阅上面/opt/etc.tar.gz压缩包的内容:
[root@localhost ~]# tar -ztvf etc.tar.gz
[root@localhost ~]# tar -jtvf etc.tar.bz2
将~/etc.tar.gz解压到/usr/local/src下。
[root@localhost ~]# cd /usr/local/src
[root@localhost ~]# tar -zxvf ~/etc.tar.gz
或者
[root@localhost ~]# tar zxvf ~/etc.tar.gz -C /usr/local/src
将/etc目录下的所有文件打包备份到/opt目录下,并保存每个文件的权限。
[root@dbbackup oracle]#tar -zcvpf /opt/etc.tar.gz /etc
在/opt目录下,仅解开/opt/etc.tar.gz压缩文件中的/etc/inittab文件。
[root@dbbackup oracle]# cd /opt
[root@dbbackup opt]#tar -zxvf /opt/etc.tar.gz etc/inittab
或者
[root@dbbackup opt]#tar -zxvf /opt/etc.tar.gz -C /opt etc/inittab
将/etc目录打包压缩后直接解压到/opt目录下,而不生成打包的档案文件。
[root@dbbackup oracle]#cd /opt
[root@dbbackup opt]#tar -zcvf - /etc | tar -zxvf -
或者
[root@dbbackup opt]#tar -zcvf - /etc | tar –zxvf - -C /opt