From 52f0a889db475795fad5b9d69533936361fc143c Mon Sep 17 00:00:00 2001 From: Zhang Peng Date: Mon, 25 Nov 2019 11:55:01 +0800 Subject: [PATCH] update docs --- .../cli/Linux文件内容查看编辑.md | 48 ++------- docs/linux/cli/Linux文件压缩和解压.md | 33 ++---- docs/linux/cli/Linux文件目录管理.md | 102 ++++++------------ docs/linux/cli/Linux用户管理.md | 56 +++------- docs/linux/cli/Linux硬件管理.md | 36 ++----- docs/linux/cli/Linux系统管理.md | 57 +++------- docs/linux/cli/Linux网络管理.md | 80 ++++---------- docs/linux/cli/Linux软件管理.md | 29 +---- docs/linux/cli/命令行的艺术.md | 71 ++++++------ .../cli/查看Linux命令帮助信息.md | 43 ++------ docs/linux/ops/linux典型运维应用.md | 27 ++--- docs/linux/ops/samba使用详解.md | 32 ------ 12 files changed, 171 insertions(+), 443 deletions(-) diff --git a/docs/linux/cli/Linux文件内容查看编辑.md b/docs/linux/cli/Linux文件内容查看编辑.md index 5fc4409..a271421 100644 --- a/docs/linux/cli/Linux文件内容查看编辑.md +++ b/docs/linux/cli/Linux文件内容查看编辑.md @@ -1,34 +1,8 @@ ---- -title: Linux 文件内容查看编辑 -date: 2018-02-27 -categories: - - linux -tags: - - linux - - command ---- - # Linux 文件内容查看编辑 > 关键词:`cat`, `head`, `tail`, `more`, `less`, `sed`, `vi`, `grep` - - -- [Linux 文件内容查看编辑要点](#linux-文件内容查看编辑要点) -- [命令常见用法](#命令常见用法) - - [cat](#cat) - - [head](#head) - - [tail](#tail) - - [more](#more) - - [less](#less) - - [sed](#sed) - - [vi](#vi) - - [grep](#grep) -- [参考资料](#参考资料) - - - -## Linux 文件内容查看编辑要点 +## 1. Linux 文件内容查看编辑要点 - 连接文件并打印到标准输出设备 - 使用 [cat](#cat) - 显示指定文件的开头若干行 - 使用 [head](#head) @@ -39,9 +13,9 @@ tags: - 文本编辑器 - 使用 [vi](#vi) - 使用正则表达式搜索文本,并把匹配的行打印出来 - 使用 [grep](#grep) -## 命令常见用法 +## 2. 命令常见用法 -### cat +### 2.1. cat > cat 命令用于连接文件并打印到标准输出设备上。 > @@ -55,13 +29,13 @@ cat m1 m2 # 同时显示文件 ml 和 m2 的内容 cat m1 m2 > file # 将文件 ml 和 m2 合并后放入文件 file 中 ``` -### head +### 2.2. head > head 命令用于显示文件的开头内容。在默认情况下,head 命令显示文件的头部 10 行内容。 > > 参考:http://man.linuxde.net/head -### tail +### 2.3. tail > tail 命令用于显示文件的尾部内容。在默认情况下,tail 命令显示文件的尾部 10 行内容。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。 > @@ -75,7 +49,7 @@ tail -n +20 file # 显示文件file的内容,从第20行至文件末尾 tail -c 10 file # 显示文件file的最后10个字符 ``` -### more +### 2.4. more > more 命令是一个基于 vi 编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持 vi 中的关键字定位操作。more 名单中内置了若干快捷键,常用的有 H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。 > @@ -100,7 +74,7 @@ more -dc file more -c -10 file ``` -### less +### 2.5. less less 命令的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 命令允许用户向前或向后浏览文件,而 more 命令只能向前浏览。用 less 命令显示文件时,用 PageUp 键向上翻页,用 PageDown 键向下翻页。要退出 less 程序,应按 Q 键。 @@ -110,7 +84,7 @@ less 命令的作用与 more 十分相似,都可以用来浏览文字档案的 less /var/log/shadowsocks.log ``` -### sed +### 2.6. sed > sed 是一种流编辑器,它是文本处理工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed 主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 > @@ -147,7 +121,7 @@ sed '$d' file sed '/^test/'d file ``` -### vi +### 2.7. vi > vi 命令是 UNIX 操作系统和类 UNIX 操作系统中最通用的全屏幕纯文本编辑器。Linux 中的 vi 编辑器叫 vim,它是 vi 的增强版(vi Improved),与 vi 编辑器完全兼容,而且实现了很多增强功能。 > @@ -155,7 +129,7 @@ sed '/^test/'d file > > 引申阅读:[Vim 快速指南](https://github.com/dunwu/OS/blob/master/docs/vim.md) -### grep +### 2.8. grep > grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 > @@ -183,6 +157,6 @@ $ grep "main()" . -r --exclude "README" $ grep "main()" . -r --exclude-from filelist ``` -## 参考资料 +## 3. 参考资料 - [Linux 命令大全](http://man.linuxde.net/) diff --git a/docs/linux/cli/Linux文件压缩和解压.md b/docs/linux/cli/Linux文件压缩和解压.md index 1185ff3..ba3fad1 100644 --- a/docs/linux/cli/Linux文件压缩和解压.md +++ b/docs/linux/cli/Linux文件压缩和解压.md @@ -1,37 +1,16 @@ ---- -title: Linux 文件压缩和解压 -date: 2018-02-27 -categories: - - linux -tags: - - linux - - command ---- - # Linux 文件压缩和解压 > 关键词:`tar`, `gzip`, `zip`, `unzip` - - -- [Linux 文件压缩和解压要点](#linux-文件压缩和解压要点) -- [命令常见用法](#命令常见用法) - - [tar](#tar) - - [gzip](#gzip) - - [zip](#zip) - - [unzip](#unzip) - - - -## Linux 文件压缩和解压要点 +## 1. Linux 文件压缩和解压要点 - 压缩和解压 tar 文件 - 使用 [tar](#tar) - 压缩和解压 gz 文件 - 使用 [gzip](#gzip) - 压缩和解压 zip 文件 - 分别使用 [zip](#zip)、[unzip](#unzip) -## 命令常见用法 +## 2. 命令常见用法 -### tar +### 2.1. tar > tar 命令可以为 linux 的文件和目录创建档案。利用 tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar 最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用 tar 命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。 > @@ -49,7 +28,7 @@ tar -zxvf log.tar.gz # 将 tar 包解压缩 tar -zxvf log30.tar.gz log2013.log # 只将 tar 内的部分文件解压出来 ``` -### gzip +### 2.2. gzip > gzip 命令用来压缩文件。gzip 是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出“.gz”扩展名。 > @@ -68,7 +47,7 @@ gzip -rv test/ # 递归的压缩目录 gzip -dr test/ # 递归地解压目录 ``` -### zip +### 2.3. zip > zip 命令可以用来解压缩文件,或者对文件进行打包操作。zip 是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。 > @@ -81,7 +60,7 @@ gzip -dr test/ # 递归地解压目录 zip -q -r html.zip /home/Blinux/html ``` -### unzip +### 2.4. unzip > unzip 命令用于解压缩由 zip 命令压缩的“.zip”压缩包。 > diff --git a/docs/linux/cli/Linux文件目录管理.md b/docs/linux/cli/Linux文件目录管理.md index 6e062ad..56b5d64 100644 --- a/docs/linux/cli/Linux文件目录管理.md +++ b/docs/linux/cli/Linux文件目录管理.md @@ -1,58 +1,16 @@ ---- -title: Linux 文件目录管理命令 -date: 2018-02-27 -categories: - - linux -tags: - - linux - - command ---- - # Linux 文件目录管理 > 关键词:`cd`, `ls`, `pwd`, `mkdir`, `rmdir`, `tree`, `touch`, `ln`, `rename`, `stat`, `file`, `chmod`, `chown`, `locate`, `find`, `cp`, `scp`, `mv`, `rm` - +## 1. Linux 文件目录工作机制 -- [Linux 文件目录工作机制](#linux-文件目录工作机制) - - [Linux 目录结构](#linux-目录结构) - - [Linux 文件属性](#linux-文件属性) -- [Linux 文件目录管理要点](#linux-文件目录管理要点) - - [目录管理](#目录管理) - - [文件管理](#文件管理) - - [文件和目录通用管理](#文件和目录通用管理) -- [命令常见用法](#命令常见用法) - - [cd](#cd) - - [ls](#ls) - - [pwd](#pwd) - - [mkdir](#mkdir) - - [rmdir](#rmdir) - - [tree](#tree) - - [touch](#touch) - - [ln](#ln) - - [rename](#rename) - - [stat](#stat) - - [file](#file) - - [chmod](#chmod) - - [chown](#chown) - - [locate](#locate) - - [find](#find) - - [cp](#cp) - - [scp](#scp) - - [mv](#mv) - - [rm](#rm) - - - -## Linux 文件目录工作机制 - -### Linux 目录结构 +### 1.1. Linux 目录结构 linux 目录结构是树形结构,其根目录是 `/` 。一张思维导图说明各个目录的作用:

