阅读视图

发现新文章,点击刷新页面。

Linux 系统监控利器 ctop 命令详解

在 Linux 系统,尤其是当我们在管理多个容器时,了解系统和容器的资源使用情况至关重要。今天,就给大家介绍一款强大的监控工具 ctop,本文详细介绍 ctop 的安装、使用、命令选项。

ctop 命令的简介

ctop 是一个类似 top 命令的界面工具,它专注于容器环境,能够实时监控 Docker/Podman 等容器运行时的性能指标,如 CPU、内存、网络、磁盘 I/O 等使用情况。

它以一种直观的方式展示各个容器的详细信息,让管理员可以迅速掌握系统整体健康状况,并且快速定位到可能存在性能瓶颈的容器。

与传统 top 命令相比,ctop 提供更丰富的容器相关数据和更便捷的交互方式。

它不仅能展示容器的基本资源使用率,还能深入到每个容器的进程级别,查看内部运行具体进程,这对于深入分析容器性能表现非常有帮助。

ctop 命令的安装

  1. Linux 系统的安装方法「以 Ubuntu 为例」
1
2
sudo wget https://github.com/bcicen/ctop/releases/download/v0.7.7/ctop-0.7.7-linux-amd64 -O /usr/local/bin/ctop
sudo chmod +x /usr/local/bin/ctop

注意:可以直接从 Github 下载最新版本的二进制文件进行安装,以上是具体的步骤「这里以 v0.7.7 版本为例」最后,用命令 ctop -v 验证是否安装成功,若可以正确显示版本号,说明安装成功。

  1. 通过 Docker 的方法安装
1
docker run --rm -it --name=ctop -v /var/run/docker.sock:/var/run/docker.sock quay.io/vektorlab/ctop:latest

注意:也可以使用 Docker 快速启动 ctop 容器来进行监控。

ctop 命令的使用

  1. 基本使用

在终端中输入 ctop 命令后回车,即可启动 ctop 程序进入主界面。在界面中,会显示出所有正在运行的容器及其资源使用情况的概览,包括容器名称、CPU 使用率、内存使用量及限制、网络收发速率、磁盘读写速率、进程数等信息。

可以通过方向键上下移动光标来选择不同容器,然后按下回车键可以查看到所选容器详细信息,如容器的创建时间、各资源的详细使用数据以及内部运行的进程列表等。

  1. 命令选项

命令选项列表如下:

选项描述
ctop -a只查看正在运行中容器,方便专注那些实际处于活动状态、可能对系统资源产生影响的容器。
ctop -f string查看包含指定字符串的容器,当系统中有大量容器时,利用此选项可快速过滤出我们关心的特定容器进行监控。
ctop -i反转默认颜色,如默认的颜色显示效果不佳,或需要与其它界面风格保持一致,可使用该选项来改变界面的颜色显示。
ctop -r反向容器排列顺序,默认情况下存活的容器在前,使用此选项可将其顺序反转,以便按照不同顺序查看容器。
ctop -s string按照指定字段排序,如执行 ctop -s net 可以按照网络使用率对容器进行排序,从而快速找到网络流量较高容器。

交互操作

交互操作列表如下:

操作描述
h打开帮助,在使用过程中如果忘记了某些快捷键的功能或者想了解更多操作方法,可以随时按下 h 键查看帮助信息。
s打开排序,通过此快捷键可以方便地切换不同的排序字段,无需重新输入命令选项。
q退出打开的对话框,当查看完帮助信息或排序设置后,按下 q 键可以退出相应的对话框,返回到主界面。
a只显示正在运行的容器,与 ctop -a 命令效果一致,但在已经启动了 ctop 程序的情况下,使用快捷键可更快速地切换显示模式。
r反转排序,正在运行容器放在末尾,方便在不同的排序需求之间快速切换。
f输入指定字符串过滤出想要查看容器,与 ctop -f string 命令类似,无需重新输入命令,直接在当前界面中进行过滤操作。
j用于向下移动光标,方便在容器列表中快速定位到不同的容器。
k用于向上移动光标,方便在容器列表中快速定位到不同的容器。
Enter查看指定容器详细指标,当光标定位到某个容器,按下回车键即可进入该容器详细信息界面,查看更全面的资源使用以及进程信息。

BASH: 如何使用 cURL 命令获取 HTTP 响应代码?