-### Linux 文件属性 +### 1.2. Linux 文件属性 Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。 在 Linux 中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如: @@ -89,7 +47,7 @@ dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot - 第 2、5、8 位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限。 - 第 3、6、9 位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。 -#### Linux 文件属主和属组 +#### 1.2.1. Linux 文件属主和属组 ```bash $ ls -l @@ -104,9 +62,9 @@ dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot - 因此,Linux 系统按文件拥有者、文件拥有者同组用户和其他用户来规定了不同的文件访问权限。 - 在以上实例中,bin 文件是一个目录文件,属主和属组都为 root,属主有可读、可写、可执行的权限;与属主同组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限。 -## Linux 文件目录管理要点 +## 2. Linux 文件目录管理要点 -### 目录管理 +### 2.1. 目录管理 - 切换目录 - 使用 [cd](#cd) - 查看目录信息 - 使用 [ls](#ls) @@ -115,7 +73,7 @@ dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot - 创建目录 - 使用 [mkdir](#mkdir) - 删除目录 - 使用 [rmdir](#rmdir) -### 文件管理 +### 2.2. 文件管理 - 创建空文件 - 使用 [touch](#touch) - 为文件创建连接 - 使用 [ln](#ln) @@ -129,16 +87,16 @@ dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot - 查找命令的绝对路径 - 使用 [which](#which) - 查找命令的程序、源代码等相关文件 - 使用 [whereis](#whereis) -### 文件和目录通用管理 +### 2.3. 文件和目录通用管理 - 复制文件或目录 - 使用 [cp](#cp) - 复制文件或目录到远程服务器 - 使用 [scp](#scp) - 移动文件或目录 - 使用 [mv](#mv) - 删除文件或目录 - 使用 [rm](#rm) -## 命令常见用法 +## 3. 命令常见用法 -### cd +### 3.1. cd > cd 命令用来切换工作目录。 > @@ -154,7 +112,7 @@ cd .. # 切换到上级目录 cd ../.. # 切换到上两级目录 ``` -### ls +### 3.2. ls > ls 命令用来显示目录信息。 > @@ -172,13 +130,13 @@ ls -ltr # 按修改时间列出文件和文件夹详细信息 ls --color=auto # 列出文件并标记颜色分类 ``` -### pwd +### 3.3. pwd > pwd 命令用来显示当前目录的绝对路径。 > > 参考:http://man.linuxde.net/pwd -### mkdir +### 3.4. mkdir > mkdir 命令用来创建目录。 > @@ -194,7 +152,7 @@ mkdir -p zp/test mkdir -p -m 750 zp/test ``` -### rmdir +### 3.5. rmdir > rmdir 命令用来删除空目录。 > @@ -207,7 +165,7 @@ mkdir -p -m 750 zp/test rmdir -p zp/test ``` -### tree +### 3.6. tree > tree 命令以树状显示目录的内。 > @@ -234,7 +192,7 @@ tree -L 2 > /home/www/tree.txt # 当前目录结果存到 tree.txt 文件中 tree -I 'node_modules|icon|font' -L 2 ``` -### touch +### 3.7. touch > touch 命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建空文件。 > @@ -246,7 +204,7 @@ tree -I 'node_modules|icon|font' -L 2 touch ex2 ``` -### ln +### 3.8. ln > ln 命令用来为文件创建连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项。 > @@ -266,7 +224,7 @@ ln /mub1/m2.c /usr/liu/a2.c ln -s /usr/mengqc/mub1 /usr/liu/abc ``` -### rename +### 3.9. rename > rename 命令用字符串替换的方式批量重命名。 > @@ -284,7 +242,7 @@ rename "s/$//.txt/" * # 把所有的文件名都以 txt 结尾 rename "s//.txt//" * # 把所有以 .txt 结尾的文件名的.txt 删掉 ``` -### stat +### 3.10. stat > stat 命令用于显示文件的状态信息。stat 命令的输出信息比 ls 命令的输出信息要更详细。 > @@ -296,7 +254,7 @@ rename "s//.txt//" * # 把所有以 .txt 结尾的文件名的.txt stat myfile ``` -### file +### 3.11. file > file 命令用来探测给定文件的类型。file 命令对文件的检查分为文件系统、魔法幻数检查和语言检查 3 个过程。 > @@ -311,7 +269,7 @@ file -i install.log # 显示 MIME 类型 file -L /var/spool/mail # 显示符号链接的文件类型 ``` -### chmod +### 3.12. chmod > chmod 命令用来变更文件或目录的权限。在 UNIX 系统家族里,文件或目录权限的控制分别以读取、写入、执行 3 种一般权限来区分,另有 3 种特殊权限可供运用。用户可以使用 chmod 指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。 > @@ -350,7 +308,7 @@ chmod a+x f01   # 对文件f01的u,g,o都设置可执行属性 chmod -R 755 /home/wwwroot/* ``` -### chown +### 3.13. chown > chown 命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户 D,用户组可以是组名或组 id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。 > @@ -365,7 +323,7 @@ chmod -R 755 /home/wwwroot/* chown -R liu /usr/meng ``` -### locate +### 3.14. locate > locate 命令和 slocate 命令都用来查找文件或目录。 > @@ -380,7 +338,7 @@ locate pwd # 查找和 pwd 相关的所有文件 locate /etc/sh # 搜索 etc 目录下所有以 sh 开头的文件 ``` -### find +### 3.15. find > find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 > @@ -413,7 +371,7 @@ find . -iregex ".*\(\.txt\|\.pdf\)$" find /home ! -name "*.txt" ``` -### cp +### 3.16. cp > cp 命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp 命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。 > @@ -421,7 +379,7 @@ find /home ! -name "*.txt" 示例: -#### 参数 +#### 3.16.1. 参数 - 源文件:制定源文件列表。默认情况下,cp 命令不能复制目录,如果要复制目录,则必须使用`-R`选项; - 目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。 @@ -442,7 +400,7 @@ cp -rf /usr/men/* /usr/zh cp -i /usr/men m*.c /usr/zh ``` -### scp +### 3.17. scp > scp 命令用于在 Linux 下进行远程拷贝文件的命令,和它类似的命令有 cp,不过 cp 只是在本机进行拷贝不能跨服务器,而且 scp 传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system 时,用 scp 可以帮你把文件移出来。另外,scp 还非常不占资源,不会提高多少系统负荷,在这一点上,rsync 就远远不及它了。虽然 rsync 比 scp 会快一点,但当小文件众多的情况下,rsync 会导致硬盘 I/O 非常高,而 scp 基本不影响系统正常使用。 @@ -458,7 +416,7 @@ scp -r @: scp -r test root@192.168.0.1:/opt ``` -#### 免密码传输 +#### 3.17.1. 免密码传输 (1)生成 ssh 公私钥对 @@ -477,7 +435,7 @@ cat ~/.ssh/id_rsa.pub.tmp >> ~/.ssh/authorized_keys rm ~/.ssh/id_rsa.pub.tmp ``` -### mv +### 3.18. mv > mv 命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source 表示源文件或目录,target 表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。 > @@ -503,7 +461,7 @@ mv -f *.txt /home/office # 无条件覆盖已经存在的文件 mv -bv *.txt /home/office # 复制时创建备份 ``` -### rm +### 3.19. rm > rm 命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。 > diff --git a/docs/linux/cli/Linux用户管理.md b/docs/linux/cli/Linux用户管理.md index 5b050f4..9125441 100644 --- a/docs/linux/cli/Linux用户管理.md +++ b/docs/linux/cli/Linux用户管理.md @@ -1,34 +1,8 @@ ---- -title: Linux 用户管理 -date: 2018-02-27 -categories: - - linux -tags: - - linux - - command ---- - # Linux 用户管理 > 关键词:`groupadd`, `groupdel`, `groupmod`, `useradd`, `userdel`, `usermod`, `passwd`, `su`, `sudo` - - -- [Linux 用户管理要点](#linux-用户管理要点) -- [命令常见用法](#命令常见用法) - - [groupadd](#groupadd) - - [groupdel](#groupdel) - - [groupmod](#groupmod) - - [useradd](#useradd) - - [userdel](#userdel) - - [usermod](#usermod) - - [passwd](#passwd) - - [su](#su) - - [sudo](#sudo) - - - -## Linux 用户管理要点 +## 1. Linux 用户管理要点 - 创建用户组 - 使用 [groupadd](#groupadd) - 删除用户组 - 使用 [groupdel](#groupdel) @@ -40,9 +14,9 @@ tags: - 切换用户 - 使用 [su](#su) - 当前用户想执行没有权限执行的命令时,使用其他用户身份去执行 - 使用 [sudo](#sudo) -## 命令常见用法 +## 2. 命令常见用法 -### groupadd +### 2.1. groupadd > groupadd 命令用于创建一个新的用户组,新用户组的信息将被添加到系统文件中。 > @@ -55,7 +29,7 @@ tags: $ groupadd -g 344 jsdigname ``` -### groupdel +### 2.2. groupdel > groupdel 命令用于删除指定的用户组,本命令要修改的系统文件包括 `/ect/group` 和 `/ect/gshadow`。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。 > @@ -68,13 +42,13 @@ $ groupadd damon # 创建damon用户组 $ groupdel damon # 删除这个用户组 ``` -### groupmod +### 2.3. groupmod > groupmod 命令更改群组识别码或名称。需要更改群组的识别码或名称时,可用 groupmod 指令来完成这项工作。 > > 参考:http://man.linuxde.net/groupmod -### useradd +### 2.4. useradd > useradd 命令用于 Linux 中创建的新的系统用户。useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码.而可用 userdel 删除帐号。使用 useradd 指令所建立的帐号,实际上是保存在 `/etc/passwd` 文本文件中。 > @@ -90,7 +64,7 @@ $ useradd –g sales jack –G company,employees # -g:加入主要组、-G $ useradd caojh -u 544 ``` -### userdel +### 2.5. userdel > userdel 命令用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。 > @@ -105,7 +79,7 @@ $ userdel linuxde # 删除用户linuxde,但不删除其家目录及文 $ userdel -r linuxde # 删除用户linuxde,其 home 目录及文件一并删除; ``` -### usermod +### 2.6. usermod > usermod 命令用于修改用户的基本信息。usermod 命令不允许你改变正在线上的使用者帐号名称。当 usermod 命令用来改变 user id,必须确认这名 user 没在电脑上执行任何程序。你需手动更改使用者的 crontab 档。也需手动更改使用者的 at 工作档。采用 NIS server 须在 server 上更动相关的 NIS 设定。 > @@ -127,7 +101,7 @@ $ usermod -L newuser1 $ usermod -U newuser1 ``` -### passwd +### 2.7. passwd > passwd 命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。 > @@ -172,7 +146,7 @@ $ passwd -S linuxde # 查询linuxde用户密码状态; Empty password. # 空密码,也就是没有密码; ``` -### su +### 2.8. su > su 命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。 > @@ -191,7 +165,7 @@ $ su root -f $ su -test ``` -### sudo +### 2.9. sudo > sudo 命令用来以其他身份来执行命令,预设的身份为 root。在 `/etc/sudoers` 中设置了可执行 sudo 指令的用户。若其未经授权的用户企图使用 sudo,则会发出警告的邮件给管理员。用户使用 sudo 时,必须先输入密码,之后有 5 分钟的有效期限,超过期限则必须重新输入密码。 > @@ -208,14 +182,14 @@ $ sudo -l $ sudo -L ``` -#### 给普通用户授权 sudo +#### 2.9.1. 给普通用户授权 sudo 假设要给普通用户 mary 配置 sudo 权限: 1. `/etc/sudoers` 文件存放了 sudo 的相关用户,但是默认是没有写权限的,所以需要设为可写:`chmod u+w /etc/sudoers` -2. 在该文件中添加 `mary ALL=(ALL) ALL` ,保存并退出,让 mary 具有 sudo 的所有权限 +2. 在该文件中添加 `mary ALL=(ALL) ALL` ,保存并退出,让 mary 具有 sudo 的所有权限 3. 再将 `/etc/sudoers` 的权限恢复到默认状态:`chmod u-w /etc/sudoers` -#### 免密码授权 sudo +#### 2.9.2. 免密码授权 sudo -与给普通用户授权 sudo 类似,区别仅在于第 2 步:`mary ALL=(ALL) NOPASSWD: ALL`。 +与给普通用户授权 sudo 类似,区别仅在于第 2 步:`mary ALL=(ALL) NOPASSWD: ALL`。 diff --git a/docs/linux/cli/Linux硬件管理.md b/docs/linux/cli/Linux硬件管理.md index bae5e85..7a66969 100644 --- a/docs/linux/cli/Linux硬件管理.md +++ b/docs/linux/cli/Linux硬件管理.md @@ -1,30 +1,8 @@ ---- -title: Linux 硬件管理 -date: 2018-02-27 -categories: - - linux -tags: - - linux - - command ---- - # Linux 硬件管理 > 关键词:`df`, `du`, `top`, `free`, `iotop` - - -- [Linux 硬件管理要点](#linux-硬件管理要点) -- [命令常见用法](#命令常见用法) - - [df](#df) - - [du](#du) - - [top](#top) - - [free](#free) - - [iotop](#iotop) - - - -## Linux 硬件管理要点 +## 1. Linux 硬件管理要点 - 查看磁盘空间 - 使用 [df](#df) - 查看文件或目录的磁盘空间 - 使用 [du](#du) @@ -32,9 +10,9 @@ tags: - 查看已使用和未使用的内存 - 使用 [free](#free) - 查看磁盘 I/O 使用状况 - 使用 [iotop](#iotop) -## 命令常见用法 +## 2. 命令常见用法 -### df +### 2.1. df > df 命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为 KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 > @@ -72,7 +50,7 @@ tmpfs 1032204 0 1032204 0% /dev/shm none 0 0 0 - /proc/sys/fs/binfmt_misc ``` -### du +### 2.2. du > du 命令也是查看使用空间的,但是与 df 命令不同的是:du 命令是对文件和目录磁盘使用的空间的查看,还是和 df 命令有一些区别的。 > @@ -124,13 +102,13 @@ root@localhost [test]# du 32 scf ``` -### top +### 2.3. top > top 命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过 top 命令所提供的互动式界面,用热键可以管理。 > > 参考:http://man.linuxde.net/top -### free +### 2.4. free > free 命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。 > @@ -151,7 +129,7 @@ Mem: 2016 1973 42 0 163 1497 Swap: 4094 0 4094 ``` -### iotop +### 2.5. iotop > iotop 命令是一个用来监视磁盘 I/O 使用状况的 top 类工具。iotop 具有与 top 相似的 UI,其中包括 PID、用户、I/O、进程等相关信息。Linux 下的 IO 统计工具如 iostat,nmon 等大多数是只能统计到 per 设备的读写情况,如果你想知道每个进程是如何使用 IO 的就比较麻烦,使用 iotop 命令可以很方便的查看。 > diff --git a/docs/linux/cli/Linux系统管理.md b/docs/linux/cli/Linux系统管理.md index 3e3a185..5a1b4ea 100644 --- a/docs/linux/cli/Linux系统管理.md +++ b/docs/linux/cli/Linux系统管理.md @@ -1,37 +1,8 @@ ---- -title: Linux 系统管理 -date: 2018-02-27 -categories: - - linux -tags: - - linux - - command ---- - # Linux 系统管理 > 关键词:`lsb_release`, `reboot`, `exit`, `shutdown`, `date`, `mount`, `umount`, `ps`, `kill`, `systemctl`, `service`, `crontab` - - -- [Linux 系统管理要点](#linux-系统管理要点) -- [命令常见用法](#命令常见用法) - - [lsb_release](#lsb_release) - - [reboot](#reboot) - - [exit](#exit) - - [shutdown](#shutdown) - - [date](#date) - - [mount](#mount) - - [umount](#umount) - - [ps](#ps) - - [kill](#kill) - - [systemctl](#systemctl) - - [service](#service) - - [crontab](#crontab) - - - -## Linux 系统管理要点 +## 1. Linux 系统管理要点 - 查看 Linux 系统发行版本 - 使用 [lsb_release](#lsb_release)(此命令适用于所有的 Linux 发行版本) @@ -49,9 +20,9 @@ tags: - 启动、停止、重启、关闭、显示系统服务(Centos7 以前),使用 [service](#service) - 管理需要周期性执行的任务,使用 [crontab](#crontab) -## 命令常见用法 +## 2. 命令常见用法 -### lsb_release +### 2.1. lsb_release lsb_release 不是 bash 默认命令,如果要使用,需要先安装。 @@ -60,7 +31,7 @@ lsb_release 不是 bash 默认命令,如果要使用,需要先安装。 1. 执行 `yum provides lsb_release`,查看支持 lsb_release 命令的包。 2. 选择合适版本,执行类似这样的安装命令:`yum install -y redhat-lsb-core-4.1-27.el7.centos.1.x86_64` -### reboot +### 2.2. reboot > reboot 命令用来重新启动正在运行的 Linux 操作系统。 > @@ -73,7 +44,7 @@ reboot # 重开机。 reboot -w # 做个重开机的模拟(只有纪录并不会真的重开机)。 ``` -### exit +### 2.3. exit > exit 命令同于退出 shell,并返回给定值。在 shell 脚本中可以终止当前脚本执行。执行 exit 可使 shell 以指定的状态值退出。若不设置状态值参数,则 shell 以预设值退出。状态值 0 代表执行成功,其他值代表执行失败。 > @@ -106,7 +77,7 @@ if [ "$EXCODE" == "0" ]; then fi ``` -### shutdown +### 2.4. shutdown > shutdown 命令用来系统关机命令。shutdown 指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。 > @@ -122,7 +93,7 @@ shutdown -h now shutdown +5 "System will shutdown after 5 minutes" ``` -### date +### 2.5. date > date 命令是显示或设置系统时间与日期。 > @@ -188,7 +159,7 @@ difference=$(( end - start )) echo $difference seconds. ``` -### mount +### 2.6. mount > mount 命令用于挂载文件系统到指定的挂载点。此命令的最常用于挂载 cdrom,使我们可以访问 cdrom 中的数据,因为你将光盘插入 cdrom 中,Linux 并不会自动挂载,必须使用 Linux mount 命令来手动完成挂载。 > @@ -208,7 +179,7 @@ mount -o ro /dev/hda1 /mnt mount -o loop /tmp/image.iso /mnt/cdrom ``` -### umount +### 2.7. umount > umount 命令用于卸载已经挂载的文件系统。利用设备名或挂载点都能 umount 文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。 > @@ -226,7 +197,7 @@ umount -v /mnt/mymount/ /tmp/diskboot.img umounted ``` -### ps +### 2.8. ps > ps 命令用于报告当前系统的进程状态。可以搭配 kill 指令随时中断、删除不必要的程序。ps 命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。 > @@ -242,7 +213,7 @@ ps aux | sort -rnk 4 ps aux | sort -nk 3 ``` -### kill +### 2.9. kill > kill 命令用来删除执行中的程序或工作。kill 可将指定的信息送至程序。预设的信息为 SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序。程序或工作的编号可利用 ps 指令或 job 指令查看。 > @@ -280,7 +251,7 @@ kill 3268 -bash: kill: (3268) - 没有那个进程 ``` -### systemctl +### 2.10. systemctl > systemctl 命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。 > @@ -316,7 +287,7 @@ sudo systemctl stop firewalld.service sudo systemctl disable firewalld.service ``` -### service +### 2.11. service > service 命令是 Redhat Linux 兼容的发行版中用来控制系统服务的实用工具,它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。 > @@ -339,7 +310,7 @@ service network restart 弹出界面 eth0: [ 确定 ] ``` -### crontab +### 2.12. crontab > crontab 命令被用来提交和管理用户的需要周期性执行的任务,与 windows 下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动 crond 进程,crond 进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。 > diff --git a/docs/linux/cli/Linux网络管理.md b/docs/linux/cli/Linux网络管理.md index ea01a90..a3b7c14 100644 --- a/docs/linux/cli/Linux网络管理.md +++ b/docs/linux/cli/Linux网络管理.md @@ -1,42 +1,8 @@ ---- -title: Linux 网络管理 -date: 2018-02-27 -categories: - - linux -tags: - - linux - - command ---- - # Linux 网络管理 > 关键词:`curl`, `wget`, `telnet`, `ip`, `hostname`, `ifconfig`, `route`, `ssh`, `ssh-keygen`, `firewalld`, `iptables`, `host`, `nslookup`, `nc`/`netcat`, `ping`, `traceroute`, `netstat` - - -- [Linux 网络应用要点](#linux-网络应用要点) -- [命令常见用法](#命令常见用法) - - [curl](#curl) - - [wget](#wget) - - [telnet](#telnet) - - [ip](#ip) - - [hostname](#hostname) - - [ifconfig](#ifconfig) - - [route](#route) - - [ssh](#ssh) - - [ssh-keygen](#ssh-keygen) - - [firewalld](#firewalld) - - [iptables](#iptables) - - [host](#host) - - [nslookup](#nslookup) - - [nc/netcat](#ncnetcat) - - [ping](#ping) - - [traceroute](#traceroute) - - [netstat](#netstat) - - - -## Linux 网络应用要点 +## 1. Linux 网络应用要点 - 下载文件 - 使用 [curl](#curl)、[wget](#wget) - telnet 方式登录远程主机,对远程主机进行管理 - 使用 [telnet](#telnet) @@ -54,9 +20,9 @@ tags: - 追踪数据在网络上的传输时的全部路径 - 使用 [traceroute](#traceroute) - 查看当前工作的端口信息 - 使用 [netstat](#netstat) -## 命令常见用法 +## 2. 命令常见用法 -### curl +### 2.1. curl > curl 命令是一个利用 URL 规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称 curl 为下载工具。作为一款强力工具,curl 支持包括 HTTP、HTTPS、ftp 等众多协议,还支持 POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl 可以祝一臂之力。 > @@ -73,7 +39,7 @@ $ curl http://man.linuxde.net/test.iso -o filename.iso --progress ########################################## 100.0% ``` -### wget +### 2.2. wget > wget 命令用来从指定的 URL 下载文件。 > @@ -86,7 +52,7 @@ $ curl http://man.linuxde.net/test.iso -o filename.iso --progress $ wget http://www.linuxde.net/testfile.zip ``` -### telnet +### 2.3. telnet > telnet 命令用于登录远程主机,对远程主机进行管理。 > @@ -107,7 +73,7 @@ Password: Login incorrect ``` -### ip +### 2.4. ip > ip 命令用来查看或操纵 Linux 主机的路由、网络设备、策略路由和隧道,是 Linux 下较新的功能强大的网络配置工具。 > @@ -137,7 +103,7 @@ $ ip route del default # 删除默认路由 $ ip route delete 192.168.1.0/24 dev eth0 # 删除路由 ``` -### hostname +### 2.5. hostname > hostname 命令用于查看和设置系统的主机名称。环境变量 HOSTNAME 也保存了当前的主机名。在使用 hostname 命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。如果需要永久修改主机名,需要同时修改 `/etc/hosts` 和 `/etc/sysconfig/network` 的相关内容。 > @@ -150,7 +116,7 @@ $ hostname AY1307311912260196fcZ ``` -### ifconfig +### 2.6. ifconfig > ifconfig 命令被用于查看和配置 Linux 内核中网络接口的网络参数。用 ifconfig 命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。 > @@ -178,7 +144,7 @@ lo Link encap:Local Loopback RX bytes:5079451 (4.8 MiB) TX bytes:5079451 (4.8 MiB) ``` -### route +### 2.7. route > route 命令用来查看和设置 Linux 内核中的网络路由表,route 命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。 > @@ -205,7 +171,7 @@ route add default gw 192.168.120.240 # 添加默认网关 route del default gw 192.168.120.240 # 删除默认网关 ``` -### ssh +### 2.8. ssh > ssh 命令是 openssh 套件中的客户端连接工具,可以给予 ssh 加密协议实现安全的远程登录服务器。 > @@ -222,19 +188,19 @@ ssh -p 2211 root@140.206.185.170 引申阅读:[ssh 背后的故事](https://linux.cn/article-8476-1.html) -### ssh-keygen +### 2.9. ssh-keygen > ssh-keygen 命令用于为 ssh 生成、管理和转换认证密钥,它支持 RSA 和 DSA 两种认证密钥。 > > 参考:http://man.linuxde.net/ssh-keygen -### firewalld +### 2.10. firewalld > firewalld 命令是 Linux 上的防火墙软件(Centos7 默认防火墙)。 > > 参考:https://www.cnblogs.com/moxiaoan/p/5683743.html -#### firewalld 的基本使用 +#### 2.10.1. firewalld 的基本使用 - 启动 - systemctl start firewalld - 关闭 - systemctl stop firewalld @@ -242,7 +208,7 @@ ssh -p 2211 root@140.206.185.170 - 开机禁用 - systemctl disable firewalld - 开机启用 - systemctl enable firewalld -#### 使用 systemctl 管理 firewalld 服务 +#### 2.10.2. 使用 systemctl 管理 firewalld 服务 systemctl 是 CentOS7 的服务管理工具中主要的工具,它融合之前 service 和 chkconfig 的功能于一体。 @@ -256,7 +222,7 @@ systemctl 是 CentOS7 的服务管理工具中主要的工具,它融合之前 - 查看已启动的服务列表 - systemctl list-unit-files|grep enabled - 查看启动失败的服务列表 - systemctl --failed -#### 配置 firewalld-cmd +#### 2.10.3. 配置 firewalld-cmd - 查看版本 - firewall-cmd --version - 查看帮助 - firewall-cmd --help @@ -269,14 +235,14 @@ systemctl 是 CentOS7 的服务管理工具中主要的工具,它融合之前 - 取消拒绝状态 - firewall-cmd --panic-off - 查看是否拒绝 - firewall-cmd --query-panic -#### 在防火墙中开放一个端口 +#### 2.10.4. 在防火墙中开放一个端口 - 添加(--permanent 永久生效,没有此参数重启后失效) - firewall-cmd --zone=public --add-port=80/tcp --permanent - 重新载入 - firewall-cmd --reload - 查看 - firewall-cmd --zone= public --query-port=80/tcp - 删除 - firewall-cmd --zone= public --remove-port=80/tcp --permanent -### iptables +### 2.11. iptables > iptables 命令是 Linux 上常用的防火墙软件,是 netfilter 项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。 > @@ -320,7 +286,7 @@ Chain OUTPUT (policy ACCEPT 3382K packets, 1819M bytes) 5075 589K ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0 ``` -### host +### 2.12. host > host 命令是常用的分析域名查询工具,可以用来测试域名系统工作是否正常。 > @@ -347,7 +313,7 @@ www.jsdig.com. 463 IN CNAME host.1.jsdig.com. Received 54 bytes from 202.96.104.15#53 in 0 ms ``` -### nslookup +### 2.13. nslookup > nslookup 命令是常用域名查询工具,就是查 DNS 信息用的命令。 > @@ -366,7 +332,7 @@ Name: host.1.jsdig.com Address: 100.42.212.8 ``` -### nc/netcat +### 2.14. nc/netcat > nc 命令是 netcat 命令的简称,都是用来设置路由器。 > @@ -386,7 +352,7 @@ Address: 100.42.212.8 [root@localhost ~]# nc -u -z -w2 192.168.0.1 1-1000 # 扫描192.168.0.3 的端口 范围是 1-1000 ``` -### ping +### 2.15. ping > ping 命令用来测试主机之间网络的连通性。执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。 > @@ -408,7 +374,7 @@ PING host.1.jsdig.com (100.42.212.8) 56(84) bytes of data. rtt min/avg/max/mdev = 174.068/176.916/178.182/1.683 ms ``` -### traceroute +### 2.16. traceroute > traceroute 命令用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是 40 字节。 > @@ -433,7 +399,7 @@ traceroute to www.58.com (211.151.111.30), 30 hops max, 40 byte packets 12 211.151.111.30 (211.151.111.30) 35.161 ms 35.938 ms 36.005 ms ``` -### netstat +### 2.17. netstat > netstat 命令用来打印 Linux 中网络系统的状态信息,可让你得知整个 Linux 系统的网络情况。 > diff --git a/docs/linux/cli/Linux软件管理.md b/docs/linux/cli/Linux软件管理.md index 7292493..64b1487 100644 --- a/docs/linux/cli/Linux软件管理.md +++ b/docs/linux/cli/Linux软件管理.md @@ -1,27 +1,8 @@ ---- -title: Linux 软件管理 -date: 2018-02-26 -categories: - - linux -tags: - - linux ---- - # Linux 软件管理 > 关键词:`rpm`, `yum`, `apt-get` - - -- [rpm](#rpm) -- [yum](#yum) - - [yum 源](#yum-源) -- [apt-get](#apt-get) -- [参考资料](#参考资料) - - - -## rpm +## 1. rpm > rpm 命令是 RPM 软件包的管理工具。rpm 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。 > @@ -83,7 +64,7 @@ rpm -e proftpd-1 rpm -qa # 列出所有安装过的包 ``` -## yum +## 2. yum > yum 命令是在 Fedora 和 RedHat 以及 SUSE 中基于 rpm 的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理 RPM 软件包,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。 > @@ -141,7 +122,7 @@ yum clean headers #清除缓存目录下的 headers yum clean oldheaders #清除缓存目录下旧的 headers ``` -### yum 源 +### 2.1. yum 源 yum 的默认源是国外的,下载速度比较慢,所以最好替换为一个国内的 yum 源。 @@ -161,7 +142,7 @@ yum clean all yum makecache ``` -## apt-get +## 3. apt-get > apt-get 命令是 Debian Linux 发行版中的 APT 软件包管理工具。所有基于 Debian 的发行都使用这个包管理系统。deb 包可以把一个应用的文件包在一起,大体就如同 Windows 上的安装文件。 > @@ -202,7 +183,7 @@ apt-get upgrade apt-get dist-upgrade ``` -## 参考资料 +## 4. 参考资料 - http://man.linuxde.net/rpm - http://man.linuxde.net/yum diff --git a/docs/linux/cli/命令行的艺术.md b/docs/linux/cli/命令行的艺术.md index 8072d2a..16272b9 100644 --- a/docs/linux/cli/命令行的艺术.md +++ b/docs/linux/cli/命令行的艺术.md @@ -1,7 +1,6 @@ -> 转载自 https://github.com/jlevy/the-art-of-command-line - -*[Čeština](README-cs.md) ∙ [Deutsch](README-de.md) ∙ [Ελληνικά](README-el.md) ∙ [English](../README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Indonesia](README-id.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Română](README-ro.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +> 转载自 https://github.com/jlevy/the-art-of-command-line +_[Čeština](README-cs.md) ∙ [Deutsch](README-de.md) ∙ [Ελληνικά](README-el.md) ∙ [English](../README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Indonesia](README-id.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Română](README-ro.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)_ # 命令行的艺术 @@ -19,7 +18,6 @@ - [更多资源](#更多资源) - [免责声明](#免责声明) -

熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时,发现的一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了。 @@ -36,7 +34,7 @@ 涵盖范围: -- 这篇文章不仅能帮助刚接触命令行的新手,而且对具有经验的人也大有裨益。本文致力于做到*覆盖面广*(涉及所有重要的内容),*具体*(给出具体的最常用的例子),以及*简洁*(避免冗余的内容,或是可以在其他地方轻松查到的细枝末节)。在特定应用场景下,本文的内容属于基本功或者能帮助您节约大量的时间。 +- 这篇文章不仅能帮助刚接触命令行的新手,而且对具有经验的人也大有裨益。本文致力于做到*覆盖面广*(涉及所有重要的内容),_具体_(给出具体的最常用的例子),以及*简洁*(避免冗余的内容,或是可以在其他地方轻松查到的细枝末节)。在特定应用场景下,本文的内容属于基本功或者能帮助您节约大量的时间。 - 本文主要为 Linux 所写,但在[仅限 OS X 系统](#仅限-os-x-系统)章节和[仅限 Windows 系统](#仅限-windows-系统)章节中也包含有对应操作系统的内容。除去这两个章节外,其它的内容大部分均可在其他类 Unix 系统或 OS X,甚至 Cygwin 中得到应用。 - 本文主要关注于交互式 Bash,但也有很多技巧可以应用于其他 shell 和 Bash 脚本当中。 - 除去“标准的”Unix 命令,本文还包括了一些依赖于特定软件包的命令(前提是它们具有足够的价值)。 @@ -47,7 +45,6 @@ `pip` 或 `brew`(以及其它合适的包管理器)来安装依赖的程序。 - 遇到问题的话,请尝试使用 [Explainshell](http://explainshell.com/) 去获取相关命令、参数、管道等内容的解释。 - ## 基础 - 学习 Bash 的基础知识。具体地,在命令行中输入 `man bash` 并至少全文浏览一遍; 它理解起来很简单并且不冗长。其他的 shell 可能很好用,但 Bash 的功能已经足够强大并且到几乎总是可用的( 如果你*只*学习 zsh,fish 或其他的 shell 的话,在你自己的设备上会显得很方便,但过度依赖这些功能会给您带来不便,例如当你需要在服务器上工作时)。 @@ -74,33 +71,31 @@ - 学会使用 `apt-get`,`yum`,`dnf` 或 `pacman` (具体使用哪个取决于你使用的 Linux 发行版)来查找和安装软件包。并确保你的环境中有 `pip` 来安装基于 Python 的命令行工具 (接下来提到的部分程序使用 `pip` 来安装会很方便)。 - ## 日常使用 - 在 Bash 中,可以通过按 **Tab** 键实现自动补全参数,使用 **ctrl-r** 搜索命令行历史记录(按下按键之后,输入关键字便可以搜索,重复按下 **ctrl-r** 会向后查找匹配项,按下 **Enter** 键会执行当前匹配的命令,而按下右方向键会将匹配项放入当前行中,不会直接执行,以便做出修改)。 -- 在 Bash 中,可以按下 **ctrl-w** 删除你键入的最后一个单词,**ctrl-u** 可以删除行内光标所在位置之前的内容,**alt-b** 和 **alt-f** 可以以单词为单位移动光标,**ctrl-a** 可以将光标移至行首,**ctrl-e** 可以将光标移至行尾,**ctrl-k** 可以删除光标至行尾的所有内容,**ctrl-l** 可以清屏。键入 `man readline` 可以查看 Bash 中的默认快捷键。内容有很多,例如 **alt-.** 循环地移向前一个参数,而 **alt-*** 可以展开通配符。 +- 在 Bash 中,可以按下 **ctrl-w** 删除你键入的最后一个单词,**ctrl-u** 可以删除行内光标所在位置之前的内容,**alt-b** 和 **alt-f** 可以以单词为单位移动光标,**ctrl-a** 可以将光标移至行首,**ctrl-e** 可以将光标移至行尾,**ctrl-k** 可以删除光标至行尾的所有内容,**ctrl-l** 可以清屏。键入 `man readline` 可以查看 Bash 中的默认快捷键。内容有很多,例如 **alt-.** 循环地移向前一个参数,而 **alt-\*** 可以展开通配符。 +* 你喜欢的话,可以执行 `set -o vi` 来使用 vi 风格的快捷键,而执行 `set -o emacs` 可以把它改回来。 -- 你喜欢的话,可以执行 `set -o vi` 来使用 vi 风格的快捷键,而执行 `set -o emacs` 可以把它改回来。 +* 为了便于编辑长命令,在设置你的默认编辑器后(例如 `export EDITOR=vim`),**ctrl-x** **ctrl-e** 会打开一个编辑器来编辑当前输入的命令。在 vi 风格下快捷键则是 **escape-v**。 -- 为了便于编辑长命令,在设置你的默认编辑器后(例如 `export EDITOR=vim`),**ctrl-x** **ctrl-e** 会打开一个编辑器来编辑当前输入的命令。在 vi 风格下快捷键则是 **escape-v**。 +* 键入 `history` 查看命令行历史记录,再用 `!n`(`n` 是命令编号)就可以再次执行。其中有许多缩写,最有用的大概就是 `!$`, 它用于指代上次键入的参数,而 `!!` 可以指代上次键入的命令了(参考 man 页面中的“HISTORY EXPANSION”)。不过这些功能,你也可以通过快捷键 **ctrl-r** 和 **alt-.** 来实现。 -- 键入 `history` 查看命令行历史记录,再用 `!n`(`n` 是命令编号)就可以再次执行。其中有许多缩写,最有用的大概就是 `!$`, 它用于指代上次键入的参数,而 `!!` 可以指代上次键入的命令了(参考 man 页面中的“HISTORY EXPANSION”)。不过这些功能,你也可以通过快捷键 **ctrl-r** 和 **alt-.** 来实现。 +* `cd` 命令可以切换工作路径,输入 `cd \~` 可以进入 home 目录。要访问你的 home 目录中的文件,可以使用前缀 `\~`(例如 `\~/.bashrc`)。在 `sh` 脚本里则用环境变量 `$HOME` 指代 home 目录的路径。 -- `cd` 命令可以切换工作路径,输入 `cd \~` 可以进入 home 目录。要访问你的 home 目录中的文件,可以使用前缀 `\~`(例如 `\~/.bashrc`)。在 `sh` 脚本里则用环境变量 `$HOME` 指代 home 目录的路径。 +* 回到前一个工作路径:`cd -`。 -- 回到前一个工作路径:`cd -`。 +* 如果你输入命令的时候中途改了主意,按下 **alt-#** 在行首添加 `#` 把它当做注释再按下回车执行(或者依次按下 **ctrl-a**, **#**, **enter**)。这样做的话,之后借助命令行历史记录,你可以很方便恢复你刚才输入到一半的命令。 -- 如果你输入命令的时候中途改了主意,按下 **alt-#** 在行首添加 `#` 把它当做注释再按下回车执行(或者依次按下 **ctrl-a**, **#**, **enter**)。这样做的话,之后借助命令行历史记录,你可以很方便恢复你刚才输入到一半的命令。 +* 使用 `xargs` ( 或 `parallel`)。他们非常给力。注意到你可以控制每行参数个数(`-L`)和最大并行数(`-P`)。如果你不确定它们是否会按你想的那样工作,先使用 `xargs echo` 查看一下。此外,使用 `-I{}` 会很方便。例如: -- 使用 `xargs` ( 或 `parallel`)。他们非常给力。注意到你可以控制每行参数个数(`-L`)和最大并行数(`-P`)。如果你不确定它们是否会按你想的那样工作,先使用 `xargs echo` 查看一下。此外,使用 `-I{}` 会很方便。例如: ```bash find . -name '*.py' | xargs grep some_function cat hosts | xargs -I{} ssh root@{} hostname ``` - - `pstree -p` 以一种优雅的方式展示进程树。 - 使用 `pgrep` 和 `pkill` 根据名字查找进程或发送信号(`-f` 参数通常有用)。 @@ -126,28 +121,32 @@ - 当变量和文件名中包含空格的时候要格外小心。Bash 变量要用引号括起来,比如 `"$FOO"`。尽量使用 `-0` 或 `-print0` 选项以便用 NULL 来分隔文件名,例如 `locate -0 pattern | xargs -0 ls -al` 或 `find / -print0 -type d | xargs -0 ls -al`。如果 for 循环中循环访问的文件名含有空字符(空格、tab 等字符),只需用 `IFS=$'\n'` 把内部字段分隔符设为换行符。 - 在 Bash 脚本中,使用 `set -x` 去调试输出(或者使用它的变体 `set -v`,它会记录原始输入,包括多余的参数和注释)。尽可能地使用严格模式:使用 `set -e` 令脚本在发生错误时退出而不是继续运行;使用 `set -u` 来检查是否使用了未赋值的变量;试试 `set -o pipefail`,它可以监测管道中的错误。当牵扯到很多脚本时,使用 `trap` 来检测 ERR 和 EXIT。一个好的习惯是在脚本文件开头这样写,这会使它能够检测一些错误,并在错误发生时中断程序并输出信息: + ```bash set -euo pipefail trap "echo 'error: Script failed: see failed command above'" ERR ``` - 在 Bash 脚本中,子 shell(使用括号 `(...)`)是一种组织参数的便捷方式。一个常见的例子是临时地移动工作路径,代码如下: + ```bash # do something in current dir (cd /some/other/dir && other-command) # continue in original dir ``` -- 在 Bash 中,变量有许多的扩展方式。`${name:?error message}` 用于检查变量是否存在。此外,当 Bash 脚本只需要一个参数时,可以使用这样的代码 `input_file=${1:?usage: $0 input_file}`。在变量为空时使用默认值:`${name:-default}`。如果你要在之前的例子中再加一个(可选的)参数,可以使用类似这样的代码 `output_file=${2:-logfile}`,如果省略了 $2,它的值就为空,于是 `output_file` 就会被设为 `logfile`。数学表达式:`i=$(( (i + 1) % 5 ))`。序列:`{1..10}`。截断字符串:`${var%suffix}` 和 `${var#prefix}`。例如,假设 `var=foo.pdf`,那么 `echo ${var%.pdf}.txt` 将输出 `foo.txt`。 +- 在 Bash 中,变量有许多的扩展方式。`${name:?error message}` 用于检查变量是否存在。此外,当 Bash 脚本只需要一个参数时,可以使用这样的代码 `input_file=${1:?usage: $0 input_file}`。在变量为空时使用默认值:`${name:-default}`。如果你要在之前的例子中再加一个(可选的)参数,可以使用类似这样的代码 `output_file=${2:-logfile}`,如果省略了 \$2,它的值就为空,于是 `output_file` 就会被设为 `logfile`。数学表达式:`i=$(( (i + 1) % 5 ))`。序列:`{1..10}`。截断字符串:`${var%suffix}` 和 `${var#prefix}`。例如,假设 `var=foo.pdf`,那么 `echo ${var%.pdf}.txt` 将输出 `foo.txt`。 - 使用括号扩展(`{`...`}`)来减少输入相似文本,并自动化文本组合。这在某些情况下会很有用,例如 `mv foo.{txt,pdf} some-dir`(同时移动两个文件),`cp somefile{,.bak}`(会被扩展成 `cp somefile somefile.bak`)或者 `mkdir -p test-{a,b,c}/subtest-{1,2,3}`(会被扩展成所有可能的组合,并创建一个目录树)。 - 通过使用 `<(some command)` 可以将输出视为文件。例如,对比本地文件 `/etc/hosts` 和一个远程文件: + ```bash diff /etc/hosts <(ssh somehost cat /etc/hosts) ``` - 编写脚本时,你可能会想要把代码都放在大括号里。缺少右括号的话,代码就会因为语法错误而无法执行。如果你的脚本是要放在网上分享供他人使用的,这样的写法就体现出它的好处了,因为这样可以防止下载不完全代码被执行。 + ```bash { # 在这里写代码 @@ -158,13 +157,14 @@ - 在 Bash 中,同时重定向标准输出和标准错误:`some-command >logfile 2>&1` 或者 `some-command &>logfile`。通常,为了保证命令不会在标准输入里残留一个未关闭的文件句柄捆绑在你当前所在的终端上,在命令后添加 `>> 2+3 5 ``` - ## 文件及数据处理 - 在当前目录下通过文件名查找一个文件,使用类似于这样的命令:`find . -iname '*something*'`。在所有路径下通过文件名查找文件,使用 `locate something` (但注意到 `updatedb` 可能没有对最近新建的文件建立索引,所以你可能无法定位到这些未被索引的文件)。 @@ -222,7 +223,7 @@ - 要处理 Excel 或 CSV 文件的话,[csvkit](https://github.com/onyxfish/csvkit) 提供了 `in2csv`,`csvcut`,`csvjoin`,`csvgrep` 等方便易用的工具。 -- 当你要处理 Amazon S3 相关的工作的时候,[`s3cmd`](https://github.com/s3tools/s3cmd) 是一个很方便的工具而 [`s4cmd`](https://github.com/bloomreach/s4cmd) 的效率更高。Amazon 官方提供的 [`aws`](https://github.com/aws/aws-cli) 以及 [`saws`](https://github.com/donnemartin/saws) 是其他 AWS 相关工作的基础,值得学习。 +- 当你要处理 Amazon S3 相关的工作的时候,[`s3cmd`](https://github.com/s3tools/s3cmd) 是一个很方便的工具而 [`s4cmd`](https://github.com/bloomreach/s4cmd) 的效率更高。Amazon 官方提供的 [`aws`](https://github.com/aws/aws-cli) 以及 [`saws`](https://github.com/donnemartin/saws) 是其他 AWS 相关工作的基础,值得学习。 - 了解如何使用 `sort` 和 `uniq`,包括 uniq 的 `-u` 参数和 `-d` 参数,具体内容在后文单行脚本节中。另外可以了解一下 `comm`。 @@ -241,11 +242,13 @@ - 了解如何使用 `awk` 和 `sed` 来进行简单的数据处理。 参阅 [One-liners](#one-liners) 获取示例。 - 替换一个或多个文件中出现的字符串: + ```bash perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt ``` - 使用 [`repren`](https://github.com/jlevy/repren) 来批量重命名文件,或是在多个文件中搜索替换内容。(有些时候 `rename` 命令也可以批量重命名,但要注意,它在不同 Linux 发行版中的功能并不完全一样。) + ```bash # 将文件、目录和内容全部重命名 foo -> bar: repren --full --preserve-case --from foo --to bar . @@ -256,11 +259,12 @@ ``` - 根据 man 页面的描述,`rsync` 是一个快速且非常灵活的文件复制工具。它闻名于设备之间的文件同步,但其实它在本地情况下也同样有用。在安全设置允许下,用 `rsync` 代替 `scp` 可以实现文件续传,而不用重新从头开始。它同时也是删除大量文件的[最快方法](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html)之一: + ```bash mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` -- 若要在复制文件时获取当前进度,可使用 `pv`,[`pycp`](https://github.com/dmerejkowsky/pycp),[`progress`](https://github.com/Xfennec/progress),`rsync --progress`。若所执行的复制为block块拷贝,可以使用 `dd status=progress`。 +- 若要在复制文件时获取当前进度,可使用 `pv`,[`pycp`](https://github.com/dmerejkowsky/pycp),[`progress`](https://github.com/Xfennec/progress),`rsync --progress`。若所执行的复制为 block 块拷贝,可以使用 `dd status=progress`。 - 使用 `shuf` 可以以行为单位来打乱文件的内容或从一个文件中随机选取多行。 @@ -277,6 +281,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 制作二进制差分文件(Delta 压缩),使用 `xdelta3`。 - 使用 `iconv` 更改文本编码。需要更高级的功能,可以使用 `uconv`,它支持一些高级的 Unicode 功能。例如,这条命令移除了所有重音符号: + ```bash uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt ``` @@ -290,6 +295,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 文件属性可以通过 `chattr` 进行设置,它比文件权限更加底层。例如,为了保护文件不被意外删除,可以使用不可修改标记:`sudo chattr +i /critical/directory/or/file` - 使用 `getfacl` 和 `setfacl` 以保存和恢复文件权限。例如: + ```bash getfacl -R /some/path > permissions.txt setfacl --restore=permissions.txt @@ -315,7 +321,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 用 [`ncdu`](https://dev.yorhel.nl/ncdu) 来查看磁盘使用情况,它比寻常的命令,如 `du -sh *`,更节省时间。 -- 查找正在使用带宽的套接字连接或进程,使用 [`iftop`](http://www.ex-parrot.com/\~pdw/iftop/) 或 [`nethogs`](https://github.com/raboof/nethogs)。 +- 查找正在使用带宽的套接字连接或进程,使用 [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) 或 [`nethogs`](https://github.com/raboof/nethogs)。 - `ab` 工具(Apache 中自带)可以简单粗暴地检查 web 服务器的性能。对于更复杂的负载测试,使用 `siege`。 @@ -331,7 +337,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 当调试一些之前出现的问题的时候,[`sar`](http://sebastien.godard.pagesperso-orange.fr/) 非常有用。它展示了 cpu、内存以及网络等的历史数据。 -- 关于更深层次的系统分析以及性能分析,看看 `stap`([SystemTap](https://sourceware.org/systemtap/wiki)),[`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)),以及[`sysdig`](https://github.com/draios/sysdig)。 +- 关于更深层次的系统分析以及性能分析,看看 `stap`([SystemTap](https://sourceware.org/systemtap/wiki)),[`perf`](),以及[`sysdig`](https://github.com/draios/sysdig)。 - 查看你当前使用的系统,使用 `uname`,`uname -a`(Unix/kernel 信息)或者 `lsb_release -a`(Linux 发行版信息)。 @@ -340,12 +346,12 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 如果你删除了一个文件,但通过 `du` 发现没有释放预期的磁盘空间,请检查文件是否被进程占用: `lsof | grep deleted | grep "filename-of-my-big-file"` - ## 单行脚本 一些命令组合的例子: - 当你需要对文本文件做集合交、并、差运算时,`sort` 和 `uniq` 会是你的好帮手。具体例子请参照代码后面的,此处假设 `a` 与 `b` 是两内容不同的文件。这种方式效率很高,并且在小文件和上 G 的文件上都能运用(注意尽管在 `/tmp` 在一个小的根分区上时你可能需要 `-T` 参数,但是实际上 `sort` 并不被内存大小约束),参阅前文中关于 `LC_ALL` 和 `sort` 的 `-u` 参数的部分。 + ```bash sort a b | uniq > c # c 是 a 并 b sort a b | uniq -d > c # c 是 a 交 b @@ -354,18 +360,20 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 使用 `grep . *`(每行都会附上文件名)或者 `head -100 *`(每个文件有一个标题)来阅读检查目录下所有文件的内容。这在检查一个充满配置文件的目录(如 `/sys`、`/proc`、`/etc`)时特别好用。 +* 计算文本文件第三列中所有数的和(可能比同等作用的 Python 代码快三倍且代码量少三倍): -- 计算文本文件第三列中所有数的和(可能比同等作用的 Python 代码快三倍且代码量少三倍): ```bash awk '{ x += $3 } END { print x }' myfile ``` - 如果你想在文件树上查看大小/日期,这可能看起来像递归版的 `ls -l` 但比 `ls -lR` 更易于理解: + ```bash find . -type f -ls ``` - 假设你有一个类似于 web 服务器日志文件的文本文件,并且一个确定的值只会出现在某些行上,假设一个 `acct_id` 参数在 URI 中。如果你想计算出每个 `acct_id` 值有多少次请求,使用如下代码: + ```bash egrep -o 'acct_id=[0-9]+' access.log | cut -d= -f2 | sort | uniq -c | sort -rn ``` @@ -373,6 +381,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 要持续监测文件改动,可以使用 `watch`,例如检查某个文件夹中文件的改变,可以用 `watch -d -n 2 'ls -rtlh | tail'`;或者在排查 WiFi 设置故障时要监测网络设置的更改,可以用 `watch -d -n 2 ifconfig`。 - 运行这个函数从这篇文档中随机获取一条技巧(解析 Markdown 文件并抽取项目): + ```bash function taocl() { curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README-zh.md| @@ -514,7 +523,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - [`sar`](http://sebastien.godard.pagesperso-orange.fr/):系统历史数据 -- [`iftop`](http://www.ex-parrot.com/\~pdw/iftop/) 或 [`nethogs`](https://github.com/raboof/nethogs):套接字及进程的网络利用情况 +- [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) 或 [`nethogs`](https://github.com/raboof/nethogs):套接字及进程的网络利用情况 - `ss`:套接字数据 @@ -526,13 +535,12 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `lsblk`:列出块设备信息:以树形展示你的磁盘以及磁盘分区信息 -- `lshw`,`lscpu`,`lspci`,`lsusb` 和 `dmidecode`:查看硬件信息,包括 CPU、BIOS、RAID、显卡、USB设备等 +- `lshw`,`lscpu`,`lspci`,`lsusb` 和 `dmidecode`:查看硬件信息,包括 CPU、BIOS、RAID、显卡、USB 设备等 - `lsmod` 和 `modinfo`:列出内核模块,并显示其细节 - `fortune`,`ddate` 和 `sl`:额,这主要取决于你是否认为蒸汽火车和莫名其妙的名人名言是否“有用” - ## 仅限 OS X 系统 以下是*仅限于* OS X 系统的技巧。 @@ -604,8 +612,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ## 免责声明 -除去特别小的工作,你编写的代码应当方便他人阅读。能力往往伴随着责任,你 *有能力* 在 Bash 中玩一些奇技淫巧并不意味着你应该去做!;) - +除去特别小的工作,你编写的代码应当方便他人阅读。能力往往伴随着责任,你 _有能力_ 在 Bash 中玩一些奇技淫巧并不意味着你应该去做!;) ## 授权条款 diff --git a/docs/linux/cli/查看Linux命令帮助信息.md b/docs/linux/cli/查看Linux命令帮助信息.md index e0e6078..83d0844 100644 --- a/docs/linux/cli/查看Linux命令帮助信息.md +++ b/docs/linux/cli/查看Linux命令帮助信息.md @@ -1,34 +1,11 @@ ---- -title: 查看 Linux 命令帮助信息 -date: 2018-09-26 -categories: - - linux -tags: - - linux - - command ---- - # 查看 Linux 命令帮助信息 > Linux 中有非常多的命令,想全部背下来是很困难的事。所以,我认为学习 Linux 的第一步,就是了解如何快速检索命令说明。 > > 关键词:`help`, `whatis`, `info`, `which`, `whereis`, `man` - -- [查看 Linux 命令帮助信息的要点](#查看-linux-命令帮助信息的要点) -- [命令常见用法](#命令常见用法) - - [help](#help) - - [whatis](#whatis) - - [info](#info) - - [which](#which) - - [whereis](#whereis) - - [man](#man) -- [参考资料](#参考资料) - - - -## 查看 Linux 命令帮助信息的要点 +## 1. 查看 Linux 命令帮助信息的要点 - 查看 Shell 内部命令的帮助信息 - 使用 [help](#help) - 查看命令的简要说明 - 使用 [whatis](#whatis) @@ -43,15 +20,15 @@ tags: > - [Linux 命令大全](http://man.linuxde.net/) > - [linux-command](https://github.com/jaywcjlove/linux-command) -## 命令常见用法 +## 2. 命令常见用法 -### help +### 2.1. help > help 命令用于查看 Shell 内部命令的帮助信息。而对于外部命令的帮助信息只能使用 man 或者 info 命令查看。 > > 参考:http://man.linuxde.net/help -### whatis +### 2.2. whatis > whatis 用于查询一个命令执行什么功能。 > @@ -67,7 +44,7 @@ $ whatis man $ whatis -w "loca*" ``` -### info +### 2.3. info > info 是 Linux 下 info 格式的帮助指令。 > @@ -80,7 +57,7 @@ $ whatis -w "loca*" $ info man ``` -### which +### 2.4. which > which 命令用于查找并显示给定命令的绝对路径,环境变量 PATH 中保存了查找命令时需要遍历的目录。which 指令会在环境变量$PATH 设置的目录里查找符合条件的文件。也就是说,使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。 > @@ -101,7 +78,7 @@ cd: shell built-in command cd 这个常用的命令竟然找不到啊!为什么呢?这是因为 cd 是 bash 内建的命令!但是 which 默认是找 PATH 内所规范的目录,所以当然一定找不到的! -### whereis +### 2.5. whereis > whereis 命令用来定位指令的二进制程序、源代码文件和 man 手册页等相关文件的路径。 > @@ -115,7 +92,7 @@ cd 这个常用的命令竟然找不到啊!为什么呢?这是因为 cd 是 whereis git # 将相关的文件都查找出来 ``` -### man +### 2.6. man > man 命令是 Linux 下的帮助指令,通过 man 指令可以查看 Linux 中的指令帮助、配置文件帮助和编程帮助等信息。 > @@ -129,7 +106,7 @@ $ man 3 printf # 查看 printf 命令的帮助手册中的第 3 类 $ man -k keyword # 根据命令中部分关键字来查询命令 ``` -#### man 要点 +#### 2.6.1. man 要点 在 man 的帮助手册中,可以使用 page up 和 page down 来上下翻页。 @@ -164,6 +141,6 @@ printf [builtins](1) - bash built-in commands, see bash(1) $ man 3 printf ``` -## 参考资料 +## 3. 参考资料 https://linuxtools-rst.readthedocs.io/zh_CN/latest/base/01_use_man.html diff --git a/docs/linux/ops/linux典型运维应用.md b/docs/linux/ops/linux典型运维应用.md index f8ed21f..5c33727 100644 --- a/docs/linux/ops/linux典型运维应用.md +++ b/docs/linux/ops/linux典型运维应用.md @@ -1,15 +1,10 @@ ---- -title: Linux 典型运维应用 -date: 2019-03-06 ---- - # Linux 典型运维应用 > 💡 如果没有特殊说明,本文的案例都是针对 Centos 发行版本。 -## 网络操作 +## 1. 网络操作 -### 无法访问外网域名 +### 1.1. 无法访问外网域名 (1)在 hosts 中添加本机实际 IP 和本机实际域名的映射 @@ -36,7 +31,7 @@ nameserver 8.8.8.8 (3)测试一下能否 ping 通 www.baidu.com -### 开启、关闭防火墙 +### 1.2. 开启、关闭防火墙 firewalld 的基本使用 @@ -88,9 +83,9 @@ systemctl 是 CentOS7 的服务管理工具中主要的工具,它融合之前 > :point_right: 参考:[CentOS7 使用 firewalld 打开关闭防火墙与端口](https://www.cnblogs.com/moxiaoan/p/5683743.html) -## 系统维护 +## 2. 系统维护 -### 使用 NTP 进行时间同步 +### 2.1. 使用 NTP 进行时间同步 (1)先安装时钟同步工具 ntp @@ -133,9 +128,9 @@ systemctl restart crond.service > :point_right: 参考:https://www.cnblogs.com/quchunhui/p/7658853.html -## 自动化脚本 +## 3. 自动化脚本 -### Linux 开机自启动脚本 +### 3.1. Linux 开机自启动脚本 (1)在 `/etc/rc.local` 文件中添加命令 @@ -221,7 +216,7 @@ $ update-rc.d mysql start 98 2 . > - https://blog.csdn.net/linuxshine/article/details/50717272 > - https://www.cnblogs.com/ssooking/p/6094740.html -### 定时执行脚本 +### 3.2. 定时执行脚本 (1)安装 crontab @@ -278,9 +273,9 @@ MAILTO=root > :point_right: 参考:[linux 定时执行脚本](https://blog.csdn.net/z_yong_cool/article/details/79288397) -## 配置 +## 4. 配置 -### 设置 Linux 启动模式 +### 4.1. 设置 Linux 启动模式 1. 停机(记得不要把 initdefault 配置为 0,因为这样会使 Linux 不能启动) 2. 单用户模式,就像 Win9X 下的安全模式 @@ -296,7 +291,7 @@ MAILTO=root $ sed -i 's/id:5:initdefault:/id:3:initdefault:/' /etc/inittab ``` -## 参考资料 +## 5. 参考资料 - [CentOS7 使用 firewalld 打开关闭防火墙与端口](https://www.cnblogs.com/moxiaoan/p/5683743.html) diff --git a/docs/linux/ops/samba使用详解.md b/docs/linux/ops/samba使用详解.md index f8ce05c..e7319ea 100644 --- a/docs/linux/ops/samba使用详解.md +++ b/docs/linux/ops/samba使用详解.md @@ -1,13 +1,3 @@ ---- -title: samba 使用详解 -date: 2018-09-28 -categories: - - linux -tags: - - linux - - windows ---- - # samba 使用详解 > samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件。 @@ -16,28 +6,6 @@ tags: > > 关键词:`samba`, `selinux` - - -- [1. 安装配置 samba](#1-安装配置-samba) - - [1.1. 查看是否已经安装 samba](#11-查看是否已经安装-samba) - - [1.2. 安装 samba 工具](#12-安装-samba-工具) - - [1.3. 配置 samba](#13-配置-samba) - - [1.4. 创建 samba 用户](#14-创建-samba-用户) - - [1.5. 启动 samba 服务](#15-启动-samba-服务) - - [1.6. 为 samba 添加防火墙规则](#16-为-samba-添加防火墙规则) - - [1.7. 测试 samba 服务](#17-测试-samba-服务) - - [1.8. 访问 samba 服务共享的目录](#18-访问-samba-服务共享的目录) -- [2. 配置详解](#2-配置详解) - - [2.1. samba 默认配置](#21-samba-默认配置) - - [2.2. 全局参数 [global]](#22-全局参数-global) - - [2.3. 共享参数 [共享名]](#23-共享参数-共享名) -- [3. 常见问题](#3-常见问题) - - [3.1. 你可能没有权限访问网络资源](#31-你可能没有权限访问网络资源) - - [3.2. window 下对 samba 的清理操作](#32-window-下对-samba-的清理操作) -- [4. 参考资料](#4-参考资料) - - - ## 1. 安装配置 samba 本文将以一个完整的示例来展示如何配置 samba 来实现 Linux 和 Windows 的文件共享。