检查运行 curl命令 后的HTTP响应代码,您可以使用 curl 的 -w` 选项,这样可以指定自定义输出格式。以下是命令:

curl -o /dev/null -s -w "%{http_code}\n" <URL> 

您可以将HTTP响应代码保存到BASH变量中,如下所示:

resp=$(curl -o /dev/null -s -w "%{http_code}\n" <URL>) 

解释:

  • -o /dev/null: 丢弃响应体的输出。
  • -s: 以静默模式运行curl(不显示进度或错误信息)。
  • -w “%{http_code}\n”: 仅输出HTTP响应代码。

将 <url> 替换为您正在检查的实际URL。

如何获取HTTP响应代码和输出?

如果您想同时获取HTTP输出,您需要使用 `-o` 来重定向输出。例如:

resp=$(curl -s -w "%{http_code}" -o /tmp/curl_output.txt <URL>) 

然后,BASH 变量 $resp 包含HTTP响应代码,而文件 /tmp/curl_output.txt 则会保存请求的输出文本。

BASH小技巧

英文:How to Get HTTP Response Code using cURL Command?

本文一共 176 个汉字, 你数一下对不对.
BASH: 如何使用 cURL 命令获取 HTTP 响应代码?. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c BASH: 如何使用 cURL 命令获取 HTTP 响应代码? BASH BASH LINUX 小技巧
The post BASH: 如何使用 cURL 命令获取 HTTP 响应代码? first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. WordPress 最简单的过滤垃圾评论的方法 WordPress 很多垃圾评论都是由程序直接调用访问 wp_comments.php 造成的. 所以我们可以在 functions.php 文件里加入以下代码 新增一个过滤 简单的检查是否是直接调用. 1 2 3 4 5 6...
  2. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  3. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  4. 测测你的幸运 – Linux Fortune-Teller LINUX 下有很好很好玩的命令,之前已经介绍过: figlet, rig, curl. 现在推荐另一个 命令 fortune 是用来随机显示一段(句)话的.fortune 在英文里就是幸运的意思. 这个命令可以不需要 参数 如果没有 可以通过 apt-get...
  5. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  6. 比特币钱包线上和线下有啥区别? 我玩比特币比较晚, 最近1比特币能到1900多英镑, 真是吓人. 之前有一个线下的比特币钱包, 最近又在 CoinBase 开了一个线上的比特币钱包. 线上和线下的比特币钱包都是一长串的字母数字组合, 很像随机字符串 比如: 1J88t5UAgKBHhMgzkyH9bpY5mPdCYAe5XQ 这个明显是唯一的, 可以在 BlockChain 上查到所有交易记录和余额:...
  7. LOGO 海龟作画 系列 一 之 给孩子最好的编程启蒙语言 – Logo Turtle Graphics – Series 1 – Best Introductory Programming for Kids I think the LOGO turtle graphic is the best introductory programming language for the kids....
  8. 比特币最近波动有点大: 一天牛市一天熊 比特币10万美金以内都是最后上车的机会! 比特币近期的价格波动可以归因于多个关键因素,包括地缘政治动态、监管变化以及加密行业内的重大安全事件。其中一个主要影响因素是美国前总统唐纳德·特朗普对乌克兰和加密货币监管的立场变化。据报道,特朗普再次当选,他可能会推动减少美国对乌克兰的支持,这可能会影响全球金融市场和风险偏好。同时,特朗普正在将自己塑造为亲加密货币的候选人,表示有意让美国成为一个更加友好的加密货币环境。这一立场引发了市场对监管政策可能发生变化的猜测,导致市场情绪在乐观和不确定性之间波动。 特朗普对俄乌战争的态度 美国第43届总统唐纳德·特朗普已经在2025年1月当选并正式上任(第二次),那么他的政策可能会对比特币价格的波动产生更加直接和显著的影响。他政府对乌克兰和加密货币监管的立场已经不再是猜测,而是正在实际塑造市场的关键力量。 特朗普(Donald Trump)减少美国对乌克兰的支持,全球投资者可能会预期地缘政治稳定性发生变化,从而增加对比特币作为避险资产的需求。同时,他的亲加密货币立场可能正在推动市场的乐观情绪。如果他的政府推出有利于加密行业的监管政策,例如明确的合规指南或减少监管审查,可能会吸引更多机构投资者进入市场,并促进更广泛的加密货币采用。然而,政策的快速变化也可能导致短期市场剧烈波动,因为市场需要时间来消化新的政策动向。 朝鲜黑客盗取Bybit交易所15亿美元的ETH 另一个显著影响比特币价格的事件是近期涉及朝鲜黑客组织“Lazarus”的15亿美元以太坊被盗案件。据报道,Bybit交易所(全球第二)这些被盗的ETH已经被清洗,此次大规模黑客攻击引发了人们对加密行业安全性的担忧。此类安全事件不仅会削弱投资者信心,还可能引发更严格的监管审查,导致短期市场动荡。此外,被盗资金的大规模流动和出售可能对市场流动性造成冲击,进一步加大价格波动。随着这些事件的持续发酵,比特币价格正受到政治决策、监管预期以及安全挑战等多重因素的影响。 与此同时,与朝鲜黑客组织 Lazarus 相关的 15 亿美元以太坊被盗事件仍在影响加密市场。由于这些被盗 ETH 已被清洗,人们对加密行业安全漏洞的担忧持续存在,同时也可能引发更严格的监管审查。政治、监管和安全等多重因素交织在一起,共同导致了比特币近期的剧烈价格波动。...

sort 的用法

sort 命令在 Linux 里非常有用,它将文本数据进行排序,并将排序结果标准输出。sort 命令既可以从特定的文件,也可以从 stdin 中获取数据。

字典排序

1
$ cat /etc/passwd | sort

反转排序

1
$ cat /etc/passwd | sort -r

特定排序

1
$ cat /etc/passwd | sort -t ':' -k 3

数值排序

1
$ cat /etc/passwd | sort -t ':' -k 3 -n

cut 的用法

cut 是一个选取命令,就是将一段数据经过分析取出我们想要的。一般来说,选取的信息通常是按行来进行分析的。cut 命令从文件的每一行剪切字节、字符和字段将这些字节、字符和字段输送到标准输出。

常用参数

参数作用
-b以字节为单位进行分割
-c以字符为单位进行分割
-d自定义分隔符,默认为制表符
-f与 -d 一起使用,指定显示哪个区域

举个例子

1
2
3
4
penn:~/ $ head -n 3 /etc/passwd | cut -d : -f 1,6 
root:/root
daemon:/usr/sbin
bin:/bin

前五个含

1
$ cut /etc/passwd -c -5

第五个后

1
$ cut /etc/passwd -c 5-

只有第五

1
$ cut /etc/passwd -c 5

二到五间

1
$ cut /etc/passwd -c 2-5

推荐值得收藏 34 个命令总结

例行维护、问题排查等是运维工程师的日常工作,杜老师收集了 30 个常用命令,推荐给会使用到的小伙伴们,如果您有更多的好用命令欢迎分享给我们!

删除文件

1
find -type f -size 0 -exec rm -rf {} \;

注意:删除 0 字节的文件。

查看进程

按内存使用率从大到小排列:

1
ps -e -o "%C : %p : %z : %a" | sort -k5 -nr

按 CPU 从大到小排列:

1
ps -e -o "%C : %p : %z : %a" | sort -nr

输出信息

1
grep -r -a jpg /data/cache/* | strings | grep "http:" | awk -F 'http:' '{print "http:"$2;}'

注意:打印 cache 里的 URL。

查看连接状态

1
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

注意:查看 http 的并发请求数及其 TCP 连接状态。

替换

1
sed -i '/Root/s/no/yes/' /etc/ssh/sshd_config 

注意:sed 在这个文里 Root 的一行,匹配 Root 行,将 no 替换成 yes。

杀掉进程

1
ps aux | grep mysql | grep -v grep | awk '{print $2}' | xargs kill -9

注意:杀掉 MySQL 的进程。

显示服务

1
ls /etc/rc3.d/S* | cut -c 15-

注意:显示运行 3 级别开启的服务。

显示多个信息

1
2
3
4
5
cat << EOF
+-------------------------------------------+
| === Welcome to dusays.com === |
+-------------------------------------------+
EOF

注意:用 EOF 在编写 Shell 显示多个信息。

for 的巧用

1
2
3
4
5
cd /usr/local/mysql/bin
for i in *
do
ln /usr/local/mysql/bin/$i /usr/bin/$i
done

注意:给 MySQL 建软链接。

取 IP 地址

1
2
ifconfig eth0 | grep "inet addr:" | awk '{print $2}' | cut -c 6-

注意:或 ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'

内存大小

1
free -m | grep "Mem" | awk '{print $2}'

注意:截取内存大小数据。

查看端口

1
netstat -ant | grep ":80" | grep ESTABLISHED | awk '{printf "%s %s\n",$5,$6}' | sort

注意:查看 80 端口的连接信息。

统计文件大小

1
find / -name *.jpg -exec wc -c {} \; | awk '{print $1}' | awk '{a+=$1} END {print a}'

注意:统计服务器下面所有 jpg 文件的大小。

CPU 的负载

检查前三个输出值是否超过系统逻辑 CPU 的 4 倍:

1
cat /proc/loadavg

检查 %idle 值是否过低:

1
mpstat 1 1

内存空间

1
free

注意:检查 free 值是否过低,也可用 cat /proc/meminfo

交换空间

1
vmstat 1 5

注意:观察 si 和 so 值是否较大。

磁盘空间

1
df -h

注意:检查是否有分区使用率过高,如发现某分区空间接近用尽,可进入该分区的挂载点,用 du -cks * | sort -rn | head -n 10 命令找出占用空间最多的文件或目录。

磁盘负载

1
iostat -x 1 2

注意:检查 I/O 使用率是否过高。

网络负载

1
sar -n DEV

注意:检查网络流量是否过高。

网络错误

1
netstat -i

注意:检查是否出现网络错误,也可用命令 cat /proc/net/dev

网络连接数目

1
netstat -an | grep -E "^(tcp)" | cut -c 68- | sort | uniq -c | sort -n

注意:查询网络连接数目。

进程总数

1
ps aux | wc -l

注意:检查进程个数是否正常。

可运行的进程数目

1
vmwtat 1 5

注意:列出的是可运行进程的数目,检查是否超过系统逻辑 CPU 的 4 倍。

进程

1
top -id 1

注意:观察是否有异常的进程出现。

用户

1
who | wc -l

注意:检查登录用户是否过多「比如超过 50 个」也可用命令 uptime

系统日志

检查是否有异常的错误记录:

1
cat /var/log/rflogview/*errors

搜寻一些异常的关键字:

1
2
grep -i error /var/log/messages
grep -i fail /var/log/messages

核心日志

1
dmesg

注意:检查是否有异常的错误记录。

系统时间

1
date

注意:检查系统时间是否正确。

打开文件数目

1
lsof | wc -l

注意:检查打开文件总数是否过多。

杀掉进程

1
lsof -i :80 | grep -v ID | awk '{print "kill -9",$2}' | sh

注意:杀掉 80 端口相关的进程。

清除进程

1
ps -eal | awk '{if ($2 == "Z") {print $4}}' | kill -9

注意:清除僵尸进程。

分析数据

1
tcpdump -c 10000 -i eth0 -n dst port 80 > /root/pkts

注意:用 tcpdump 抓包,防止 80 端口被人攻击时可以分析数据。

检查 IP 重复数

1
less pkts | awk {'printf $3"\n"'} | cut -d. -f 1-4 | sort | uniq -c | awk {'printf $1" "$2"\n"'} | sort -n -t\ +0

注意:检查 IP 的重复数并从小到大排序。

查看活动进程

1
netstat -anp | grep php-cgi | grep ^tcp | wc -l

注意:查看有多少个活动的 php-cgi 进程。

ip -s link 输出内容的注解

ip 命令用来显示或操纵 Linux 主机的路由、网络设备、策略路由和隧道等,是 Linux 下比较新且功能强大的网络配置工具。下面对 ip -s link 输出的内容进行简单的注解。

命令截图

参数含义

参数含义
lo网卡名称
LOOPBACK环回地址
UP启用状态
LOWER_UP物理网卡处于启动状态
BROADCAST开启广播功能
MULTICAST开启多播功能
mtu 65535MTU 值
qdisc传输队列规则
noqueue没有规则限制
fq_codel流量队列控制延迟
state状态
UNKNOWN未知
mode DEFAULT group default qlen 1000默认模式
link/loopback网卡类型
00:00:00:00:00:00物理地址
brd广播地址
RX: bytes收到的数据量
packets通信的数据包
errors错误的数据包
dropped表示数据包已经进入 Ring Buffer,但由于内存不够等系统原因,导致在拷贝到内存过程中被丢弃。
overrun指被物理网卡丢弃
mcast多播包的数量
TX: bytes发送的数据量
carrier由于 carrier 错误而丢弃的数据包数量
collsns冲突信息包的数目

四命令玩转 Linux 进程管理

Linux 系统提供 who/w/ps 和 top 等查看进程信息的系统调用,通过结合使用这些系统调用,我们可以清晰地了解进程的运行状态以及存活情况,从而采取相应措施,来确保 Linux 系统安全。

系统介绍

Linux 是个多用户、多任务的操作系统。在这样系统中,各种计算机资源的分配和管理都以进程为单位。为了协调多个进程对这些共享资源的访问,操作系统要跟踪所有进程的活动,以及它们对系统资源的使用情况,从而实施对进程和资源动态管理。进程在一定条件下可以对如文件、数据库等客体进行操作。如果进程用作其他不法用途,将给系统带来重大危害。在现实生活中,许多网络黑客都是通过种植“木马”的办法来达到破坏计算机系统和入侵目的,这些“木马”程序无一例外的是需要通过进程这一方式在机器上运行才能发挥作用。另外,许多破坏程序和攻击手段都要通过破坏目标计算机系统的合法进程尤其是重要系统进程,使系统不能完成正常的工作甚至无法工作,从而达到摧毁目标计算机系统的目的。作为在服务器中占绝大多数市场份额的 Linux 系统,需要切实保证计算机系统的安全,我们需对其进程进行监控和保护。

Linux 操作系统包括如下三种不同类型的进程,每一种进程都有其自己的特点和属性:

  1. 交互进程,是由一个 Shell 启动的进程。交互进程既可以在前台运行,也可以在后台运行;
  2. 批量处理进程,这种进程和终端没联系,是个进程序列;
  3. 守护进程,在 Linux 系统启动时启动的进程,并在后台运行。

上述三种进程各有各的作用,使用场合有所不同。

下面介绍的是目前在 Linux 下使用得最常见的进程状况查看工具,它们是随 Linux 套件发行的,安装好系统后,用户就可使用。当然,随着开源不断发展,相信将会有更多的该方面的工具出现,以方便用户选择和使用。

效果演示

who 该命令主要用于查看当前在线上的用户情况。系统管理员可以使用 who 命令监视每个登录的用户此时此刻的所作所为:

w 该命令用于显示登录到系统的用户情况,但是与 who 不同的是,w 命令功能更强大,它不但可以显示有谁登录到系统,还可显示出这些用户当前正在进行的工作,w 命令是 who 命令一个增强版:

ps 最基本同时是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有无僵死、哪些进程占用了过多的资源等等。ps 命令可以监控后台进程的工作情况,因后台进程是不和屏幕键盘这些标准输入/输出设备进行通信,如需要检测其情况,可使用 ps 命令。下面是一个 ps 命令例子:

top 命令和 ps 命令的基本作用是相同的,显示系统当前的进程和其他状况;但是 top 是一个动态显示过程,可以通过用户按键来不断刷新当前的状态。如果在前台执行该命令,它将独占前台,直到用户终止程序为止。比较准确地说,top 命令提供了实时的对系统处理器的状态监视。将显示系统中 CPU 最“敏感”任务列表。该命令可按 CPU 使用、内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。下面是一个 top 命令的例子:

rpm 命令的使用

rpm 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则并且功能强大方便,因而广受欢迎。逐渐受到其它发行版的采用。rpm 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。

命令介绍

rpm 是以一种数据库记录的方式来将所需要的套件安装在 Linux 主机的一套管理程序。就是说 Linux 系统中存在一个关于 rpm 的数据库,它记录了安装的包与包之间的依赖相关性。rpm 包是预先在 Linux 主机编译好并打包的文件,安装起来非常快捷。

rpm 软件包也被成为二进制包,是因为其是已经编译好的软件包,其优点是管理系统简单,只通过几个命令就可以实现包的安装、升级、查询、卸载,安装速度比源码包安装要快的多;其缺点是经过编译,不可以看到源代码,功能的选择不如源码包灵活,且需要解决依赖性。

选项列表

选项列表如下:

选项作用
-a查询所有套件
-b设置包装套件的完成阶段并指定套件档的文件名称
-c列出组态配置文件,参数需配合-l 参数使用
-d列出文本文件,参数需配合-l 参数使用
-e删除指定套件
-f查询拥有指定文件套件
-h套件安装列出标记
-i显示套件相关信息
-i安装指定的套件档
-l显示套件文件列表
-p查询指定的套件档
-q使用询问模式,当遇到任何问题时,指令会先询问用户
-R显示套件的关联性信息
-s显示文件状态,参数需配合-l 参数使用
-U升级指定的套件档
-v显示指令执行过程
-vv详细显示指令执行过程,便于排错
-addsign在指定套件里加上新的签名认证
–allfiles安装所有文件
–allmatches删除符合指定套件所包含的文件
–badreloc当发生错误时,重新配置文件
–buildroot设置产生套件时欲当作根目录的目录
–changelog显示套件更改记录
–checksig检验该套件的签名认证
–clean完成套件的包装后,删除包装过程中建立的目录
–dbpath设置存放数据库的目录
–dump显示每个文件验证信息,参数需配合-l 参数使用
–excludedocs在安装套件时,不要安装文件
–excludepath忽略指定目录里的所有文件
–force强行置换套件或者文件
–ignorearch不验证套件档的结构正确性
–ignoreos不验证套件档的结构正确性
–ignoresize安装前不检查磁盘空间是否足够
–includedocs在安装套件时,一并安装文件
–initdb确认有正确的数据库可使用
–nodeps不验证套件档的相互关联性
–nofiles不验证文件的属性
–percent安装套件时显示完成百分比
–pipe建立管道,把输出结果转为该执行指令输入数据
–prefix如果重新配置文件,就把文件放到指定的目录下
–provides查询该套件所提供的兼容度
–querytags列出可用于档头格式的标签
–rcfile使用指定配置文件
–rebulid安装原始代码套件,重新产生二进制文件的套件
–rebuliddb以现有的数据库为主重建一份数据库
–relocate把本来会放到原目录下的文件放到新目录
–replacefiles强行置换文件
–replacepkgs强行置换套件
–requires查询该套件所需要的兼容度
–resing删除现有认证,重新产生签名认证
–rmsource完成套件的包装后,删除原始代码
–rmsource删除原始代码和指定的文件
–root设置当作根目录的目录
–setperms设置文件权限
–setugids设置文件拥有者和所属群组
–short-circuit直接略过指定完成阶段步骤
–target设置产生的套件的安装平台
–test仅作测试,并不真的安装套件
–verify此参数的效果和指定-q 参数相同
–version显示版本信息
–whatprovides查询该套件对指定的功能特性所提供的兼容度
–whatrequires查询该套件对指定的功能特性所需要的兼容度

df 和 du 的区别

df 命令用于显示目前在 Linux 系统上的文件系统的磁盘使用情况统计,du 会显示指定的目录或文件所占用的磁盘空间,两个命令都能查询磁盘使用情况,那两者有什么区别?今天杜老师聊一下 df 和 du 的区别!

命令选项

df 命令的选项列表如下:

选项作用
-a包含所有文件系统
-h使用人类易识别的格式
-H类似于-h, 但进制为 1000 而不是用 1024
-i列出 inode 的信息,不列出已用 block
-k就像是–block-size=1024
-l限制列出文件结构
-m就像是–block-size=1048576
–no-sync取得信息前不同步
–sync在取得信息前同步
-t限制列出文件系统类型
-T显示文件系统类型
-x限制列出文件系统不要显示类型
–help显示帮助
–version输出版本信息

du 命令的选项列表如下:

选项作用
-a显示目录中个别文件的大小
-b显示目录或文件大小时,使用 byte 为单位
-c除了显示个别目录或文件大小外,同时也显示所有目录或文件总和
-D显示指定符号连接的源文件大小
-h使用人类易识别的格式
-H类似于-h, 但进制为 1000 而不是用 1024
-kK 为单位
-l重复计算硬件连接文件
-L显示选项中所指定符号连接的源文件大小
-mM 为单位
-s显示总计
-S显示个别目录的大小时,并不含其子目录的大小
-x以一开始处理时的文件系统为准,若遇上其它不同文件系统目录则略过
-X指定目录或者文件
–exclude略过指定的目录或文件
–max-depth超过指定层数的目录后,予以忽略
–help显示帮助
–version显示版本信息

命令区别

df 命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或者程序占用的空间,最常见的就是文件已经删除,但程序并没有释放空间;du 命令是面向文件,只会计算文件或目录占用的空间。

如果把磁盘比作大学的宿舍,df 则是从住宿登记表中查询,du 则是挨个床位数。

fdisk 命令的使用

fdisk 是一个创建和维护分区的命令,它兼容 DOS 类型的分区表、BSD 或 SUN 类型的磁盘列表。今天杜老师为大家讲解一下该命令的使用!

命令介绍

fdisk 进行硬盘分区实质上说就是对硬盘的一种格式化。当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录和引导记录备份的存放位置。而对于文件系统及其他操作系统管理硬盘所需要的信息则是通过之后的高级格式化,即 mkfs 命令实现。

用一个形象的比喻,分区就好比在一张白纸上画一个方框,而格式化好比在方框里打上格子,安装各种软件就好比在格子里写上字。分区和格式化就相当于为安装软件打基础,实际上它们为电脑在硬盘上存储的数据起到标记定位的作用。

命令格式

查看磁盘分区列表:

1
fdisk -l

指定硬盘分区:

1
fdisk /dev/sdX

菜单列表

列表如下:

指令作用
m显示菜单、帮助信息
a活动分区标记、引导分区
d删除分区
l显示分区类型
n新建分区
p显示分区信息
q退出但不保存
t设置分区类型
v进行分区检查
w保存修改
x扩展应用,高级功能

分区演示

点击播放:

asciicast

mount 命令的使用

mount 是 Linux 下一个命令,它可以将分区挂接到 Linux 的一个目录下,从而将分区和目录联系起来,因此我们只要访问这个目录,就相当于访问该分区了。今天杜老师为大家讲解 mount 命令的使用!

命令选项

选项列表如下:

选项作用
-V显示程序版本
-h显示辅助讯息
-v显示挂载讯息,通常和-f 用来除错
-a将/etc/fstab 中定义的所有档案系统挂上
-F这个命令通常和-a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂载的动作
-f通常用在除错。它会使 mount 并不执行实际挂载动作,而是模拟整个挂载过程。通常和-v 一起使用
-n一般而言,mount 在挂载后会在/etc/mtab 中写入条数据。但在系统中没有可写入档案系统存在的情况下可用这个选项取消这个动作
-r等同于-o ro
-w等同于-o rw
-L将含有特定标签的硬盘分割挂上
-U将含有特定标签的硬盘分割挂下。-L 和-U 必须在/proc/partition 这种档案存在时才有意义
-t指定文件系统类型,通常不必指定。mount 会自动选择正确类型

特殊选项

可以通过-o 加下列选项实现特殊挂载:

参数说明
atime/noatime更新访问时间/不会更新访问时间。访问分区内文件时,是否更新文件访问时间,默认更新
async/sync异步/同步,默认异步
auto/noauto自动/手动,-a 命令执行时,是否会自动安装/etc/fstab 文件内容挂载,默认自动
defaults挂载的默认值,相当于 rw/suid/dev/exec/auto/nouser/async 七个选项
exec/noexec执行/不可执行,设定是否允许在文件系统执行可执行文件,默认是 exec 允许
remount重新挂载已挂载的文件系统,一般用于指定修改特殊权限
rw/ro读写/只读,文件系统挂载之后,是否具有读写权限,默认是 rw
suid/nosuid具有/不具有 SUID 权限,设定文件系统是否具有 SUID 和 SGID 的权限,默认具有
user/nouser允许/不许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,只有 root 可挂载分区
dev/nodev是否支持在此文件系统上用设备文件
loop使用 loop 模式用来将一个档案当成硬盘分割挂上系统
usrquota/grpquota写入代表文件系统支持用户磁盘配额/群组磁盘配额,默认为不支持

tar 命令的使用

tar 命令常用于备份文件。tar 是用来建立、还原备份文件的 Linux 命令,可以加入、解开备份文件内的文件。今天杜老师为大家分享一下 tar 命令的使用!

命令介绍

tar 是 Linux 平台下最常用的归档工具,其除了打包文件外,还可和 gzip/bzip2 配合使用进行文件压缩,在开源平台中发布的大部分软件包都是使用 tar 命令打包。

除了常用与软件安装时解压软件包外,tar 命令也常用于备份文件等,比如备份网站源码、SQL 数据库等待。

命令参数

列表如下:

参数作用
-A新增文件到已存在的备份文件中
-c建立新的备份文件
-C切换到指定的目录
-d对比备份文件内和文件系统上文件的差异
-f指定备份文件
-h不会建立符号连接,直接复制该连接指向的原始文件
-k解压缩备份文件时,不覆盖已有的文件
-K从指定的文件开始还原
-l复制文件或目录存放的文件系统,必须与指令执行时所处的文件系统相同,否则不予复制
-m解压缩文件时,不变更文件的更改时间
-N只将较指定日期更新的文件保存到备份文件里
-p用原来的文件权限还原文件
-P文件名用绝对名称,不移除文件名称前的根符号
-r新增文件到已存在的备份文件的结尾部分
-s还原文件的顺序和备份文件内的存放顺序相同
-t列出备份文件内容
-u仅置换备份文件内的文件更新的文件
-U解开压缩文件还原文件之前,先解除文件的连接
-v显示指令执行过程
-V建立使用指定的卷册名称的备份文件
-w遭遇问题时先询问用户
-W写入备份文件之后,确认文件正确无误
-x从备份文件中还原文件
-z通过 gzip 指令来处理备份文件
–atime-preserve不变更文件的存取时间
–backup移除文件前先进行备份
–checkpoint读取备份文件列出目录名称
–delete从备份文件中删除指定文件
–exclude排除符合范本样式文件
–group把加入设备文件中的文件所属群组设成指定的群组
–help在线帮助
–newer-mtime只保存更改的文件
–no-recursion不做递归处理,就是指定目录下的所有文件及子目录不予处理
–numeric-owner以 UID、GID 取代用户名称和群组名称
–owner把加入备份文件中的文件的拥有者设成指定的用户
–recursive-unlink解开压缩文件还原目录之前,先解除整个目录下所有文件连接
–remove-files文件加入备份文件后就将其删除
–same-owner尝试以相同的文件拥有者来还原文件
–totals备份文件建立之后,列出文件大小
–version显示版本信息

yum 命令的使用

Linux 系统的强大有时候需要借助第三方软件,而这些软件的安装一般分为两种:源码包和二进制包,就是常见的编译安装和 RPM 安装包,前者安装复杂,后者依赖关系解决麻烦,今天杜老师为大家分享一个非常好用的软件管理器!

命令介绍

yum 是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。yum 提供了查找、安装、删除一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

基於 RPM 包管理,能够从指定的服务器自动下载 RPM 包并安装,可以自动处理依赖关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

命令列表

列表如下:

命令作用
yum check-update列出所有可更新的软件清单
yum update更新所有软件
yum install APPNAME仅安装指定的软件
yum update APPNAME仅更新指定的软件
yum list列出所有可安裝的软件清单
yum remove APPNAME删除指定的软件包
yum search KEYWORD查找相关的软件包
yum clean all清除缓存
yum makecache创建缓存
yum-config-manager --add-repo URL添加指定的源

Git 命令的使用

运维工程师的大部分工作是为开发工程师准备好完善的运行环境,然后让程序在平台上面流畅运行,那么开发工程师所写的程序代码如何快速的上传到平台上呢?今天杜老师为大家讲解一款常用的代码上线工具 Git!

命令介绍

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用分布式版本库的方式,不必服务器端软件支持。

命令列表

列表如下:

命令作用
git init初始化当前目录作为 Git 仓库
git init DIRNAME初始化指定目录作为 Git 仓库
git add FILENAME标记要提交的文件
git commit -m “COMMENT”提交并添加描述的信息
git clone URL从 Git 仓库拷贝项目
git clone URL DIRNAME从 Git 仓库拷贝项目到指定目录中
git status查看项目当前状态
git diff显示已写入缓存与已修改但尚未写入缓存的改动的区别
git reset HEAD FILENAME取消指定文件缓存,HEAD 为大写
git rm FILENAME从 Git 移除指定文件
git mv OLDNAME NEWNAME移动或重命名指定文件
git branch列出分支
git branch BRANCHNAME创建分支
git branch -d BRANCHNAME删除分支
git checkout BRANCHNAME切换分支
git checkout -b BRANCHNAME切换指定分支,如果分支不存在则直接创建
git merge BRANCHNAME合并分支到当前分支中
git log列出历史提交记录
git tag创建一个标签
git remote add SHORTNAME URL添加一个新的远程仓库,指定一个简单的名字以便于引用
git remote查看当前含有哪些远程仓库
git fetch从远程仓库下载新的分支与数据
git push SHORTNAME BRANCHNAME推送新分支与数据到指定的远端仓库
git pull将远端仓库中的数据下载到本地

find 命令的使用

Linux 系统是一个由文件组成的操作系统,我们可以这么理解:修改文件等于设置系统。那么一些配置文件都在哪里?今天杜老师为大家讲解 Linux 的文件搜索命令,帮助大家找到所需文件!

命令介绍

find 是 Linux 强大的搜索命令,不仅可按照文件名搜索文件,还可按照权限、大小、时间、inode 号等来搜索文件。但 find 命令是直接在硬盘中进行搜索的,如指定的搜索范围过大,find 命令就会消耗较大的系统资源,导致服务器的压力过大。所以,使用 find 命令搜索时,请不要指定过大的搜索范围。

Linux 系统中任何用户都有使用 find 命令的权限,但搜索时会根据用户的访问权限限定搜索范围。

命令列表

列表如下:

选项作用示例
-name FILENAME按文件名搜索find /PATH -name FILENAME
-iname FileName不区分文件名大小find /PATH -iname FileName
-inum N根据 i 节点的编号搜索find /PATH -inum N
-size N根据文件大小搜索find /PATH -size N
-size +N比指定值更大find /PATH -size +N
-size -N比指定值更小find /PATH -size -N
-atime N按照文件访问时间搜索find /PATH -atime N
-atime +NN 天以上find /PATH -atime +N
-atime -NN 天以内find /PATH -atime -N
-mtime N按照文件修改时间搜索find /PATH -mtime N
-mtime +NN 天以上find /PATH -mtime +N
-mtime -NN 天以内find /PATH -mtime -N
-ctime N按照文件改变时间搜索find /PATH -ctime N
-ctime +NN 天以上find /PATH -ctime +N
-ctime -NN 天以内find /PATH -ctime -N
-perm査找文件权限find /PATH -perm 644
-uid UID査找所有者是指定 ID 的文件find /PATH -uid UID
-gid GID査找所属组是指定 ID 的文件find /PATH -gid GID
-user USERNAME査找所有者是指定用户文件find /PATH -user USERNAME
-group GROUPNAME査找所属组是指定用户组的文件find /PATH -group GROUPNAME
-type f查找普通文件find /PATH -type f
-type d查找目录find /PATH -type d
-type l查找链接文件find /PATH -type l
-aand 逻辑与find /PATH -name FILENAME -a -size N
-oor 逻辑或find /PATH -name FILENAME -o -size N

Linux 系统的特殊符号

我们常见的一些符号在 Linux 系统中都有特殊作用,今天杜老师为大家总结一些常见特殊符号的作用及用法,希望会对大家有所帮助!

符号列表

列表如下:

符号作用示例
#注释符号,井号后的内容不会执行echo #WORD
~当前用户的家目录cd ~
;命令顺序执行,前面执行成功与否对后面没影响COMMAND1 ; COMMAND2
&&命令逻辑执行,前面执行成功才会执行后面命令COMMAND1 && COMMAND2
.当前目录touch ./FILENAME
上级目录cd …
/系统的根目录cd /
=赋值符号,将后面的值赋给前面的变量dusays=com
$调用变量的值echo $dusays
引号内的所有符号,都失去原有的特殊效果echo ‘#WORD’
"引号内的符号,部分失去特殊效果echo “#WORD$dusays”
>重新定向,重复执行有覆盖的效果echo WORD > FILENAME
>>追加重新定向,重复执行有追加的效果echo WORD >> FILENAME
{}设定一个范围区间touch FILE{1…10}
*匹配所有字符,数量不限rm -f FILE*
?匹配所有字符,数量一个rm -f FILE?

扩展内容

Linux 还有非常多的符号具备特殊的功能,在这里就不一一总结了,毕竟很多符号都用不上。

一般这些符号常用与 Shell 脚本编写,合理搭配这些符号可以事半功倍,但如果不合理,可能会造成一些不可逆影响,所以使用时请预先了解符号作用,合理搭配!

为 Shell 脚本加密

杜老师之前会做一些技术支持的工作,为了让工作量尽可能的减少,杜老师写了很多的脚本。在客户公司运行时如果被其他工程师看到了怎么办,会不会抢了杜老师饭碗?今天杜老师讲一下如何为 Shell 脚本加密,保护您的脚本内容!

工具介绍

gzexe 是用来压缩脚本文件的小工具。当您执行被压缩过的脚本文件时,该文件会自动解压然后继续执行,和使用一般的执行文件相同。

但压缩后的文件内容会变得面目全非,会起到一定混淆视听的效果,所以我们会用这个命令进行脚本加密!

脚本加密

1
gzexe FILENAME

注意:使用 gzexe 加密后,会在文件所在目录生成一个再原有文件名后加~的文件,该文件就是原文件!

脚本解密

1
gzexe -d FILENAME

注意:使用 gzexe 解密后,文件名后带有~的原文件并不会自动删除,记得手动清除。

操作演示

点击播放:

asciicast

Linux 系统 3 个最危险命令

Linux 可以通过命令实现各种各样的操作,但是有些命令十分危险,运行轻则数据丢失,重则系统宕机,今天杜老师为大家总结 Linux 系统 3 个最危险命令!

删除命令

1
rm -rf /*

注意:rm 命令是删除文件;-r 是删除目录;-f 是强制删除不做任何提示;/表示根目录;*表示目录下所有文件以及目录。

循环调用

1
:() { :|:& }; :

注意:这是个循环炸弹的实例。具体的操作是通过定义一个函数,它会调用自己两次,一次在前台一次在后台。它会反复执行下去直到系统崩溃。

写入操作

1
dd if=/dev/random of=/dev/sda

注意:上列命令会向块设备 sda 写入随机数据从而擦除数据。当然!您的系统可能陷入混乱和不可恢复的状态。

文章总结

不要在您或您的同学电脑里 Linux 终端执行以上的任何一个命令。

如果您想测试它们,请在虚拟机上运行。

sudo 命令的使用

sudo 是 Linux 系统的管理指令,是允许系统管理员让普通用户执行一些或者全部的 root 命令的一个工具,如 halt/reboot/su 等等。这样不仅减少了 root 用户的登录和管理时间,同样提高了安全性。

添加授权

1
USERNAMEALL=(ALL)ALL

注意:如要使用 root 用户运行 visudo,然后将上面的内容根据实际情况添加到文件空白处。

命令格式

1
sudo COMMAND

注意:执行上面命令需要验证用户密码,所以要提前为用户设置密码。

效果演示

点击播放:

asciicast

选项扩展

添加授权中的哪几个 ALL 分别代表什么?第一个 ALL 代表哪些主机,第二个 ALL 代表可以使用哪些身份,第三个 ALL 代表可以使用哪些命令。

一般默认即可,有时也会根据实际情况调整,如有不懂地方,可以在页面下留言与杜老师交流!

gpasswd 群组密码的使用

看过群组配置文件的小伙伴应该都会注意到里面有个密码位,证明群组也是有密码的,那群组的密码如何使用?今天杜老师就来说一下 gpasswd 群组密码的使用!

命令介绍

1
gpasswd GROUPNAME

注意:之前篇章介绍过通过 gpasswd 管理群组成员,本篇文章主要通过 gpasswd 设置群组的密码,命令如上。

群组切换

1
newgrp GROUPNAME

注意:通过上面命令即可切换当前用户所在群组,不过只是暂时切换。需要注意的是,普通用户需要输入群组密码才能切换。

操作演示

点击播放:

asciicast

演示命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mkdir cjk
#创建目录
cd cjk
#进入目录
touch dusays
#创建文件
ls -l
#查看权限
groupadd dusays
#添加群组
newgrp dusays
#切换群组
gpasswd dusays
#设置密码
useradd bdyjy
#添加用户

注意:只注释了部分命令,如果有不懂的地方,可以在页面下留言,杜老师会第一时间回复解决。

用户管理相关命令

Linux 系统是一个多用户的分时操作系统,任何一个要使用系统资源的用户,必须向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面能帮助系统管理员对使用系统的用户进行跟踪,并且控制他们对系统资源的访问;另一方面也能帮助用户组织文件,并且为用户提供安全性保护。今天杜老师聊一聊用户管理相关命令!

用户查询命令

命令作用
id USERNAME查看用户的 ID 信息

用户添加命令

命令作用
useradd USERNAME添加用户,注意:在添加用户时,系统会自动创建一个与之同名的群组
useradd USERNAME -u UID添加用户,并指定 UID
useradd USERNAME -g GID添加用户,并指定 GID,在指定群组时,群组需要存在
useradd USERNAME -c “COMMENT”添加用户,并且指定描述
useradd USERNAME -d /PATH添加用户,并指定家目录
useradd USERNAME -s /bin/bash添加用户,并指定 Shell
useradd -n USERNAME添加用户时不自动创建群组
useradd -r USERNAME添加一个系统用户
useradd -M USRENAME添加用户时不自动创建该用户家目录

用户修改命令

命令作用
usermod USERNAME -l NEWNAME修改用户名称
usermod USERNAME -u UID修改用户的 UID
usermod USERNAME -g GID修改用户的 GID,目标群组需要存在
usermod USERNAME -c “COMMENT”修改用户描述
usermod USERNAME -d /PATH修改用户的家目录
usermod USERNAME -s /sbin/nologin修改用户的 Shell

用户删除命令

命令作用
userdel USERNAME删除用户
userdel -r USERNAME删除用户,并删除家目录

密码设置命令

命令作用
passwd修改当前用户密码,如不是 root 用户,则需要输入原密码才能修改
passwd USERNAME仅 root 用户可使用该命令,修改指定用户密码
passwd -l USERNAME锁定指定用户,锁定的效果无论该用户输入什么样的密码,都会认证失败
passwd -u USERNAME解锁
passwd -S USERNAME查询指定用户密码状态

群组添加命令

命令作用
groupadd GROUPNAME添加群组
groupadd GROUPNAME -g GID添加群组,并指定 GID

群组修改命令

命令作用
groupmod GROUPNAME -n NEWNAME修改群组名称
groupmod GROUPNAME -g GID修改群组的 GID

群组删除命令

命令作用
groupdel GROUPNAME删除群组

chage 账号与密码有效期限

我们可直接通过修改 /etc/shadow 的内容来实现用户账号密码有效期的变更,但这样很麻烦,而且对 /etc/shadow 直接操作,会降低系统安全性。今天杜老师讲一下通过 chage 命令管理账号与密码的有效期!

查询账号与密码有效期

  • 语法:
1
chage -l USERNAME
  • 效果:

修改账号与密码有效期

1
2
3
4
5
6
7
8
9
10
11
12
chage -m MINDAYS USERNAME
#设置密码修改最小天数
chage -M MAXDAYS USERNAME
#设置密码修改最大天数
chage -d LASTDAY USERNAME
#指定密码最后修改日期
chage -I INACTIVE USERNAME
#设置密码过期后锁定账号的天数
chage -E EXPIREDATE USERNAME
#设置密码过期日期,如果为0代表立即过期;如果为-1,代表密码永远不会过期
chage -W WARNDAYS USERNAME
#设置密码过期前开始警告的天数

注意:其中,MINDAYS/MAXDAYS/INACTIVE/WARNDAYS 只能是天数;而 LASTDAY 与 EXPIREDATE 则可以是日期。例 2015/11/05,或者从 1970 年 1 月 1 日起至该日期天数。

Linux 群组管理员

我们假设一个场景,一个公司里有好多部门,不同员工需要加入到不同的群组。如果其中一个部门增加员工,就需要通知管理员,将其加入到对应的群组。如果每个部门都要增加员工,那管理员可能每天都会疲于奔命处理各个请求。这时我们可以针对每个群组设置组长,并允许组长添加删除组成员,这样不仅可以提高效率,还减少了管理员的工作。

如何指派群组管理

  • 语法:
1
gpasswd -A USERNAME GROUPNAME
  • 效果:

如何删除群组管理

  • 语法:
1
gpasswd -A "" GROUPNAME
  • 效果:

群组管理添加成员

  • 语法:
1
gpasswd -a USERNAME GROUPNAME
  • 效果:

群组管理删除成员

  • 语法:
1
gpasswd -d USERNAME GROUPNAME
  • 效果:

权限管理相关命令

普通权限修改

命令作用
chmod u+r FILENAME所有者增加读取的权限
chmod g-w FILENAME所有组减少写入的权限
chmod o=x FILENAME其它用户设置成执行的权限
chmod ug+r FILENAME所有者和组同时增加读取的权限
chmod o-wx FILENAME其它用户减少写入和执行的权限
chmod ug=rw FILENAME所有者和组同时设置成读写权限
chmod u+r,g-w FILENAME所有者增加读取的权限,所有组减少写入的权限
chmod a+r FILENAME所有用户增加读取权限
chmod 644 FILENAME所有者具有读写的权限,所有组和其它用户只读
chmod a+r DIRNAME -R将目录及其下所有文件,都增加读取的权限

属主属组修改

命令作用备注
chown dusays FILENAME将文件的所有者改为 dusays用户必须存在,且只有 root 可以使用这个命令
chown dusays.com FILENAME将文件的所有者改为 dusays,所有组改为 com用户群组必须存在,且只有 root 可以使用这个命令
chown .com FILENAME将文件的所有组改为 com群组必须存在,且只有 root 可以使用这个命令
chown dusays. FILENAME将文件的所有者和组同时改为 dusays用户群组必须存在,且只有 root 可以使用这个命令
chown dusays DIRNAME -R将目录及其里面所有文件的所有者改为 dusays用户必须存在,且只有 root 可以使用这个命令
chgrp com FILENAME将文件的所有组改为 comroot 和成员可以运行

默认权限修改

命令作用备注
umask查询该用户 umask 值针对文件系统的默认权限 666;针对目录系统的默认权限 777,而真实的权限,为系统的默认权限,减去 umask 值
umask 033设置该用户 umask 值为 033因为 Linux 系统的安全机制,新生成的文件不得具备执行权限,如果因为 umask 设置的问题,导致新文件具备了执行权限,则会在对应位加一

ACL 单用户修改

命令作用备注
setfacl -m u:USERNAME:r FILENAME允许 USERNAME 只读权限访问该文件用户必须存在
setfacl -m g:GROUPNAME:rx DIRNAME允许 GROUPNAME 读和执行权限访问该目录群组必须存在
setfacl -x u:USERNAME FILENAME删除该用户的访问权限用户必须存在
setfacl -b FILENAME关闭该文件 ACL会删除之前的设置
getfacl FILENAME查询该文件 ACL普通权限带有加号

特权权限修改

命令作用备注
chmod u+s FILENAME该文件添加 SUID当一个二进制可执行文件被设置了 SUID,该文件的执行者则具备所有者的权限,可以任意调取所有者可使用全部资源
chmod g+s DIRNAME该文件添加 SGID当一个目录设置 SGID,则目录下创建的文件所有组,都会被设置与该目录所有组相同
chmod o+t DIRNAME该文件添加 SBIT当一个目录设置 SBIT,该目录下文件仅所有者可以删除

隐藏权限修改

命令作用备注
chattr +a FILENAME添加该权限后,文件只能查看、增加内容,不可删除、移动、修改仅 root 可以使用
chattr +i FILENAME添加该权限后,文件只能查看内容,不可增加、删除、移动、修改仅 root 可以使用
chattr -a FILENAME删除隐藏权限仅 root 可以使用
lsattr FILENAME查看隐藏权限所有用户皆可使用

vi 编辑器操作指南

vi 是 Linux 操作系统中最经典的文本编辑工具,只能编辑字符,不可以对字体、段落进行排版;它既可以新建文件,也能编辑文件;没有菜单,只有命令,而且命令繁多。

常用命令语法

语法作用
vi FILENAME创建或者打开一个文件
vi +NUMBER FILENAME打开一个文件,并定位光标至指定行首
vi + FILENAME打开一个文件,并定位光标至文件末尾行首
vi +/KEYWORD FILENAME打开一个文件,并定位光标至关键词匹配行行首

进入输入模式

命令作用
a在光标后添加字符
A在光标所在的行尾添加字符
i在光标前添加字符
I在光标所在的行首添加字符
o在光标所在行的下一行添加字符
O在光标所在行的上一行添加字符
s删除光标所在字符,并且进入插入模式
S删除光标所在的行,并且进入插入模式

命令模式操作

命令作用
x删除光标所在字符
u撤销上次操作
.重新执行上次操作
r替换光标所在字符,要跟上需替换字符
dd删除光标所在的行
dG删除光标所在的行至文件尾所有内容
h向左移动光标
j向下移动光标
k向上移动光标
l向右移动光标

末行模式操作

语法作用
:w保存
:q退出
:x保存退出
:r FILENAME合并文件
:w FILENAME将文件另存为
:!COMMAND执行 Linux 的命令

末行模式搜索

语法作用
:/KEYWORD搜索对应的关键词
/KEYWORD搜索对应的关键词
n查找下一个关键词
N查找上一个关键词

末行模式替换

语法作用
:s/OLDWORD/NEWWORD将光标所在行第一个匹配关键词替换
:s/OLDWORD/NEWWORD/g将光标所在行内所有匹配关键词替换
:LOWNUM,HIGHNUM s/OLDWORD/NEWWORD/g将行号内的所有匹配关键词替换
:set number显示行数

Linux 运维人员最常用 166 个命令汇总

Linux 是一个键盘流交互的操作系统,使用者通过命令来操控系统。而 Linux 系统在默认版本中则包含了超过 2000 条命令,且 Linux 系统的命令都包含很多扩展,也就是其命令选项。如何减少学习成本,今天让杜老师给你总结下 Linux 运维人员最常用的 166 个命令!

线上查询、帮助命令「2个」

命令功能说明
man查看命令帮助,命令词典,更复杂还有 info,但不常用。
help查看 Linux 内置命令的帮助,比如 cd 等命令。

文件、目录操作命令「18个」

命令功能说明
ls全拼为 list,功能是列出目录的内容及其内容属性信息。
cd全拼为 change directory,功能是从当前工作目录切换到指定的工作目录。
cp全拼为 copy,功能为复制文件或目录。
find查找,用于查找目录及目录下文件。
mkdir全拼为 make directories,其功能是创建目录。
mv全拼为 move,其功能是移动或重命名文件。
pwd全拼为 print working directory,功能是显示当前工作目录的绝对路径。
rename用于重新命名文件。
rm全拼为 remove,其功能是删除一个或多个文件或目录。
rmdir全拼为 remove empty directories,功能是删除空目录。
touch创建个空文件,改变已有文件的时间戳属性。
tree功能是以树形结构显示目录下的内容。
basename显示文件名或着目录名。
dirname显示文件或着目录路径。
chattr改变文件扩展属性。
lsattr查看文件扩展属性。
file显示文件类型。
md5sum计算和校验文件的 MD5 值。

查看文件、内容处理命令「21个」

命令功能说明
cat全拼为 concatenate,功能是用于连接多个文件并且打印到屏幕输出或重定向到指定文件中。
tactac 是 cat 的反向拼写,因此命令的功能为反向显示文件内容。
more分页显示文件内容。
less分页显示文件内容,more 命令的相反用法。
head显示文件内容头部。
tail显示文件内容尾部。
cut将文件的每一行按指定分隔符分割并输出。
split分割文件为不同的片段。
paste按行合并文件内容。
sort对文件的文本内容排序。
uniq去除掉重复行。
wc统计文件行数、单词数或是字节数。
iconv转换文件编码格式。
dos2unix将 DOS 格式文件转换成 UNIX 格式。
diff全拼为 difference,比较文件差异,用于文本文件。
vimdiff命令行可视化文件比较工具,用于文本文件。
rev反向输出文件内容。
grep常用于过滤字符串。
join按两个文件的相同字段合并。
tr替换、删除字符。
vim命令行文本编辑器。

文件压缩及解压缩命令「4个」

命令功能说明
tar打包压缩。
unzip解压文件。
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 更新库。

用户管理命令「10个」

命令功能说明
useradd添加用户。
usermod修改系统已经存在用户属性。
userdel删除用户。
groupadd添加用户群组。
passwd修改用户密码。
chage修改用户密码有效期限。
id查看用户的 UID/GID 及归属的用户群组。
su切换用户身份。
visudo编辑/etc/sudoers 文件的专属命令。
sudo以另外一用户身份「默认为 root 用户」执行事先在 sudoers 文件中允许的命令。

基础网络操作命令「11个」

命令功能说明
telnet用 Telnet 协议远程登录。
ssh用 SSH 加密协议远程登录。
scp全拼为 secure copy,用于不同主机之间复制文件。
wget用命令行下载文件。
ping测试主机之间网络的连通性。
route显示和设置 Linux 系统的路由表。
ifconfig查看、配置、启用或禁用网络接口的命令。
ifup启动网卡。
ifdown关闭网卡。
netstat查看网络状态。
ss查看网络状态。

深入网络操作命令「9个」

命令功能说明
nmap网络扫描命令。
lsof全名为 list open files,也就是列举系统中已经被打开的文件。
mail发送、接收邮件。
mutt邮件管理命令。
nslookup查询互联网 DNS 服务器的命令。
dig查找 DNS 的解析过程。
host查询 DNS 的命令。
traceroute追踪数据传输路由状况。
tcpdump命令行的抓包工具。

有关磁盘与文件系统的命令「16个」

命令功能说明
mount挂载文件系统。
umount卸载文件系统。
fsck检查并修复 Linux 文件系统。
dd转换、复制文件。
dumpe2fs导出 Ext2/3/4 等文件系统信息。
dumpExt2/3/4 等文件系统备份工具。
fdisk磁盘分区命令,适用于 2TB 以下磁盘分区。
parted磁盘分区命令,没有磁盘大小限制,常用于 2TB 以下磁盘分区。
mkfs格式化创建 Linux 文件系统。
partprobe更新内核的硬盘分区表信息。
e2fsck检查 Ext2/3/4 等类型文件系统。
mkswap创建 Linux 的交换分区。
swapon启用交换分区。
swapoff关闭交换分区。
sync将内存缓冲区内的数据写入磁盘。
resize2fs调整 Ext2/3/4 等文件系统大小。

系统权限、用户授权相关命令「4个」

命令功能说明
chmod改变文件、目录权限。
chown改变文件、目录的属主和属组。
chgrp更改文件用户群组。
umask显示、设置权限掩码。

查看系统用户登录信息命令「7个」

命令功能说明
whoami显示当前有效用户名称,相当于执行 id -un 命令。
who显示目前已登录系统的用户信息。
w显示已登陆系统的用户列表,并显示用户正在执行的指令。
last显示已登入系统的用户。
lastlog显示系统中所有用户最近一次的登录信息。
users显示当前登录系统的所有用户的用户列表。
finger查找、显示用户信息。

内置命令、其它「19个」

命令功能说明
echo打印变量,直接输出指定的字符串
printf将结果格式化输出到标准输出中。
rpm管理 RPM 包命令。
yum自动化简单化地管理 RPM 包的命令。
watch周期的执行给定的命令,并将命令的输出以全屏方式显示。
alias设置系统别名。
unalias取消系统别名。
date查看、设置系统时间。
clear清除屏幕,简称清屏。
history查看命令执行的历史纪录。
eject弹出光驱。
time计算命令执行时间。
nc功能强大网络工具。
xargs将标准输入转换成命令行的参数。
exec调用并执行指令的命令。
export设置或者显示环境变量。
unset删除变量、函数。
type用于判断另外一个命令是否为内置的命令。
bc命令行科学计算器。

系统管理、性能监视命令「9个」

命令功能说明
chkconfig管理 Linux 系统开机启动项。
vmstat虚拟内存统计。
mpstat显示各个可用 CPU 的状态统计。
iostat统计系统的 I/O。
sar全面地获取系统 CPU、运行队列、磁盘读写、分页、内存、 CPU 中断和网络性能数据。
ipcs用于报告 Linux 中进程间通信设施的状态,显示信息包括消息列表、共享内存和信号量信息。
ipcrm用来删除一个或更多的消息队列、信号量集或者共享内存标识。
strace用于诊断、调试 Linux 用户空间跟踪器。我们用它来监控用户空间进程和内核交互,比如系统调用、信号传递、进程状态变更。
ltrace命令会跟踪进程库函数调用,它会显现哪个库函数被调用。

关机、重启、注销和查看系统信息的命令「6个」

命令功能说明
shutdown关机。
halt关机。
poweroff关闭电源。
logout退出当前登录的 Shell。
exit退出当前登录的 Shell。
CTRL+D退出当前登录的 Shell 的快捷键。

进程管理相关命令「15个」

命令功能说明
bg将一个后台暂停的命令,变成继续执行。
fg将后台的命令调至前台继续运行。
jobs查看当前有多少后台运行的命令。
kill终止进程。
killall通过进程名来终止进程。
pkill通过进程名来终止进程。
crontab定时任务命令。
ps显示进程快照。
pstree树形显示进程。
nice调整程序运行的优先级。
nohup忽略挂起信号运行指定。
pgrep查找匹配条件进程。
runlevel查看系统当前运行级别。
init切换运行级别。
service启动、停止、重新启动、关闭系统服务,还可以显示所有系统服务的当前状态。
❌