完善自己平时积累的命令和使用示例
This commit is contained in:
parent
4af9bdd324
commit
bd1d58c152
|
|
@ -0,0 +1,14 @@
|
|||
ack
|
||||
===
|
||||
|
||||
比grep好用的文本搜索工具
|
||||
|
||||
## 示例
|
||||
|
||||
```
|
||||
# install
|
||||
apk install ack
|
||||
|
||||
# use
|
||||
ack
|
||||
```
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
apk
|
||||
===
|
||||
|
||||
Alpine Linux 下的包管理工具
|
||||
|
||||
## quick start
|
||||
|
||||
```
|
||||
apk install xxx
|
||||
apk search xxx # 支持正则
|
||||
apk info xxx # 查看包的详细信息
|
||||
apk show # list local package
|
||||
```
|
||||
|
||||
## 笔记
|
||||
|
||||
还是蛮喜欢 alpine 的,简单纯粹
|
||||
|
||||
```
|
||||
apk add iproute2 # ss vs netstat
|
||||
ss -ptl
|
||||
apk add drill # drill vs nslookup&dig
|
||||
|
||||
crond # 开启 cron 服务
|
||||
crontab -l -e
|
||||
|
||||
apk add xxx
|
||||
apk search -v xxx
|
||||
apk info -a xxx
|
||||
apk info
|
||||
echo -e "http://mirrors.aliyun.com/alpine/v3.6/main\nhttp://mirrors.aliyun.com/alpine/v3.6/community" > /etc/apk/repositories
|
||||
apk update
|
||||
|
||||
# storage
|
||||
ibu # alpine local backup
|
||||
|
||||
# network
|
||||
echo "shortname" > /etc/hostname
|
||||
hostname -F /etc/hostname
|
||||
/etc/hosts
|
||||
/etc/resolv.conf # conig DNS
|
||||
modprobe ipv6 # enable ipv6
|
||||
echo "ipv6" >> /etc/modules
|
||||
iface # config interface
|
||||
apk add iptables ip6tables iptables-doc
|
||||
/etc/init.d/networking restart # activate change
|
||||
apke add iputils # IPv6 traceroute
|
||||
traceroute6 ipv6.google.com
|
||||
awall # alpine wall
|
||||
# setup a openvpn server
|
||||
|
||||
# post-install
|
||||
/etc/apk/repositories
|
||||
apk add cherokee --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --allow-untrusted
|
||||
apk search -v --description 'NTP' # show description and search from description
|
||||
apk info -a zlib
|
||||
apk info -vv|sort
|
||||
apk info -r -R # require / depency
|
||||
apk version -v -l '<' # show available updates
|
||||
apk upgrade -U -a
|
||||
apk add -u xxx # update xxx
|
||||
|
||||
/etc/runlevels # runlevel
|
||||
apk add openrc # use openrc for init system
|
||||
rc-update add xxx # set to start on
|
||||
rc-service xxx start # equal -> /etc/init.d/xxx start
|
||||
rc-status
|
||||
|
||||
adduser xxx
|
||||
passwd xxx
|
||||
|
||||
apk add ansible # server
|
||||
ssh-keygen
|
||||
/etc/ansible/hosts
|
||||
apk add python # node
|
||||
ssh-copy-id
|
||||
|
||||
apk add man man-pages mdocml-apropos less less-doc
|
||||
export PAGER=less
|
||||
/etc/rc.conf # /etc/rc.conf -> funny character
|
||||
apk add bash bash-doc bash-completion # bash
|
||||
apk add util-linux pciutils usbutils coreutils binutils findutils grep # grep / awk
|
||||
apk add build-base gcc abuild binutils binutils-doc gcc-doc # compile
|
||||
apk add cmake cmake-doc extra-cmake-modules extra-cmake-modules-doc
|
||||
apk add ccache ccache-doc
|
||||
|
||||
apk add docker # docker
|
||||
rc-update add docker boot
|
||||
rc-service docker start
|
||||
apk add py-pip
|
||||
pip install docker-compose
|
||||
ln -s /usr/bin/docker-compose /usr/bin/doc
|
||||
|
||||
# application
|
||||
apk add openssh # ssh
|
||||
rc-update add sshd
|
||||
/etc/init.d/sshd start
|
||||
/etc/sshd_config
|
||||
apk add dropbear # another openssh implementation
|
||||
```
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
cloc
|
||||
===
|
||||
|
||||
代码行数统计
|
||||
|
||||
## quick start
|
||||
|
||||
```
|
||||
apk add cloc
|
||||
|
||||
cloc dir --exclude-dir # 代码行数统计
|
||||
```
|
||||
|
|
@ -7,13 +7,13 @@ curl
|
|||
|
||||
**curl命令** 是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
curl(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0">
|
||||
|
||||
|
|
@ -119,9 +119,9 @@ curl(选项)(参数)
|
|||
|
||||
</table>
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
**文件下载**
|
||||
**文件下载**
|
||||
|
||||
curl命令可以用来执行下载、发送各种HTTP请求,指定HTTP头部等操作。如果系统没有curl可以使用`yum install curl`安装,也可以下载安装。curl是将下载文件输出到stdout,将进度信息输出到stderr,不显示进度信息使用`--silent`选项。
|
||||
|
||||
|
|
@ -144,7 +144,7 @@ curl http://man.linuxde.net/test.iso -o filename.iso --progress
|
|||
######################################### 100.0%
|
||||
```
|
||||
|
||||
**断点续传**
|
||||
**断点续传**
|
||||
|
||||
curl能够从特定的文件偏移处继续下载,它可以通过指定一个便宜量来下载部分文件:
|
||||
|
||||
|
|
@ -155,7 +155,7 @@ curl URL/File -C 偏移量
|
|||
curl -C -URL
|
||||
```
|
||||
|
||||
**使用curl设置参照页字符串**
|
||||
**使用curl设置参照页字符串**
|
||||
|
||||
参照页是位于HTTP头部中的一个字符串,用来表示用户是从哪个页面到达当前页面的,如果用户点击网页A中的某个连接,那么用户就会跳转到B网页,网页B头部的参照页字符串就包含网页A的URL。
|
||||
|
||||
|
|
@ -165,7 +165,7 @@ curl -C -URL
|
|||
curl --referer http://www.google.com http://man.linuxde.net
|
||||
```
|
||||
|
||||
**用curl设置cookies**
|
||||
**用curl设置cookies**
|
||||
|
||||
使用`--cookie "COKKIES"`选项来指定cookie,多个cookie使用分号分隔:
|
||||
|
||||
|
|
@ -179,7 +179,7 @@ curl http://man.linuxde.net --cookie "user=root;pass=123456"
|
|||
curl URL --cookie-jar cookie_file
|
||||
```
|
||||
|
||||
**用curl设置用户代理字符串**
|
||||
**用curl设置用户代理字符串**
|
||||
|
||||
有些网站访问会提示只能使用IE浏览器来访问,这是因为这些网站设置了检查用户代理,可以使用curl把用户代理设置为IE,这样就可以访问了。使用`--user-agent`或者`-A`选项:
|
||||
|
||||
|
|
@ -194,7 +194,7 @@ curl URL -A "Mozilla/5.0"
|
|||
curl -H "Host:man.linuxde.net" -H "accept-language:zh-cn" URL
|
||||
```
|
||||
|
||||
**curl的带宽控制和下载配额**
|
||||
**curl的带宽控制和下载配额**
|
||||
|
||||
使用`--limit-rate`限制curl的下载速度:
|
||||
|
||||
|
|
@ -212,7 +212,7 @@ curl URL --max-filesize bytes
|
|||
|
||||
如果文件大小超出限制,命令则返回一个非0退出码,如果命令正常则返回0。
|
||||
|
||||
**用curl进行认证**
|
||||
**用curl进行认证**
|
||||
|
||||
使用curl选项 -u 可以完成HTTP或者FTP的认证,可以指定密码,也可以不指定密码在后续操作中输入密码:
|
||||
|
||||
|
|
@ -221,7 +221,7 @@ curl -u user:pwd http://man.linuxde.net
|
|||
curl -u user http://man.linuxde.net
|
||||
```
|
||||
|
||||
**只打印响应头部信息**
|
||||
**只打印响应头部信息**
|
||||
|
||||
通过`-I`或者`-head`可以只打印出HTTP头部信息:
|
||||
|
||||
|
|
@ -257,4 +257,10 @@ curl -d "param1=value1¶m2=value2" "http://www.wangchujiang.com"
|
|||
curl -l -H "Content-type: application/json" -X POST -d '{"phone":"13521389587","password":"test"}' http://wangchujiang.com/apis/users.json
|
||||
```
|
||||
|
||||
**获取本机外网ip**
|
||||
|
||||
```bash
|
||||
curl ipecho.net/plain
|
||||
```
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
dos2unix
|
||||
===
|
||||
|
||||
|
||||
将DOS格式文本文件转换成Unix格式
|
||||
|
||||
## 补充说明
|
||||
|
||||
**dos2unix命令** 用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以`\r\n`作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志的,表示成十六进制就是0A。DOS格式的文本文件在Linux底下,用较低版本的vi打开时行尾会显示`^M`,而且很多命令都无法很好的处理这种格式的文件,如果是个shell脚本,。而Unix格式的文本文件在Windows下用Notepad打开时会拼在一起显示。因此产生了两种格式文件相互转换的需求,对应的将UNIX格式文本文件转成成DOS格式的是unix2dos命令。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...]
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-k:保持输出文件的日期不变
|
||||
|
|
@ -24,11 +24,11 @@ dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...]
|
|||
-n:写入到新文件
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
参数:需要转换到文件。
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
最简单的用法就是dos2unix直接跟上文件名:
|
||||
|
||||
|
|
@ -58,5 +58,10 @@ dos2unix -k -o file1 file2 file3
|
|||
dos2unix -k -n oldfile newfile
|
||||
```
|
||||
|
||||
转换当前目录下所有文件
|
||||
|
||||
```
|
||||
find -type f | xargs dos2unix
|
||||
```
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -1,19 +1,19 @@
|
|||
du
|
||||
===
|
||||
|
||||
|
||||
显示每个文件和目录的磁盘使用空间
|
||||
|
||||
## 补充说明
|
||||
|
||||
**du命令** 也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
du [选项][文件]
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-a或-all 显示目录中个别文件的大小。
|
||||
|
|
@ -33,7 +33,7 @@ du [选项][文件]
|
|||
-l或--count-links 重复计算硬件链接的文件。
|
||||
```
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
显示目录或者文件所占空间:
|
||||
|
||||
|
|
@ -98,5 +98,10 @@ root@localhost [test]# du
|
|||
1288 test
|
||||
```
|
||||
|
||||
显示总和的大小且易读:
|
||||
|
||||
```
|
||||
du -sh $dir
|
||||
```
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -7,13 +7,13 @@ find
|
|||
|
||||
**find命令** 用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
find(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
|
||||
|
|
@ -73,7 +73,7 @@ find(选项)(参数)
|
|||
-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
起始目录:查找文件的起始目录。
|
||||
|
||||
|
|
@ -84,7 +84,7 @@ find(选项)(参数)
|
|||
find . -type f -name "*" | xargs grep "140.206.111.111"
|
||||
```
|
||||
|
||||
#### 根据文件或者正则表达式进行匹配
|
||||
#### 根据文件或者正则表达式进行匹配
|
||||
|
||||
列出当前目录及子目录下所有文件和文件夹
|
||||
|
||||
|
|
@ -111,7 +111,7 @@ find . \( -name "*.txt" -o -name "*.pdf" \)
|
|||
|
||||
或
|
||||
|
||||
find . -name "*.txt" -o -name "*.pdf"
|
||||
find . -name "*.txt" -o -name "*.pdf"
|
||||
```
|
||||
|
||||
匹配文件路径或者文件
|
||||
|
|
@ -132,7 +132,7 @@ find . -regex ".*\(\.txt\|\.pdf\)$"
|
|||
find . -iregex ".*\(\.txt\|\.pdf\)$"
|
||||
```
|
||||
|
||||
#### 否定参数
|
||||
#### 否定参数
|
||||
|
||||
找出/home下不是以.txt结尾的文件
|
||||
|
||||
|
|
@ -140,7 +140,7 @@ find . -iregex ".*\(\.txt\|\.pdf\)$"
|
|||
find /home ! -name "*.txt"
|
||||
```
|
||||
|
||||
#### 根据文件类型进行搜索
|
||||
#### 根据文件类型进行搜索
|
||||
|
||||
```
|
||||
find . -type 类型参数
|
||||
|
|
@ -156,7 +156,7 @@ find . -type 类型参数
|
|||
* **s** 套接字
|
||||
* **p** Fifo
|
||||
|
||||
#### 基于目录深度搜索
|
||||
#### 基于目录深度搜索
|
||||
|
||||
向下最大深度限制为3
|
||||
|
||||
|
|
@ -170,7 +170,7 @@ find . -maxdepth 3 -type f
|
|||
find . -mindepth 2 -type f
|
||||
```
|
||||
|
||||
#### 根据文件时间戳进行搜索
|
||||
#### 根据文件时间戳进行搜索
|
||||
|
||||
```
|
||||
find . -type f 时间戳
|
||||
|
|
@ -212,7 +212,7 @@ find . -type f -amin +10
|
|||
find . -type f -newer file.log
|
||||
```
|
||||
|
||||
#### 根据文件大小进行匹配
|
||||
#### 根据文件大小进行匹配
|
||||
|
||||
```
|
||||
find . -type f -size 文件大小单元
|
||||
|
|
@ -245,7 +245,7 @@ find . -type f -size -10k
|
|||
find . -type f -size 10k
|
||||
```
|
||||
|
||||
#### 删除匹配文件
|
||||
#### 删除匹配文件
|
||||
|
||||
删除当前目录下所有.txt文件
|
||||
|
||||
|
|
@ -253,7 +253,7 @@ find . -type f -size 10k
|
|||
find . -type f -name "*.txt" -delete
|
||||
```
|
||||
|
||||
#### 根据文件权限/所有权进行匹配
|
||||
#### 根据文件权限/所有权进行匹配
|
||||
|
||||
当前目录下搜索出权限为777的文件
|
||||
|
||||
|
|
@ -279,7 +279,7 @@ find . -type f -user tom
|
|||
find . -type f -group sunk
|
||||
```
|
||||
|
||||
#### 借助`-exec`选项与其他命令结合使用
|
||||
#### 借助`-exec`选项与其他命令结合使用
|
||||
|
||||
找出当前目录下所有root的文件,并把所有权更改为用户tom
|
||||
|
||||
|
|
@ -321,7 +321,7 @@ find . -type f -name "*.txt" -exec printf "File: %s\n" {} \;
|
|||
-exec ./text.sh {} \;
|
||||
```
|
||||
|
||||
#### 搜索但跳出指定的目录
|
||||
#### 搜索但跳出指定的目录
|
||||
|
||||
查找当前目录或者子目录下所有.txt文件,但是跳过子目录sk
|
||||
|
||||
|
|
@ -329,7 +329,7 @@ find . -type f -name "*.txt" -exec printf "File: %s\n" {} \;
|
|||
find . -path "./sk" -prune -o -name "*.txt" -print
|
||||
```
|
||||
|
||||
#### find其他技巧收集
|
||||
#### find其他技巧收集
|
||||
|
||||
要列出所有长度为零的文件
|
||||
|
||||
|
|
@ -373,5 +373,17 @@ find /data -owner bcotton
|
|||
find ~ -perm -o=r
|
||||
```
|
||||
|
||||
删除 mac 下自动生成的文件
|
||||
|
||||
```
|
||||
find ./ -name '__MACOSX' -depth -exec rm -rf {} \;
|
||||
```
|
||||
|
||||
统计代码行数
|
||||
|
||||
```
|
||||
find . -name "*.java"|xargs cat|grep -v ^$|wc -l # 代码行数统计, 排除空行
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
|
|||
|
|
@ -0,0 +1,42 @@
|
|||
# fishshell
|
||||
|
||||
比 bash 更好用的 shell
|
||||
|
||||
## quick start
|
||||
|
||||
> [fish-shell](http://fishshell.com):强烈推荐
|
||||
|
||||
配置文件: `fish_config`
|
||||
Running Commands: 兼容 bash 等shell的命令执行方式
|
||||
Getting Help: `help/man cmd -> browser/terminal`
|
||||
Syntax Highlighting: 实时检查命令是否正确
|
||||
Wildcards: 支持缩写 `*` 递归 匹配
|
||||
Pipes and Redirections: 使用 `^` 代表 stderr
|
||||
Autosuggestions: 自动建议, 可以使用 `Ctrl-f / ->` 来补全
|
||||
Tab Completions: 更强大的 tab 补全
|
||||
Variables: 使用 set 设置
|
||||
Exit Status: 使用 `echo $status` 替代 `$?`
|
||||
Exports (Shell Variables)
|
||||
Lists: all variables in fish are really lists
|
||||
Command Substitutions: 使用 `(cmd)` 来执行命令, 而不是 反引号、`$()`
|
||||
Combiners (And, Or, Not): 不支持使用符合来表示逻辑运算
|
||||
Functions:使用 `$argv` 替代 `$1`
|
||||
Conditionals (If, Else, Switch) / Functions / Loops: 更人性化的写法(参考 py)
|
||||
Prompt: `function fish_prompt` 实现
|
||||
Startup (Where's .bashrc?): `~/.config/fish/config.fish`,更好的方式是 autoloading-function、universal-variables
|
||||
Autoloading Functions: ` ~/.config/fish/functions/.`
|
||||
Universal Variables:a variable whose value is shared across all instances of fish
|
||||
|
||||
```
|
||||
set name 'czl' # 设置变量,替代 name=czl
|
||||
echo $name
|
||||
echo $status # exit status,替代 $?
|
||||
env # 环境变量
|
||||
set -x MyVariable SomeValue # 替代 export
|
||||
set -e MyVariable
|
||||
set PATH $PATH /usr/local/bin # 使用 lists 记录 PATH
|
||||
set -U fish_user_paths /usr/local/bin $fish_user_paths # 永久生效
|
||||
touch "testing_"(date +%s)".txt" # command subtitution,替代 `date +%s`
|
||||
cp file.txt file.txt.bak; and echo 'back success'; or echo 'back fail' # combiner
|
||||
functions # 列出 fish 下定义的函数
|
||||
```
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
gdb
|
||||
===
|
||||
|
||||
|
||||
功能强大的程序调试器
|
||||
|
||||
## 补充说明
|
||||
|
|
@ -25,7 +25,7 @@ gdb
|
|||
|
||||
<td>file <文件名></td>
|
||||
|
||||
<td>加载被调试的可执行程序文件。
|
||||
<td>加载被调试的可执行程序文件。
|
||||
因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。</td>
|
||||
|
||||
<td>(gdb) file gdb-sample</td>
|
||||
|
|
@ -36,7 +36,7 @@ gdb
|
|||
|
||||
<td>r</td>
|
||||
|
||||
<td>Run的简写,运行被调试的程序。
|
||||
<td>Run的简写,运行被调试的程序。
|
||||
如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。</td>
|
||||
|
||||
<td>(gdb) r</td>
|
||||
|
|
@ -55,17 +55,17 @@ gdb
|
|||
|
||||
<tr>
|
||||
|
||||
<td>b <行号>
|
||||
b <函数名称>
|
||||
b *<函数名称>
|
||||
<td>b <行号>
|
||||
b <函数名称>
|
||||
b *<函数名称>
|
||||
b *<代码地址> d [编号]</td>
|
||||
|
||||
<td>b: Breakpoint的简写,设置断点。两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。
|
||||
<td>b: Breakpoint的简写,设置断点。两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。
|
||||
其中在函数名称前面加“*”符号表示将断点设置在“由编译器生成的prolog代码处”。如果不了解汇编,可以不予理会此用法。 d: Delete breakpoint的简写,删除指定编号的某个断点,或删除所有断点。断点编号从1开始递增。</td>
|
||||
|
||||
<td>(gdb) b 8
|
||||
(gdb) b main
|
||||
(gdb) b *main
|
||||
<td>(gdb) b 8
|
||||
(gdb) b main
|
||||
(gdb) b *main
|
||||
(gdb) b *0x804835c (gdb) d</td>
|
||||
|
||||
</tr>
|
||||
|
|
@ -74,11 +74,11 @@ b *<代码地址> d [编号]</td>
|
|||
|
||||
<td>s, n</td>
|
||||
|
||||
<td>s: 执行一行源程序代码,如果此行代码中有函数调用,则进入该函数;
|
||||
n: 执行一行源程序代码,此行代码中的函数调用也一并执行。 s 相当于其它调试器中的“Step Into (单步跟踪进入)”;
|
||||
<td>s: 执行一行源程序代码,如果此行代码中有函数调用,则进入该函数;
|
||||
n: 执行一行源程序代码,此行代码中的函数调用也一并执行。 s 相当于其它调试器中的“Step Into (单步跟踪进入)”;
|
||||
n 相当于其它调试器中的“Step Over (单步跟踪)”。 这两个命令必须在有源代码调试信息的情况下才可以使用(GCC编译时使用“-g”参数)。</td>
|
||||
|
||||
<td>(gdb) s
|
||||
<td>(gdb) s
|
||||
(gdb) n</td>
|
||||
|
||||
</tr>
|
||||
|
|
@ -89,7 +89,7 @@ n 相当于其它调试器中的“Step Over (单步跟踪)”。 这两个命
|
|||
|
||||
<td>si命令类似于s命令,ni命令类似于n命令。所不同的是,这两个命令(si/ni)所针对的是汇编指令,而s/n针对的是源代码。</td>
|
||||
|
||||
<td>(gdb) si
|
||||
<td>(gdb) si
|
||||
(gdb) ni</td>
|
||||
|
||||
</tr>
|
||||
|
|
@ -100,7 +100,7 @@ n 相当于其它调试器中的“Step Over (单步跟踪)”。 这两个命
|
|||
|
||||
<td>Print的简写,显示指定变量(临时变量或全局变量)的值。</td>
|
||||
|
||||
<td>(gdb) p i
|
||||
<td>(gdb) p i
|
||||
(gdb) p nGlobalVar</td>
|
||||
|
||||
</tr>
|
||||
|
|
@ -109,9 +109,9 @@ n 相当于其它调试器中的“Step Over (单步跟踪)”。 这两个命
|
|||
|
||||
<td>display ... undisplay <编号></td>
|
||||
|
||||
<td>display,设置程序中断后欲显示的数据及其格式。
|
||||
例如,如果希望每次程序中断后可以看到即将被执行的下一条汇编指令,可以使用命令
|
||||
“display /i $pc”
|
||||
<td>display,设置程序中断后欲显示的数据及其格式。
|
||||
例如,如果希望每次程序中断后可以看到即将被执行的下一条汇编指令,可以使用命令
|
||||
“display /i $pc”
|
||||
其中 $pc 代表当前汇编指令,/i 表示以十六进行显示。当需要关心汇编代码时,此命令相当有用。 undispaly,取消先前的display设置,编号从1开始递增。</td>
|
||||
|
||||
<td>(gdb) display /i $pc (gdb) undisplay 1</td>
|
||||
|
|
@ -142,7 +142,7 @@ n 相当于其它调试器中的“Step Over (单步跟踪)”。 这两个命
|
|||
|
||||
<td>help [命令名称]</td>
|
||||
|
||||
<td>GDB帮助命令,提供对GDB名种命令的解释说明。
|
||||
<td>GDB帮助命令,提供对GDB名种命令的解释说明。
|
||||
如果指定了“命令名称”参数,则显示该命令的详细说明;如果没有指定参数,则分类显示所有GDB命令,供用户进一步浏览和查询。</td>
|
||||
|
||||
<td>(gdb) help</td>
|
||||
|
|
@ -153,13 +153,13 @@ n 相当于其它调试器中的“Step Over (单步跟踪)”。 这两个命
|
|||
|
||||
</table>
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
gdb(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-cd:设置工作目录;
|
||||
|
|
@ -169,11 +169,11 @@ gdb(选项)(参数)
|
|||
-s:设置读取的符号表文件。
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
文件:二进制可执行程序。
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
以下是linux下dgb调试的一个实例,先给出一个示例用的小程序,C语言代码:
|
||||
|
||||
|
|
@ -457,5 +457,50 @@ eax 0xbffff6a4 -1073744220
|
|||
The program is running. exit anyway? (y or n)
|
||||
```
|
||||
|
||||
## 补充内容
|
||||
|
||||
> gdb 教程:[慕课网-Linux C语言指针与内存-第三章](http://www.imooc.com/learn/394)
|
||||
|
||||
如果删除源代码, 就无法显示行号等辅助信息了
|
||||
|
||||
```
|
||||
gcc -g gdb.c -o gdb.out # -g 支持gdb调试; -o 输出, 默认为 a.out
|
||||
|
||||
gdb gdb.out # 进入 gdb 调试环境
|
||||
enter # 继续执行上条命令
|
||||
l # 列出源代码, 默认 10 行, 按 l 继续
|
||||
|
||||
start # 开始单步调试, 默认 main() 第一行
|
||||
p a # 查看 a 变量的值
|
||||
n # 继续到下一行
|
||||
s # 进入子函数
|
||||
bt # 查看函数栈
|
||||
f 1 # 切换函数栈
|
||||
|
||||
q 退出调试
|
||||
```
|
||||
|
||||
```c
|
||||
# 测试用代码
|
||||
#include <stdio.h>
|
||||
|
||||
void change(int a, int b){
|
||||
int tmp=a;
|
||||
a=b; b=tmp;
|
||||
}
|
||||
|
||||
void change2(int *a, int *b){
|
||||
int tmp=*a;
|
||||
*a=*b; *b=tmp;
|
||||
}
|
||||
|
||||
int main(){
|
||||
int a=5,b=3;
|
||||
change(a,b);
|
||||
printf("change:\na=%d\nb=%d\n", a,b);
|
||||
change2(&a,&b);
|
||||
printf("change2:\na=%d\nb=%d\n", a,b);
|
||||
}
|
||||
```
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -9,13 +9,13 @@ gzip
|
|||
|
||||
gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
gzip(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-a或——ascii:使用ASCII文字模式;
|
||||
|
|
@ -35,14 +35,14 @@ gzip(选项)(参数)
|
|||
-<压缩效率>:压缩效率是一个介于1~9的数值,预设值为“6”,指定愈大的数值,压缩效率就会愈高;
|
||||
--best:此参数的效果和指定“-9”参数相同;
|
||||
--fast:此参数的效果和指定“-1”参数相同。
|
||||
-num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6。
|
||||
-num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6。
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
文件列表:指定要压缩的文件列表。
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
把test6目录下的每个文件压缩成.gz文件
|
||||
|
||||
|
|
|
|||
|
|
@ -11,13 +11,13 @@ history
|
|||
|
||||
历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量`HISTSIZE`进行控制。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
history(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-c:清空当前历史命令;
|
||||
|
|
@ -26,11 +26,11 @@ history(选项)(参数)
|
|||
-w:将当前历史命令缓冲区命令写入历史命令文件中。
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
n:打印最近的n条历史命令。
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
使用history命令显示最近使用的10条历史命令,输入如下命令:
|
||||
|
||||
|
|
@ -63,4 +63,15 @@ n:打印最近的n条历史命令。
|
|||
[root@localhost ~]# history -c
|
||||
```
|
||||
|
||||
更多实例:
|
||||
|
||||
```
|
||||
history -cw
|
||||
`~/.bash_history`: 保存历史命令
|
||||
`/etc/profile` -> HISSIZE: 历史命令保存数量
|
||||
推荐添加 h -> history, hsi -> history|grep 别名
|
||||
`!n`: 执行第 n 条历史命令
|
||||
`!xxx`: 执行最后一条 xxx 开头的命令
|
||||
```
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
hostname
|
||||
===
|
||||
|
||||
|
||||
显示和设置系统的主机名
|
||||
|
||||
## 补充说明
|
||||
|
||||
**hostname命令** 用于显示和设置系统的主机名称。环境变量HOSTNAME也保存了当前的主机名。在使用hostname命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。如果需要永久修改主机名,需要同时修改`/etc/hosts`和`/etc/sysconfig/network`的相关内容。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
hostname(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-v:详细信息模式;
|
||||
|
|
@ -25,15 +25,20 @@ hostname(选项)(参数)
|
|||
-y:显示NIS域名。
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
主机名:指定要设置的主机名。
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
```
|
||||
[root@AY1307311912260196fcZ ~]# hostname
|
||||
AY1307311912260196fcZ
|
||||
|
||||
# change hostname
|
||||
hostname newname # for now
|
||||
vi /etc/hosts # forever
|
||||
reboot
|
||||
```
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -40,13 +40,13 @@ Linux上常用的防火墙软件
|
|||
|
||||
<!-- /TOC -->
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
iptables(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```bash
|
||||
-t, --table table 对指定的表 table 进行操作, table 必须是 raw, nat,filter,mangle 中的一个。如果不指定此选项,默认的是 filter 表。
|
||||
|
|
@ -124,14 +124,14 @@ iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协
|
|||
3. mangle功能:修改报文原数据,是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
|
||||
|
||||
我们修改报文原数据就是来修改TTL的。能够实现将数据包的元数据拆开,在里面做标记/修改内容的。而防火墙标记,其实就是靠mangle来实现的。
|
||||
|
||||
|
||||
小扩展:
|
||||
|
||||
- 对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT
|
||||
- 对于nat来讲一般也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING
|
||||
- 而mangle则是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
|
||||
|
||||
iptables/netfilter(这款软件)是工作在用户空间的,它可以让规则进行生效的,本身不是一种服务,而且规则是立即生效的。而我们iptables现在被做成了一个服务,可以进行启动,停止的。启动,则将规则直接生效,停止,则将规则撤销。
|
||||
|
||||
iptables/netfilter(这款软件)是工作在用户空间的,它可以让规则进行生效的,本身不是一种服务,而且规则是立即生效的。而我们iptables现在被做成了一个服务,可以进行启动,停止的。启动,则将规则直接生效,停止,则将规则撤销。
|
||||
|
||||
iptables还支持自己定义链。但是自己定义的链,必须是跟某种特定的链关联起来的。在一个关卡设定,指定当有数据的时候专门去找某个特定的链来处理,当那个链处理完之后,再返回。接着在特定的链中继续检查。
|
||||
|
||||
|
|
@ -159,40 +159,40 @@ iptables还支持自己定义链。但是自己定义的链,必须是跟某种
|
|||
- **LOG** :日志记录。
|
||||
|
||||
```bash
|
||||
┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓
|
||||
┌───────────────┐ ┃ Network ┃
|
||||
│ table: filter │ ┗━━━━━━━┳━━━━━━━┛
|
||||
│ chain: INPUT │◀────┐ │
|
||||
└───────┬───────┘ │ ▼
|
||||
│ │ ┌───────────────────┐
|
||||
┌ ▼ ┐ │ │ table: nat │
|
||||
│local process│ │ │ chain: PREROUTING │
|
||||
└ ┘ │ └─────────┬─────────┘
|
||||
│ │ │
|
||||
┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓
|
||||
┌───────────────┐ ┃ Network ┃
|
||||
│ table: filter │ ┗━━━━━━━┳━━━━━━━┛
|
||||
│ chain: INPUT │◀────┐ │
|
||||
└───────┬───────┘ │ ▼
|
||||
│ │ ┌───────────────────┐
|
||||
┌ ▼ ┐ │ │ table: nat │
|
||||
│local process│ │ │ chain: PREROUTING │
|
||||
└ ┘ │ └─────────┬─────────┘
|
||||
│ │ │
|
||||
▼ │ ▼ ┌─────────────────┐
|
||||
┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ │ ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ │table: nat │
|
||||
Routing decision └───── outing decision ─────▶│chain: PREROUTING│
|
||||
┅┅┅┅┅┅┅┅┅┳┅┅┅┅┅┅┅┅┅ ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ └────────┬────────┘
|
||||
│ │
|
||||
▼ │
|
||||
┌───────────────┐ │
|
||||
│ table: nat │ ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ │
|
||||
│ chain: OUTPUT │ ┌─────▶ outing decision ◀──────────────┘
|
||||
└───────┬───────┘ │ ┅┅┅┅┅┅┅┅┳┅┅┅┅┅┅┅┅
|
||||
│ │ │
|
||||
▼ │ ▼
|
||||
┌───────────────┐ │ ┌────────────────────┐
|
||||
│ table: filter │ │ │ chain: POSTROUTING │
|
||||
│ chain: OUTPUT ├────┘ └──────────┬─────────┘
|
||||
└───────────────┘ │
|
||||
▼
|
||||
┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓
|
||||
┃ Network ┃
|
||||
┗━━━━━━━━━━━━━━━┛
|
||||
│ │
|
||||
▼ │
|
||||
┌───────────────┐ │
|
||||
│ table: nat │ ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ │
|
||||
│ chain: OUTPUT │ ┌─────▶ outing decision ◀──────────────┘
|
||||
└───────┬───────┘ │ ┅┅┅┅┅┅┅┅┳┅┅┅┅┅┅┅┅
|
||||
│ │ │
|
||||
▼ │ ▼
|
||||
┌───────────────┐ │ ┌────────────────────┐
|
||||
│ table: filter │ │ │ chain: POSTROUTING │
|
||||
│ chain: OUTPUT ├────┘ └──────────┬─────────┘
|
||||
└───────────────┘ │
|
||||
▼
|
||||
┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓
|
||||
┃ Network ┃
|
||||
┗━━━━━━━━━━━━━━━┛
|
||||
```
|
||||
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
#### 空当前的所有规则和计数
|
||||
|
||||
|
|
@ -205,14 +205,14 @@ iptables -Z # 清空计数
|
|||
#### 配置允许ssh端口连接
|
||||
|
||||
```bash
|
||||
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
|
||||
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
|
||||
# 22为你的ssh端口, -s 192.168.1.0/24表示允许这个网段的机器来连接,其它网段的ip地址是登陆不了你的机器的。 -j ACCEPT表示接受这样的请求
|
||||
```
|
||||
|
||||
#### 允许本地回环地址可以正常使用
|
||||
|
||||
```bash
|
||||
iptables -A INPUT -i lo -j ACCEPT
|
||||
iptables -A INPUT -i lo -j ACCEPT
|
||||
#本地圆环地址就是那个127.0.0.1,是本机上使用的,它进与出都设置为允许
|
||||
iptables -A OUTPUT -o lo -j ACCEPT
|
||||
```
|
||||
|
|
@ -245,7 +245,7 @@ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 已经建立
|
|||
|
||||
```bash
|
||||
cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak # 任何改动之前先备份,请保持这一优秀的习惯
|
||||
iptables-save > /etc/sysconfig/iptables
|
||||
iptables-save > /etc/sysconfig/iptables
|
||||
cat /etc/sysconfig/iptables
|
||||
```
|
||||
|
||||
|
|
@ -331,19 +331,19 @@ iptables -A FORWARD -o eth0
|
|||
```
|
||||
iptables -L -n -v
|
||||
Chain INPUT (policy DROP 48106 packets, 2690K bytes)
|
||||
pkts bytes target prot opt in out source destination
|
||||
5075 589K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
|
||||
pkts bytes target prot opt in out source destination
|
||||
5075 589K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
|
||||
191K 90M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
|
||||
1499K 133M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
|
||||
4364K 6351M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
|
||||
6256 327K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
|
||||
6256 327K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
|
||||
|
||||
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
|
||||
pkts bytes target prot opt in out source destination
|
||||
pkts bytes target prot opt in out source destination
|
||||
|
||||
Chain OUTPUT (policy ACCEPT 3382K packets, 1819M bytes)
|
||||
pkts bytes target prot opt in out source destination
|
||||
5075 589K ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
|
||||
pkts bytes target prot opt in out source destination
|
||||
5075 589K ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
|
||||
```
|
||||
|
||||
#### 启动网络转发规则
|
||||
|
|
@ -371,14 +371,14 @@ iptables -A INPUT -p tcp -m string --algo kmp --string "test" -j REJECT --reject
|
|||
iptables -L
|
||||
|
||||
# Chain INPUT (policy ACCEPT)
|
||||
# target prot opt source destination
|
||||
# target prot opt source destination
|
||||
# REJECT tcp -- anywhere anywhere STRING match "test" ALGO name kmp TO 65535 reject-with tcp-reset
|
||||
#
|
||||
#
|
||||
# Chain FORWARD (policy ACCEPT)
|
||||
# target prot opt source destination
|
||||
#
|
||||
# target prot opt source destination
|
||||
#
|
||||
# Chain OUTPUT (policy ACCEPT)
|
||||
# target prot opt source destination
|
||||
# target prot opt source destination
|
||||
```
|
||||
|
||||
#### 阻止Windows蠕虫的攻击
|
||||
|
|
@ -393,5 +393,126 @@ iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string --algo kmp --string "cmd
|
|||
iptables -A INPUT -p tcp --syn -m limit --limit 5/second -j ACCEPT
|
||||
```
|
||||
|
||||
## 更多实例
|
||||
> 用iptables搭建一套强大的安全防护盾 http://www.imooc.com/learn/389
|
||||
|
||||
iptables: linux 下应用层防火墙工具
|
||||
|
||||
iptables 5链: 对应 Hook point
|
||||
netfilter: linux 操作系统核心层内部的一个数据包处理模块
|
||||
Hook point: 数据包在 netfilter 中的挂载点; `PRE_ROUTING / INPUT / OUTPUT / FORWARD / POST_ROUTING`
|
||||
|
||||
iptables & netfilter
|
||||

|
||||
|
||||
iptables 4表5链
|
||||

|
||||
|
||||
iptables rules
|
||||

|
||||
|
||||
- 4表
|
||||
|
||||
**filter**: 访问控制 / 规则匹配
|
||||
**nat**: 地址转发
|
||||
mangle / raw
|
||||
|
||||
- 规则
|
||||
|
||||
数据访问控制: ACCEPT / DROP / REJECT
|
||||
数据包改写(nat -> 地址转换): snat / dnat
|
||||
信息记录: log
|
||||
|
||||
## 使用场景实例
|
||||
- 场景一
|
||||
|
||||
开放 tcp 10-22/80 端口
|
||||
开放 icmp
|
||||
其他未被允许的端口禁止访问
|
||||
|
||||
存在的问题: 本机无法访问本机; 本机无法访问其他主机
|
||||
|
||||
- 场景二
|
||||
|
||||
ftp: 默认被动模式(服务器产生随机端口告诉客户端, 客户端主动连接这个端口拉取数据)
|
||||
vsftpd: 使 ftp 支持主动模式(客户端产生随机端口通知服务器, 服务器主动连接这个端口发送数据)
|
||||
|
||||
- 场景三
|
||||
|
||||
允许外网访问:
|
||||
web
|
||||
http -> 80/tcp; https -> 443/tcp
|
||||
mail
|
||||
smtp -> 25/tcp; smtps -> 465/tcp
|
||||
pop3 -> 110/tcp; pop3s -> 995/tcp
|
||||
imap -> 143/tcp
|
||||
|
||||
内部使用:
|
||||
file
|
||||
nfs -> 123/udp
|
||||
samba -> 137/138/139/445/tcp
|
||||
ftp -> 20/21/tcp
|
||||
remote
|
||||
ssh -> 22/tcp
|
||||
sql
|
||||
mysql -> 3306/tcp
|
||||
oracle -> 1521/tcp
|
||||
|
||||
- 场景四
|
||||
|
||||
nat 转发
|
||||
|
||||
- 场景五
|
||||
|
||||
防CC攻击
|
||||
|
||||
```
|
||||
iptables -L -F -A -D # list flush append delete
|
||||
# 场景一
|
||||
iptables -I INPUT -p tcp --dport 80 -j ACCEPT # 允许 tcp 80 端口
|
||||
iptables -I INPUT -p tcp --dport 10:22 -j ACCEPT # 允许 tcp 10-22 端口
|
||||
iptables -I INPUT -p icmp -j ACCEPT # 允许 icmp
|
||||
iptables -A INPUT -j REJECT # 添加一条规则, 不允许所有
|
||||
|
||||
# 优化场景一
|
||||
iptables -I INPUT -i lo -j ACCEPT # 允许本机访问
|
||||
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许访问外网
|
||||
iptables -I INPUT -p tcp --dport 80 -s 10.10.188.233 -j ACCEPT # 只允许固定ip访问80
|
||||
|
||||
# 场景二
|
||||
vi /etc/vsftpd/vsftpd.conf # 使用 vsftpd 开启 ftp 主动模式
|
||||
port_enable=yes
|
||||
connect_from_port_20=YES
|
||||
iptables -I INPUT -p tcp --dport 21 -j ACCEPT
|
||||
|
||||
vi /etc/vsftpd/vsftpd.conf # 建议使用 ftp 被动模式
|
||||
pasv_min_port=50000
|
||||
pasv_max_port=60000
|
||||
iptables -I INPUT -p tcp --dport 21 -j ACCEPT
|
||||
iptables -I INPUT -p tcp --dport 50000:60000 -j ACCEPT
|
||||
|
||||
# 还可以使用 iptables 模块追踪来自动开发对应的端口
|
||||
|
||||
# 场景三
|
||||
iptables -I INPUT -i lo -j ACCEPT # 允许本机访问
|
||||
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许访问外网
|
||||
iptables -I INPUT -s 10.10.155.0/24 -j ACCEPT # 允许内网访问
|
||||
iptables -I INPUT -p tcp -m multiport --dports 80,1723 -j ACCEPT # 允许端口, 80 -> http, 1723 -> vpn
|
||||
iptables -A INPUT -j REJECT # 添加一条规则, 不允许所有
|
||||
|
||||
iptables-save # 保存设置到配置文件
|
||||
|
||||
# 场景四
|
||||
iptables -t nat -L # 查看 nat 配置
|
||||
|
||||
iptables -t nat -A POST_ROUTING -s 10.10.177.0/24 -j SNAT --to 10.10.188.232 # SNAT
|
||||
vi /etc/sysconfig/network # 配置网关
|
||||
|
||||
iptables -t nat -A POST_ROUTING -d 10.10.188.232 -p tcp --dport 80 -j DNAT --to 10.10.177.232:80 # DNAT
|
||||
|
||||
#场景五
|
||||
iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT # 限制并发连接访问数
|
||||
iptables -I INPUT -m limit --limit 3/hour --limit-burst 10 -j ACCEPT # limit模块; --limit-burst 默认为5
|
||||
```
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
|
|||
|
|
@ -1,19 +1,20 @@
|
|||
kill
|
||||
===
|
||||
|
||||
|
||||
删除执行中的程序或工作
|
||||
|
||||
## 补充说明
|
||||
|
||||
**kill命令** 用来删除执行中的程序或工作。kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或job指令查看。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
kill(选项)(参数)
|
||||
xkill # 图形化关闭程序
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-a:当处理当前进程时,不限制命令名和进程号的对应关系;
|
||||
|
|
@ -23,11 +24,11 @@ kill(选项)(参数)
|
|||
-u:指定用户。
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
进程或作业识别号:指定要删除的进程或作业。
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
列出所有信号名称:
|
||||
|
||||
|
|
@ -51,7 +52,7 @@ kill(选项)(参数)
|
|||
63) SIGRTMAX-1 64) SIGRTMAX
|
||||
```
|
||||
|
||||
只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略, **下面是常用的信号:**
|
||||
只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略, **下面是常用的信号:**
|
||||
|
||||
```
|
||||
HUP 1 终端断线
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
locate
|
||||
===
|
||||
|
||||
Apache服务器的性能测试工具
|
||||
比 find 好用的文件查找工具
|
||||
|
||||
## 补充说明
|
||||
|
||||
|
|
@ -13,14 +13,13 @@ locate指定用在搜寻符合条件的档案,它会去储存档案与目录
|
|||
|
||||
locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。
|
||||
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
locate [选择参数] [样式]
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-e 将排除在寻找的范围之外。
|
||||
|
|
@ -35,7 +34,7 @@ locate [选择参数] [样式]
|
|||
-V 显示程式的版本讯息
|
||||
```
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
实例1:查找和pwd相关的所有文件
|
||||
|
||||
|
|
@ -58,7 +57,7 @@ root ~ # locate pwd
|
|||
/usr/share/help/el/empathy/irc-join-pwd.page
|
||||
```
|
||||
|
||||
实例2: 搜索etc目录下所有以sh开头的文件
|
||||
实例2: 搜索etc目录下所有以sh开头的文件
|
||||
|
||||
```
|
||||
root ~ # locate /etc/sh
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
lsof
|
||||
===
|
||||
|
||||
显示Linux系统当前已打开的所有文件列表
|
||||
|
||||
显示Linux系统当前已打开的所有文件列表 `lsof -p pid`
|
||||
|
||||
## 补充说明
|
||||
|
||||
|
|
@ -9,13 +9,13 @@ lsof
|
|||
|
||||
在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
lsof(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-a:列出打开文件存在的进程;
|
||||
|
|
@ -32,7 +32,7 @@ lsof(选项)
|
|||
-v:显示版本信息。
|
||||
```
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
```
|
||||
lsof
|
||||
|
|
@ -64,7 +64,7 @@ events/0 6 root txt unknown /proc
|
|||
events/1 7 root cwd DIR 8,2 4096 2 /
|
||||
```
|
||||
|
||||
**lsof输出各列信息的意义如下:**
|
||||
**lsof输出各列信息的意义如下:**
|
||||
|
||||
* COMMAND:进程的名称
|
||||
* PID:进程标识符
|
||||
|
|
@ -127,5 +127,10 @@ events/1 7 root cwd DIR 8,2 4096 2 /
|
|||
9. NODE:索引节点(文件在磁盘上的标识)
|
||||
10. NAME:打开文件的确切名称
|
||||
|
||||
列出指定进程号所打开的文件:
|
||||
|
||||
```
|
||||
lsof -p $pid
|
||||
```
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
mtr
|
||||
===
|
||||
|
||||
比 traceroute 好用
|
||||
|
||||
## 实例
|
||||
|
||||
```
|
||||
apk add mtr # 安装
|
||||
|
||||
mtr -r www.baidu.com # 使用
|
||||
```
|
||||
|
|
@ -13,19 +13,19 @@ OpenSSL有两种运行模式:交互模式和批处理模式。
|
|||
|
||||
OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。
|
||||
|
||||
**对称加密算法**
|
||||
**对称加密算法**
|
||||
|
||||
OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。
|
||||
|
||||
**非对称加密算法**
|
||||
**非对称加密算法**
|
||||
|
||||
OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。
|
||||
|
||||
**信息摘要算法**
|
||||
**信息摘要算法**
|
||||
|
||||
OpenSSL实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事实上包括了SHA和SHA1两种信息摘要算法,此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。
|
||||
|
||||
**密钥和证书管理**
|
||||
**密钥和证书管理**
|
||||
|
||||
密钥和证书管理是PKI的一个重要组成部分,OpenSSL为之提供了丰富的功能,支持多种标准。
|
||||
|
||||
|
|
@ -48,7 +48,7 @@ openssl rand -base64 10
|
|||
|
||||
nU9LlHO5nsuUvw==
|
||||
|
||||
**2、消息摘要算法应用例子**
|
||||
**2、消息摘要算法应用例子**
|
||||
|
||||
用SHA1算法计算文件file.txt的哈西值,输出到stdout:
|
||||
|
||||
|
|
@ -86,7 +86,7 @@ nU9LlHO5nsuUvw==
|
|||
# openssl sha1 -verify rsapublic.pem -signature rsasign.bin file.txt
|
||||
```
|
||||
|
||||
**3、对称加密应用例子**
|
||||
**3、对称加密应用例子**
|
||||
|
||||
对称加密应用例子,用DES3算法的CBC模式加密文件plaintext.doc,加密结果输出到文件ciphertext.bin。
|
||||
|
||||
|
|
@ -118,7 +118,7 @@ nU9LlHO5nsuUvw==
|
|||
# openssl rc5 -in plaintext.doc -out ciphertext.bin -S C62CB1D49F158ADC -iv E9EDACA1BD7090C6 -K 89D4B1678D604FAA3DBFFD030A314B29
|
||||
```
|
||||
|
||||
**4、Diffie-Hellman应用例子**
|
||||
**4、Diffie-Hellman应用例子**
|
||||
|
||||
使用生成因子2和随机的1024-bit的素数产生D0ffie-Hellman参数,输出保存到文件dhparam.pem
|
||||
|
||||
|
|
@ -132,7 +132,7 @@ nU9LlHO5nsuUvw==
|
|||
# openssl dhparam -in dhparam.pem -noout -C
|
||||
```
|
||||
|
||||
**5、DSA应用例子应用例子**
|
||||
**5、DSA应用例子应用例子**
|
||||
|
||||
生成1024位DSA参数集,并输出到文件dsaparam.pem。
|
||||
|
||||
|
|
@ -158,7 +158,7 @@ nU9LlHO5nsuUvw==
|
|||
# openssl dsa -in dsaprivatekey.pem -out dsaprivatekey.pem -des3 -passin
|
||||
```
|
||||
|
||||
**6、RSA应用例子**
|
||||
**6、RSA应用例子**
|
||||
|
||||
产生1024位RSA私匙,用3DES加密它,口令为trousers,输出到文件rsaprivatekey.pem
|
||||
|
||||
|
|
@ -220,5 +220,13 @@ cert.pem为X.509证书文件,用私匙key,pem为mail.txt签名,证书被包
|
|||
# openssl smime -verify -in mail.sgn -out mail.txt
|
||||
```
|
||||
|
||||
更多实例:
|
||||
|
||||
```
|
||||
openssl version -a
|
||||
openssl help
|
||||
openssl genrsa -aes128 -out fd.key 2048 # pem format
|
||||
openssl rsa -text -in fd.key
|
||||
```
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@ ps
|
|||
|
||||
**ps命令** 用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
ps(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。
|
||||
|
|
|
|||
|
|
@ -9,13 +9,13 @@ rm
|
|||
|
||||
注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
rm (选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
|
||||
|
|
@ -26,11 +26,11 @@ rm (选项)(参数)
|
|||
-v:显示指令的详细执行过程。
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
文件:指定被删除的文件列表,如果参数中含有目录,则必须加上`-r`或者`-R`选项。
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
交互式删除当前目录下的文件test和example
|
||||
|
||||
|
|
@ -51,14 +51,14 @@ Remove example ?y(删除文件example)
|
|||
**rm 命令删除文件**
|
||||
|
||||
```bash
|
||||
# rm 文件1 文件2 ...
|
||||
# rm 文件1 文件2 ...
|
||||
rm testfile.txt
|
||||
```
|
||||
|
||||
**rm 命令删除目录**
|
||||
|
||||
> rm -r [目录名称]
|
||||
> -r 表示递归地删除目录下的所有文件和目录。
|
||||
> rm -r [目录名称]
|
||||
> -r 表示递归地删除目录下的所有文件和目录。
|
||||
> -f 表示强制删除
|
||||
|
||||
```
|
||||
|
|
@ -68,7 +68,7 @@ rm -r testdir
|
|||
|
||||
**删除操作前有确认提示**
|
||||
|
||||
> rm -i [文件/目录]
|
||||
> rm -i [文件/目录]
|
||||
|
||||
```
|
||||
rm -r -i testdir
|
||||
|
|
@ -76,7 +76,7 @@ rm -r -i testdir
|
|||
|
||||
**rm 忽略不存在的文件或目录**
|
||||
|
||||
> -f 选项(LCTT 译注:即 “force”)让此次操作强制执行,忽略错误提示
|
||||
> -f 选项(LCTT 译注:即 “force”)让此次操作强制执行,忽略错误提示
|
||||
|
||||
```
|
||||
rm -f [文件...]
|
||||
|
|
@ -93,7 +93,7 @@ rm -I file1 file2 file3
|
|||
|
||||
**删除根目录**
|
||||
|
||||
> 当然,删除根目录(/)是 Linux 用户最不想要的操作,这也就是为什么默认 rm 命令不支持在根目录上执行递归删除操作。
|
||||
> 当然,删除根目录(/)是 Linux 用户最不想要的操作,这也就是为什么默认 rm 命令不支持在根目录上执行递归删除操作。
|
||||
> 然而,如果你非得完成这个操作,你需要使用 --no-preserve-root 选项。当提供此选项,rm 就不会特殊处理根目录(/)了。
|
||||
|
||||
```
|
||||
|
|
@ -106,5 +106,4 @@ rm -I file1 file2 file3
|
|||
rm -v [文件/目录]
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
rpm
|
||||
===
|
||||
|
||||
|
||||
RPM软件包的管理工具
|
||||
|
||||
## 补充说明
|
||||
|
||||
**rpm命令** 是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
rpm(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-a:查询所有套件;
|
||||
|
|
@ -35,13 +35,13 @@ rpm(选项)(参数)
|
|||
-vv:详细显示指令执行过程,便于排错。
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
软件包:指定要操纵的rpm软件包。
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
**如何安装rpm软件包**
|
||||
**如何安装rpm软件包**
|
||||
|
||||
rpm软件包的安装可以使用程序rpm来完成。执行下面的命令:
|
||||
|
||||
|
|
@ -66,7 +66,7 @@ rpm -ivh your-package.rpm
|
|||
|
||||
此包需要的一些软件你没有安装可以用`rpm --nodeps -i`来忽略此信息,也就是说`rpm -i --force --nodeps`可以忽略所有依赖关系和文件问题,什么包都能安装上,但这种强制安装的软件包不能保证完全发挥功能。
|
||||
|
||||
**如何安装.src.rpm软件包**
|
||||
**如何安装.src.rpm软件包**
|
||||
|
||||
有些软件包是以.src.rpm结尾的,这类软件包是包含了源代码的rpm包,在安装时需要进行编译。这类软件包有两种安装方法:
|
||||
|
||||
|
|
@ -99,7 +99,7 @@ rpmbuild -bb your-package.specs #一个和你的软件包同名的specs文
|
|||
|
||||
执行`rpm -i new-package.rpm`即可安装完成。
|
||||
|
||||
**如何卸载rpm软件包**
|
||||
**如何卸载rpm软件包**
|
||||
|
||||
使用命令`rpm -e`包名,包名可以包含版本号等信息,但是不可以有后缀.rpm,比如卸载软件包proftpd-1.2.8-1,可以使用下列格式:
|
||||
|
||||
|
|
@ -127,7 +127,7 @@ rpm -e proftpd-1
|
|||
|
||||
这说明这个软件被其他软件需要,不能随便卸载,可以用rpm -e --nodeps强制卸载
|
||||
|
||||
**如何不安装但是获取rpm包中的文件**
|
||||
**如何不安装但是获取rpm包中的文件**
|
||||
|
||||
使用工具rpm2cpio和cpio
|
||||
|
||||
|
|
@ -139,7 +139,7 @@ rpm2cpio xxx.rpm | cpio --extract --make-directories
|
|||
|
||||
参数i和extract相同,表示提取文件。v表示指示执行进程,d和make-directory相同,表示根据包中文件原来的路径建立目录,m表示保持文件的更新时间。
|
||||
|
||||
**如何查看与rpm包相关的文件和其他信息**
|
||||
**如何查看与rpm包相关的文件和其他信息**
|
||||
|
||||
下面所有的例子都假设使用软件包mysql-3.23.54a-11
|
||||
|
||||
|
|
@ -210,5 +210,33 @@ rpm -qf /usr/share/doc/proftpd-1.2.8/rfc/rfc0959.txt
|
|||
proftpd-1.2.8-1
|
||||
```
|
||||
|
||||
## 更多实例
|
||||
> 库依赖: http://rpmfind.net/
|
||||
|
||||
源码包 -> 编译 -> 二进制包(rpm 包 / 系统默认包)
|
||||
|
||||
rpm 命名规则: 软件(软件名, 软件版本) + 系统(os 版本, os 位数)
|
||||
rpm 校验: SM5DLUGT -> size modified(类型/权限) md5 device L(文件路径) user group time(modified time)
|
||||
|
||||
yum: 解决 rpm 依赖的问题
|
||||
|
||||
```
|
||||
# rpm
|
||||
mysql57-community-release-el6-8.noarch.rpm # 一个 rpm 包的例子
|
||||
/var/lib/rpm/ # 包全名 -> 包名 的数据库
|
||||
|
||||
rpm -Uivh --dodeps xxx # upgrade install verbose hash
|
||||
rpm -qilpfa|grep xxx # query info list(rpm包安装后的文件位置) package(rpm 包) file(文件属于哪个rpm文件) all
|
||||
rpm -e # erase
|
||||
rpm -V # verify
|
||||
rpm2cpio | cpio -idv
|
||||
|
||||
# rpm 默认安装位置
|
||||
/etc/ 配置文件
|
||||
/usr/bin/ 可执行文件
|
||||
/urs/lib/ 程序使用的函数库
|
||||
/usr/share/doc/ 使用手册
|
||||
/usr/share/man/ manual
|
||||
```
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
rsync
|
||||
===
|
||||
|
||||
|
||||
远程数据同步工具
|
||||
|
||||
## 补充说明
|
||||
|
||||
**rsync命令** 是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
rsync [OPTION]... SRC DEST
|
||||
|
|
@ -27,7 +27,7 @@ rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
|
|||
5. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:`rsync -av /databack root@192.168.78.192::www`
|
||||
6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:`rsync -v rsync://192.168.78.192/www`
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-v, --verbose 详细模式输出。
|
||||
|
|
@ -93,9 +93,9 @@ rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
|
|||
-h, --help 显示帮助信息。
|
||||
```
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
**SSH方式**
|
||||
**SSH方式**
|
||||
|
||||
首先在服务端启动ssh服务:
|
||||
|
||||
|
|
@ -104,7 +104,7 @@ service sshd start
|
|||
启动 sshd: [确定]
|
||||
```
|
||||
|
||||
**使用rsync进行同步**
|
||||
**使用rsync进行同步**
|
||||
|
||||
接下来就可以在客户端使用rsync命令来备份服务端上的数据了,SSH方式是通过系统用户来进行备份的,如下:
|
||||
|
||||
|
|
@ -128,7 +128,7 @@ total size is 100663363 speedup is 1024.19
|
|||
|
||||
上面的信息描述了整个的备份过程,以及总共备份数据的大小。
|
||||
|
||||
**后台服务方式**
|
||||
**后台服务方式**
|
||||
|
||||
启动rsync服务,编辑`/etc/xinetd.d/rsync`文件,将其中的`disable=yes`改为`disable=no`,并重启xinetd服务,如下:
|
||||
|
||||
|
|
@ -222,5 +222,4 @@ sent 258 bytes received 76 bytes 95.43 bytes/sec
|
|||
total size is 150995011 speedup is 452080.87
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
# rz
|
||||
|
||||
文件上传
|
||||
|
||||
## quick start
|
||||
|
||||
```
|
||||
apk add lrzsz
|
||||
|
||||
rz
|
||||
```
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
ss
|
||||
===
|
||||
|
||||
获取socket统计信息,iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息。
|
||||
比 netstat 好用的socket统计信息,iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息。
|
||||
|
||||
## 补充说明
|
||||
|
||||
|
|
@ -11,14 +11,14 @@ ss
|
|||
|
||||
天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
ss [参数]
|
||||
ss [参数] [过滤]
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-h, --help 帮助信息
|
||||
|
|
@ -49,7 +49,7 @@ ss [参数] [过滤]
|
|||
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
|
||||
```
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
```bash
|
||||
ss -t -a # 显示TCP连接
|
||||
|
|
@ -69,8 +69,8 @@ time ss
|
|||
# 匹配远程地址和端口号
|
||||
# ss dst ADDRESS_PATTERN
|
||||
ss dst 192.168.1.5
|
||||
ss dst 192.168.119.113:http
|
||||
ss dst 192.168.119.113:smtp
|
||||
ss dst 192.168.119.113:http
|
||||
ss dst 192.168.119.113:smtp
|
||||
ss dst 192.168.119.113:443
|
||||
|
||||
# 匹配本地地址和端口号
|
||||
|
|
@ -87,22 +87,22 @@ ss src 192.168.119.103:25
|
|||
```bash
|
||||
# ss dport OP PORT 远程端口和一个数比较;
|
||||
# ss sport OP PORT 本地端口和一个数比较
|
||||
# OP 可以代表以下任意一个:
|
||||
# OP 可以代表以下任意一个:
|
||||
# <= or le : 小于或等于端口号
|
||||
# >= or ge : 大于或等于端口号
|
||||
# == or eq : 等于端口号
|
||||
# != or ne : 不等于端口号
|
||||
# < or gt : 小于端口号
|
||||
# > or lt : 大于端口号
|
||||
ss sport = :http
|
||||
ss dport = :http
|
||||
ss dport \> :1024
|
||||
ss sport \> :1024
|
||||
ss sport \< :32000
|
||||
ss sport eq :22
|
||||
ss dport != :22
|
||||
ss state connected sport = :http
|
||||
ss \( sport = :http or sport = :https \)
|
||||
ss sport = :http
|
||||
ss dport = :http
|
||||
ss dport \> :1024
|
||||
ss sport \> :1024
|
||||
ss sport \< :32000
|
||||
ss sport eq :22
|
||||
ss dport != :22
|
||||
ss state connected sport = :http
|
||||
ss \( sport = :http or sport = :https \)
|
||||
ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 192.168.1/24
|
||||
```
|
||||
|
||||
|
|
@ -110,8 +110,8 @@ ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 192.168.1/24
|
|||
|
||||
```bash
|
||||
ss -4 state closing
|
||||
# ss -4 state FILTER-NAME-HERE
|
||||
# ss -6 state FILTER-NAME-HERE
|
||||
# ss -4 state FILTER-NAME-HERE
|
||||
# ss -6 state FILTER-NAME-HERE
|
||||
# FILTER-NAME-HERE 可以代表以下任何一个:
|
||||
# established、 syn-sent、 syn-recv、 fin-wait-1、 fin-wait-2、 time-wait、 closed、 close-wait、 last-ack、 listen、 closing、
|
||||
# all : 所有以上状态
|
||||
|
|
@ -121,20 +121,20 @@ ss -4 state closing
|
|||
# big : 和bucket相反.
|
||||
```
|
||||
|
||||
**显示ICP连接**
|
||||
**显示ICP连接**
|
||||
|
||||
```
|
||||
[root@localhost ~]# ss -t -a
|
||||
State Recv-Q Send-Q Local Address:Port Peer Address:Port
|
||||
LISTEN 0 0 *:3306 *:*
|
||||
LISTEN 0 0 *:http *:*
|
||||
LISTEN 0 0 *:ssh *:*
|
||||
LISTEN 0 0 127.0.0.1:smtp *:*
|
||||
ESTAB 0 0 112.124.15.130:42071 42.156.166.25:http
|
||||
ESTAB 0 0 112.124.15.130:ssh 121.229.196.235:33398
|
||||
State Recv-Q Send-Q Local Address:Port Peer Address:Port
|
||||
LISTEN 0 0 *:3306 *:*
|
||||
LISTEN 0 0 *:http *:*
|
||||
LISTEN 0 0 *:ssh *:*
|
||||
LISTEN 0 0 127.0.0.1:smtp *:*
|
||||
ESTAB 0 0 112.124.15.130:42071 42.156.166.25:http
|
||||
ESTAB 0 0 112.124.15.130:ssh 121.229.196.235:33398
|
||||
```
|
||||
|
||||
**显示 Sockets 摘要**
|
||||
**显示 Sockets 摘要**
|
||||
|
||||
```
|
||||
[root@localhost ~]# ss -s
|
||||
|
|
@ -142,54 +142,54 @@ Total: 172 (kernel 189)
|
|||
TCP: 10 (estab 2, closed 4, orphaned 0, synrecv 0, timewait 0/0), ports 5
|
||||
|
||||
Transport Total ip IPv6
|
||||
* 189 - -
|
||||
RAW 0 0 0
|
||||
UDP 5 5 0
|
||||
TCP 6 6 0
|
||||
INET 11 11 0
|
||||
FRAG 0 0 0
|
||||
* 189 - -
|
||||
RAW 0 0 0
|
||||
UDP 5 5 0
|
||||
TCP 6 6 0
|
||||
INET 11 11 0
|
||||
FRAG 0 0 0
|
||||
```
|
||||
|
||||
列出当前的established, closed, orphaned and waiting TCP sockets
|
||||
|
||||
**列出所有打开的网络连接端口**
|
||||
**列出所有打开的网络连接端口**
|
||||
|
||||
```
|
||||
[root@localhost ~]# ss -l
|
||||
Recv-Q Send-Q Local Address:Port Peer Address:Port
|
||||
0 0 *:3306 *:*
|
||||
0 0 *:http *:*
|
||||
0 0 *:ssh *:*
|
||||
0 0 127.0.0.1:smtp *:*
|
||||
Recv-Q Send-Q Local Address:Port Peer Address:Port
|
||||
0 0 *:3306 *:*
|
||||
0 0 *:http *:*
|
||||
0 0 *:ssh *:*
|
||||
0 0 127.0.0.1:smtp *:*
|
||||
```
|
||||
|
||||
**查看进程使用的socket**
|
||||
**查看进程使用的socket**
|
||||
|
||||
```
|
||||
[root@localhost ~]# ss -pl
|
||||
Recv-Q Send-Q Local Address:Port Peer Address:Port
|
||||
Recv-Q Send-Q Local Address:Port Peer Address:Port
|
||||
0 0 *:3306 *:* users:(("mysqld",1718,10))
|
||||
0 0 *:http *:* users:(("nginx",13312,5),("nginx",13333,5))
|
||||
0 0 *:ssh *:* users:(("sshd",1379,3))
|
||||
0 0 127.0.0.1:smtp *:* us
|
||||
```
|
||||
|
||||
**找出打开套接字/端口应用程序**
|
||||
**找出打开套接字/端口应用程序**
|
||||
|
||||
```
|
||||
[root@localhost ~]# ss -pl | grep 3306
|
||||
0 0 *:3306 *:* users:(("mysqld",1718,10))
|
||||
```
|
||||
|
||||
**显示所有UDP Sockets**
|
||||
**显示所有UDP Sockets**
|
||||
|
||||
```
|
||||
[root@localhost ~]# ss -u -a
|
||||
State Recv-Q Send-Q Local Address:Port Peer Address:Port
|
||||
UNCONN 0 0 *:syslog *:*
|
||||
UNCONN 0 0 112.124.15.130:ntp *:*
|
||||
UNCONN 0 0 10.160.7.81:ntp *:*
|
||||
UNCONN 0 0 127.0.0.1:ntp *:*
|
||||
State Recv-Q Send-Q Local Address:Port Peer Address:Port
|
||||
UNCONN 0 0 *:syslog *:*
|
||||
UNCONN 0 0 112.124.15.130:ntp *:*
|
||||
UNCONN 0 0 10.160.7.81:ntp *:*
|
||||
UNCONN 0 0 127.0.0.1:ntp *:*
|
||||
UNCONN 0 0 *:ntp *:*
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@ openssh套件中的客户端连接工具
|
|||
|
||||
**ssh命令** 是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
ssh(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-1:强制使用ssh协议版本1;
|
||||
|
|
@ -38,7 +38,7 @@ ssh(选项)(参数)
|
|||
-y:开启信任X11转发功能。
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
* 远程主机:指定要连接的远程ssh服务器;
|
||||
* 指令:要在远程ssh服务器上执行的指令。
|
||||
|
|
@ -50,12 +50,18 @@ ssh(选项)(参数)
|
|||
ssh user1@172.24.210.101
|
||||
# 指定端口
|
||||
ssh -p 2211 root@140.206.185.170
|
||||
|
||||
# ssh 大家族
|
||||
ssh user@ip -p22 # 默认用户名为当前用户名,默认端口为 22
|
||||
ssh-keygen # 为当前用户生成 ssh 公钥 + 私钥
|
||||
ssh-keygen -f keyfile -i -m key_format -e -m key_format # key_format: RFC4716/SSH2(default) PKCS8 PEM
|
||||
ssh-copy-id user@ip:port # 将当前用户的公钥复制到需要 ssh 的服务器的 ~/.ssh/authorized_keys,之后可以免密登录
|
||||
```
|
||||
|
||||
### 背后故事
|
||||
|
||||
> 英文:Tatu Ylonen
|
||||
> 编译:Linux中国/kenxx
|
||||
> 编译:Linux中国/kenxx
|
||||
> 来源:https://linux.cn/article-8476-1.html
|
||||
|
||||
为什么 SSH(安全终端)的端口号是 22 呢,这不是一个巧合,这其中有个我(Tatu Ylonen,SSH 协议的设计者)未曾诉说的故事。
|
||||
|
|
@ -73,37 +79,37 @@ ssh -p 2211 root@140.206.185.170
|
|||
|
||||
1995 年 7 月,就在我发布 ssh-1.0 前,我发送了一封邮件给 IANA:
|
||||
|
||||
> From ylo Mon Jul 10 11:45:48 +0300 1995
|
||||
> From: Tatu Ylonen
|
||||
> To: Internet Assigned Numbers Authority
|
||||
> Subject: 请求取得一个端口号
|
||||
> Organization: 芬兰赫尔辛基理工大学
|
||||
>
|
||||
> 亲爱的机构成员:
|
||||
>
|
||||
> 我写了个可以在不安全的网络环境中安全地从一台机器登录到另一台机器的程序。它主要是对现有的 telnet 协议以及 rlogin 协议的功能性提升和安全性改进。说的具体些,就是可以防御 IP、DNS > 或路由等欺骗行为。我打算将我的软件免费地发布在因特网上,以得到广泛地使用。
|
||||
>
|
||||
> 我希望为该软件注册一个特权端口号,要是这个端口号在 1 到 255 > 之间就更好了,这样它就可以用在名字服务器的 WKS 字段中了。
|
||||
>
|
||||
> 我在附件中附上了协议标准的草案。这个软件已经在本地运行了几个月了,我已准备在获得端口号后就发布。如果端口号分配一事安排的及时,我希望这周就将要发布的软件准备好。我目前在 beta 版测试时使用的端口号是 > 22,如果要是能够分配到这个端口,我就不用做什么更改了(目前这个端口在列表中还是空闲的)。
|
||||
>
|
||||
> 软件中服务的名称叫 ssh(系 Secure Shell 的缩写)。
|
||||
>
|
||||
> 您最真诚的,
|
||||
> Tatu Ylonen
|
||||
> From ylo Mon Jul 10 11:45:48 +0300 1995
|
||||
> From: Tatu Ylonen
|
||||
> To: Internet Assigned Numbers Authority
|
||||
> Subject: 请求取得一个端口号
|
||||
> Organization: 芬兰赫尔辛基理工大学
|
||||
>
|
||||
> 亲爱的机构成员:
|
||||
>
|
||||
> 我写了个可以在不安全的网络环境中安全地从一台机器登录到另一台机器的程序。它主要是对现有的 telnet 协议以及 rlogin 协议的功能性提升和安全性改进。说的具体些,就是可以防御 IP、DNS > 或路由等欺骗行为。我打算将我的软件免费地发布在因特网上,以得到广泛地使用。
|
||||
>
|
||||
> 我希望为该软件注册一个特权端口号,要是这个端口号在 1 到 255 > 之间就更好了,这样它就可以用在名字服务器的 WKS 字段中了。
|
||||
>
|
||||
> 我在附件中附上了协议标准的草案。这个软件已经在本地运行了几个月了,我已准备在获得端口号后就发布。如果端口号分配一事安排的及时,我希望这周就将要发布的软件准备好。我目前在 beta 版测试时使用的端口号是 > 22,如果要是能够分配到这个端口,我就不用做什么更改了(目前这个端口在列表中还是空闲的)。
|
||||
>
|
||||
> 软件中服务的名称叫 ssh(系 Secure Shell 的缩写)。
|
||||
>
|
||||
> 您最真诚的,
|
||||
> Tatu Ylonen
|
||||
|
||||
(LCTT 译注:DNS 协议中的 WKS 记录类型意即“众所周知的业务描述”,是类似于 A、MX 这样的 DNS 记录类型,用于描述某个 IP 所提供的服务,目前鲜见使用。参见: https://docs.oracle.com/cd/E19683-01/806-4077/dnsintro-154/index.html 。)
|
||||
|
||||
第二天,我就收到了 Joyce 发来的邮件:
|
||||
|
||||
> Date: Mon, 10 Jul 1995 15:35:33 -0700
|
||||
> From: jkrey@ISI.EDU
|
||||
> To: ylo@cs.hut.fi
|
||||
> Subject: 回复:请求取得一个端口号
|
||||
> Cc: iana@ISI.EDU
|
||||
> Tatu,
|
||||
> 我们将端口号 22 分配给 ssh 服务了,你目前是该服务的主要联系人。
|
||||
> Joyce
|
||||
> Date: Mon, 10 Jul 1995 15:35:33 -0700
|
||||
> From: jkrey@ISI.EDU
|
||||
> To: ylo@cs.hut.fi
|
||||
> Subject: 回复:请求取得一个端口号
|
||||
> Cc: iana@ISI.EDU
|
||||
> Tatu,
|
||||
> 我们将端口号 22 分配给 ssh 服务了,你目前是该服务的主要联系人。
|
||||
> Joyce
|
||||
|
||||
这就搞定了!SSH 的端口正式使用 22!!!
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
supervisord
|
||||
===
|
||||
|
||||
配置后台服务/常驻进程的工具
|
||||
|
||||
## 实例
|
||||
|
||||
```
|
||||
# supervisord
|
||||
apt-get install supervisor
|
||||
[program:app]
|
||||
command=/usr/bin/gunicorn -w 1 wsgiapp:application
|
||||
directory=/srv/www
|
||||
user=www-data
|
||||
|
||||
supervisord: 启动 supervisor 服务
|
||||
supervisorctl start app
|
||||
supervisorctl stop app
|
||||
supervisorctl reload # 修改/添加配置文件需要执行这个
|
||||
```
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
sz
|
||||
===
|
||||
|
||||
对话框式文件下载工具
|
||||
|
||||
## 实例
|
||||
|
||||
```
|
||||
apk add lrzsz # 安装
|
||||
|
||||
sz $file # 下载
|
||||
```
|
||||
|
|
@ -9,13 +9,13 @@ tail
|
|||
|
||||
注意:如果表示字节或行数的N值之前有一个”+”号,则从文件开头的第N项开始显示,而不是显示文件的最后N项。N值后面可以有后缀:b表示512,k表示1024,m表示1 048576(1M)。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
tail(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
--retry:即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用;
|
||||
|
|
@ -31,11 +31,11 @@ tail(选项)(参数)
|
|||
--version:显示指令的版本信息。
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
文件列表:指定要显示尾部内容的文件列表。
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
```
|
||||
tail file (显示文件file的最后10行)
|
||||
|
|
|
|||
|
|
@ -11,13 +11,13 @@ Linux下的归档使用工具,用来打包和备份。
|
|||
|
||||
为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
tar(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-A或--catenate:新增文件到以存在的备份文件;
|
||||
|
|
@ -45,11 +45,11 @@ tar(选项)(参数)
|
|||
--exclude=<范本样式>:排除符合范本样式的文件。
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
文件或目录:指定要打包的文件或目录列表。
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
```bash
|
||||
- z:有gzip属性的
|
||||
|
|
@ -85,84 +85,84 @@ tar -xf archive.tar # 从archive.tar提取所有文件。
|
|||
|
||||
#### zip格式
|
||||
|
||||
压缩: zip -r [目标文件名].zip [原文件/目录名]
|
||||
解压: unzip [原文件名].zip
|
||||
注:-r参数代表递归
|
||||
压缩: zip -r [目标文件名].zip [原文件/目录名]
|
||||
解压: unzip [原文件名].zip
|
||||
注:-r参数代表递归
|
||||
|
||||
#### tar格式(该格式仅仅打包,不压缩)
|
||||
|
||||
打包:tar -cvf [目标文件名].tar [原文件名/目录名]
|
||||
解包:tar -xvf [原文件名].tar
|
||||
注:c参数代表create(创建),x参数代表extract(解包),v参数代表verbose(详细信息),f参数代表filename(文件名),所以f后必须接文件名。
|
||||
打包:tar -cvf [目标文件名].tar [原文件名/目录名]
|
||||
解包:tar -xvf [原文件名].tar
|
||||
注:c参数代表create(创建),x参数代表extract(解包),v参数代表verbose(详细信息),f参数代表filename(文件名),所以f后必须接文件名。
|
||||
|
||||
#### tar.gz格式
|
||||
|
||||
方式一:利用前面已经打包好的tar文件,直接用压缩命令。
|
||||
|
||||
压缩:gzip [原文件名].tar
|
||||
解压:gunzip [原文件名].tar.gz
|
||||
压缩:gzip [原文件名].tar
|
||||
解压:gunzip [原文件名].tar.gz
|
||||
|
||||
方式二:一次性打包并压缩、解压并解包
|
||||
|
||||
打包并压缩: tar -zcvf [目标文件名].tar.gz [原文件名/目录名]
|
||||
解压并解包: tar -zxvf [原文件名].tar.gz
|
||||
注:z代表用gzip算法来压缩/解压。
|
||||
打包并压缩: tar -zcvf [目标文件名].tar.gz [原文件名/目录名]
|
||||
解压并解包: tar -zxvf [原文件名].tar.gz
|
||||
注:z代表用gzip算法来压缩/解压。
|
||||
|
||||
#### tar.bz2格式
|
||||
|
||||
方式一:利用已经打包好的tar文件,直接执行压缩命令:
|
||||
|
||||
压缩:bzip2 [原文件名].tar
|
||||
解压:bunzip2 [原文件名].tar.bz2
|
||||
方式二:一次性打包并压缩、解压并解包
|
||||
压缩:bzip2 [原文件名].tar
|
||||
解压:bunzip2 [原文件名].tar.bz2
|
||||
方式二:一次性打包并压缩、解压并解包
|
||||
|
||||
打包并压缩: tar -jcvf [目标文件名].tar.bz2 [原文件名/目录名]
|
||||
解压并解包: tar -jxvf [原文件名].tar.bz2
|
||||
注:小写j代表用bzip2算法来压缩/解压。
|
||||
打包并压缩: tar -jcvf [目标文件名].tar.bz2 [原文件名/目录名]
|
||||
解压并解包: tar -jxvf [原文件名].tar.bz2
|
||||
注:小写j代表用bzip2算法来压缩/解压。
|
||||
|
||||
#### tar.xz格式
|
||||
|
||||
方式一:利用已经打包好的tar文件,直接用压缩命令:
|
||||
|
||||
压缩:xz [原文件名].tar
|
||||
解压:unxz [原文件名].tar.xz
|
||||
方式二:一次性打包并压缩、解压并解包
|
||||
压缩:xz [原文件名].tar
|
||||
解压:unxz [原文件名].tar.xz
|
||||
方式二:一次性打包并压缩、解压并解包
|
||||
|
||||
打包并压缩: tar -Jcvf [目标文件名].tar.xz [原文件名/目录名]
|
||||
解压并解包: tar -Jxvf [原文件名].tar.xz
|
||||
注:大写J代表用xz算法来压缩/解压。
|
||||
打包并压缩: tar -Jcvf [目标文件名].tar.xz [原文件名/目录名]
|
||||
解压并解包: tar -Jxvf [原文件名].tar.xz
|
||||
注:大写J代表用xz算法来压缩/解压。
|
||||
|
||||
#### tar.Z格式(已过时)
|
||||
|
||||
方式一:利用已经打包好的tar文件,直接用压缩命令:
|
||||
|
||||
压缩:compress [原文件名].tar
|
||||
解压:uncompress [原文件名].tar.Z
|
||||
方式二:一次性打包并压缩、解压并解包
|
||||
压缩:compress [原文件名].tar
|
||||
解压:uncompress [原文件名].tar.Z
|
||||
方式二:一次性打包并压缩、解压并解包
|
||||
|
||||
打包并压缩: tar -Zcvf [目标文件名].tar.Z [原文件名/目录名]
|
||||
解压并解包: tar -Zxvf [原文件名].tar.Z
|
||||
注:大写Z代表用ncompress算法来压缩/解压。另,ncompress是早期Unix系统的压缩格式,但由于ncompress的压缩率太低,现已过时。
|
||||
打包并压缩: tar -Zcvf [目标文件名].tar.Z [原文件名/目录名]
|
||||
解压并解包: tar -Zxvf [原文件名].tar.Z
|
||||
注:大写Z代表用ncompress算法来压缩/解压。另,ncompress是早期Unix系统的压缩格式,但由于ncompress的压缩率太低,现已过时。
|
||||
|
||||
#### jar格式
|
||||
|
||||
压缩:jar -cvf [目标文件名].jar [原文件名/目录名]
|
||||
解压:jar -xvf [原文件名].jar
|
||||
注:如果是打包的是Java类库,并且该类库中存在主类,那么需要写一个META-INF/MANIFEST.MF配置文件,内容如下:
|
||||
压缩:jar -cvf [目标文件名].jar [原文件名/目录名]
|
||||
解压:jar -xvf [原文件名].jar
|
||||
注:如果是打包的是Java类库,并且该类库中存在主类,那么需要写一个META-INF/MANIFEST.MF配置文件,内容如下:
|
||||
|
||||
Manifest-Version: 1.0
|
||||
Created-By: 1.6.0_27 (Sun Microsystems Inc.)
|
||||
Main-class: the_name_of_the_main_class_should_be_put_here
|
||||
然后用如下命令打包:
|
||||
Manifest-Version: 1.0
|
||||
Created-By: 1.6.0_27 (Sun Microsystems Inc.)
|
||||
Main-class: the_name_of_the_main_class_should_be_put_here
|
||||
然后用如下命令打包:
|
||||
|
||||
jar -cvfm [目标文件名].jar META-INF/MANIFEST.MF [原文件名/目录名]
|
||||
这样以后就能用“java -jar [文件名].jar”命令直接运行主类中的public static void main方法了。
|
||||
|
||||
#### 7z格式
|
||||
|
||||
压缩:7z a [目标文件名].7z [原文件名/目录名]
|
||||
解压:7z x [原文件名].7z
|
||||
注:这个7z解压命令支持rar格式,即:
|
||||
压缩:7z a [目标文件名].7z [原文件名/目录名]
|
||||
解压:7z x [原文件名].7z
|
||||
注:这个7z解压命令支持rar格式,即:
|
||||
|
||||
7z x [原文件名].rar
|
||||
|
||||
|
|
@ -171,9 +171,9 @@ jar -cvfm [目标文件名].jar META-INF/MANIFEST.MF [原文件名/目录名]
|
|||
**将文件全部打包成tar包** :
|
||||
|
||||
```
|
||||
tar -cvf log.tar log2012.log 仅打包,不压缩!
|
||||
tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 压缩
|
||||
tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 压缩
|
||||
tar -cvf log.tar log2012.log 仅打包,不压缩!
|
||||
tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 压缩
|
||||
tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 压缩
|
||||
```
|
||||
|
||||
在选项`f`之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加`z`选项,则以.tar.gz或.tgz来代表gzip压缩过的tar包;如果加`j`选项,则以.tar.bz2来作为tar包名。
|
||||
|
|
@ -216,13 +216,13 @@ tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log
|
|||
tar -N "2012/11/13" -zcvf log17.tar.gz test
|
||||
```
|
||||
|
||||
**备份文件夹内容是排除部分文件:**
|
||||
**备份文件夹内容是排除部分文件:**
|
||||
|
||||
```
|
||||
tar --exclude scf/service -zcvf scf.tar.gz scf/*
|
||||
```
|
||||
|
||||
**其实最简单的使用 tar 就只要记忆底下的方式即可:**
|
||||
**其实最简单的使用 tar 就只要记忆底下的方式即可:**
|
||||
|
||||
```
|
||||
压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
telnet
|
||||
===
|
||||
|
||||
登录远程主机和管理
|
||||
登录远程主机和管理(测试ip端口是否连通)
|
||||
|
||||
## 补充说明
|
||||
|
||||
**telnet命令** 用于登录远程主机,对远程主机进行管理。telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统可能采用了telnet方式来提供远程登录,因此弄清楚telnet客户端的使用方式仍是很有必要的。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
telnet(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-8:允许使用8位字符资料,包括输入与输出;
|
||||
|
|
@ -36,12 +36,12 @@ telnet(选项)(参数)
|
|||
-X<认证形态>:关闭指定的认证形态。
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
* 远程主机:指定要登录进行管理的远程主机;
|
||||
* 端口:指定TELNET协议使用的端口号。
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
```
|
||||
$ telnet 192.168.2.10
|
||||
|
|
@ -52,7 +52,7 @@ Escape character is '^]'.
|
|||
localhost (Linux release 2.6.18-274.18.1.el5 #1 SMP Thu Feb 9 12:45:44 EST 2012) (1)
|
||||
|
||||
login: root
|
||||
Password:
|
||||
Password:
|
||||
Login incorrect
|
||||
```
|
||||
|
||||
|
|
@ -79,59 +79,59 @@ telnet: Unable to connect to remote host
|
|||
service xinetd restart
|
||||
```
|
||||
|
||||
配置参数,通常的配置如下:
|
||||
配置参数,通常的配置如下:
|
||||
|
||||
```
|
||||
service telnet
|
||||
{
|
||||
disable = no #启用
|
||||
flags = REUSE #socket可重用
|
||||
socket_type = stream #连接方式为TCP
|
||||
wait = no #为每个请求启动一个进程
|
||||
user = root #启动服务的用户为root
|
||||
server = /usr/sbin/in.telnetd #要激活的进程
|
||||
log_on_failure += USERID #登录失败时记录登录用户名
|
||||
}
|
||||
service telnet
|
||||
{
|
||||
disable = no #启用
|
||||
flags = REUSE #socket可重用
|
||||
socket_type = stream #连接方式为TCP
|
||||
wait = no #为每个请求启动一个进程
|
||||
user = root #启动服务的用户为root
|
||||
server = /usr/sbin/in.telnetd #要激活的进程
|
||||
log_on_failure += USERID #登录失败时记录登录用户名
|
||||
}
|
||||
```
|
||||
|
||||
如果要配置允许登录的客户端列表,加入
|
||||
如果要配置允许登录的客户端列表,加入
|
||||
```
|
||||
only_from = 192.168.0.2 #只允许192.168.0.2登录
|
||||
only_from = 192.168.0.2 #只允许192.168.0.2登录
|
||||
```
|
||||
如果要配置禁止登录的客户端列表,加入
|
||||
如果要配置禁止登录的客户端列表,加入
|
||||
```
|
||||
no_access = 192.168.0.{2,3,4} #禁止192.168.0.2、192.168.0.3、192.168.0.4登录
|
||||
no_access = 192.168.0.{2,3,4} #禁止192.168.0.2、192.168.0.3、192.168.0.4登录
|
||||
```
|
||||
如果要设置开放时段,加入
|
||||
如果要设置开放时段,加入
|
||||
```
|
||||
access_times = 9:00-12:00 13:00-17:00 # 每天只有这两个时段开放服务(我们的上班时间:P)
|
||||
access_times = 9:00-12:00 13:00-17:00 # 每天只有这两个时段开放服务(我们的上班时间:P)
|
||||
```
|
||||
|
||||
如果你有两个IP地址,一个是私网的IP地址如192.168.0.2,一个是公网的IP地址如218.75.74.83,如果你希望用户只能从私网来登录telnet服务,那么加入
|
||||
如果你有两个IP地址,一个是私网的IP地址如192.168.0.2,一个是公网的IP地址如218.75.74.83,如果你希望用户只能从私网来登录telnet服务,那么加入
|
||||
```
|
||||
bind = 192.168.0.2
|
||||
bind = 192.168.0.2
|
||||
```
|
||||
|
||||
各配置项具体的含义和语法可参考xined配置文件属性说明(man xinetd.conf)
|
||||
各配置项具体的含义和语法可参考xined配置文件属性说明(man xinetd.conf)
|
||||
|
||||
配置端口,修改services文件:
|
||||
|
||||
```
|
||||
# vi /etc/services
|
||||
# vi /etc/services
|
||||
```
|
||||
|
||||
找到以下两句
|
||||
找到以下两句
|
||||
|
||||
```
|
||||
telnet 23/tcp
|
||||
telnet 23/udp
|
||||
telnet 23/tcp
|
||||
telnet 23/udp
|
||||
```
|
||||
|
||||
如果前面有#字符,就去掉它。telnet的默认端口是23,这个端口也是黑客端口扫描的主要对象,因此最好将这个端口修改掉,修改的方法很简单,就是将23这个数字修改掉,改成大一点的数字,比如61123。注意,1024以下的端口号是internet保留的端口号,因此最好不要用,还应该注意不要与其它服务的端口冲突。
|
||||
如果前面有#字符,就去掉它。telnet的默认端口是23,这个端口也是黑客端口扫描的主要对象,因此最好将这个端口修改掉,修改的方法很简单,就是将23这个数字修改掉,改成大一点的数字,比如61123。注意,1024以下的端口号是internet保留的端口号,因此最好不要用,还应该注意不要与其它服务的端口冲突。
|
||||
|
||||
启动服务:
|
||||
```
|
||||
service xinetd restart
|
||||
service xinetd restart
|
||||
```
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
tmux
|
||||
===
|
||||
|
||||
比 screen 好用的 ssh 窗口管理工具
|
||||
|
||||
## 实例
|
||||
|
||||
```
|
||||
apk add tmux # 安装
|
||||
|
||||
# tmux
|
||||
tmux # new session
|
||||
tmux a # attach session
|
||||
C-b-d # detach session
|
||||
C-b-c # new window
|
||||
C-b-num # ch window
|
||||
exit # exit window
|
||||
C-b "/% # split window
|
||||
C-b 方向键
|
||||
C-b ? # keymap
|
||||
no rz/sz
|
||||
```
|
||||
|
|
@ -7,13 +7,13 @@ tree
|
|||
|
||||
**tree命令** 以树状图列出目录的内容。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
tree(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```bash
|
||||
------- 列表选项 -------
|
||||
|
|
@ -73,7 +73,7 @@ tree(选项)(参数)
|
|||
-- # Options processing terminator.
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
目录:执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。
|
||||
|
||||
|
|
@ -101,7 +101,7 @@ tree -L 2 > /home/www/tree.txt # 当前目录结果存到 tree.txt 文件中
|
|||
```
|
||||
|
||||
忽略多个文件夹
|
||||
|
||||
|
||||
```bash
|
||||
tree -I 'node_modules|icon|font' -L 2
|
||||
```
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
ulimit
|
||||
===
|
||||
|
||||
|
||||
控制shell程序的资源
|
||||
|
||||
## 补充说明
|
||||
|
|
@ -15,13 +15,13 @@ ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类
|
|||
|
||||
作为临时限制,ulimit 可以作用于通过使用其命令登录的 shell 会话,在会话终止时便结束限制,并不影响于其他 shell 会话。而对于长期的固定限制,ulimit 命令语句又可以被添加到由登录 shell 读取的文件中,作用于特定的 shell 用户。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
ulimit(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-a:显示目前资源限制的设定;
|
||||
|
|
@ -39,7 +39,7 @@ ulimit(选项)
|
|||
-v <虚拟内存大小>:指定可使用的虚拟内存上限,单位为KB。
|
||||
```
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
```
|
||||
[root@localhost ~]# ulimit -a
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
uname
|
||||
===
|
||||
|
||||
|
||||
显示Linux系统信息
|
||||
|
||||
## 补充说明
|
||||
|
||||
**uname命令** 用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
uname(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-a或--all:显示全部的信息;
|
||||
|
|
@ -29,7 +29,7 @@ uname(选项)
|
|||
--version:显示版本信息。
|
||||
```
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
使用uname命令查看全部信息:
|
||||
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
unzip
|
||||
===
|
||||
|
||||
|
||||
用于解压缩由zip命令压缩的压缩包
|
||||
|
||||
## 补充说明
|
||||
|
||||
**unzip命令** 用于解压缩由zip命令压缩的“.zip”压缩包。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
unzip(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-c:将解压缩的结果显示到屏幕上,并对字符做适当的转换;
|
||||
|
|
@ -42,11 +42,11 @@ unzip(选项)(参数)
|
|||
-Z:unzip-Z等于执行zipinfo指令。
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
压缩包:指定要解压的“.zip”压缩包。
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
将压缩文件text.zip在当前目录下解压缩。
|
||||
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
usermod
|
||||
===
|
||||
|
||||
|
||||
用于修改用户的基本信息
|
||||
|
||||
## 补充说明
|
||||
|
||||
**usermod命令** 用于修改用户的基本信息。usermod命令不允许你改变正在线上的使用者帐号名称。当usermod命令用来改变user id,必须确认这名user没在电脑上执行任何程序。你需手动更改使用者的crontab档。也需手动更改使用者的at工作档。采用NIS server须在server上更动相关的NIS设定。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
usermod(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-c<备注>:修改用户帐号的备注文字;
|
||||
|
|
@ -29,11 +29,11 @@ usermod(选项)(参数)
|
|||
-U:解除密码锁定。
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
登录名:指定要修改信息的用户登录名。
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
将newuser2添加到组staff中:
|
||||
|
||||
|
|
@ -59,5 +59,12 @@ usermod -L newuser1
|
|||
usermod -U newuser1
|
||||
```
|
||||
|
||||
增加用户到用户组中:
|
||||
|
||||
```
|
||||
apk add shadow # 安装 shadow 包, usermod 命令包含在 usermod 中
|
||||
|
||||
usermod -aG group user # 添加用户到用户组中
|
||||
```
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -7,13 +7,13 @@ watch
|
|||
|
||||
**watch命令** 以周期性的方式执行给定的指令,指令输出以全屏方式显示。watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
watch(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```bash
|
||||
-n # 或--interval watch缺省每2秒运行一下程序,可以用-n或-interval来指定间隔的时间。
|
||||
|
|
@ -22,11 +22,11 @@ watch(选项)(参数)
|
|||
-h, --help # 查看帮助文档
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
指令:需要周期性执行的指令。
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
```bash
|
||||
watch -n 1 -d netstat -ant # 命令:每隔一秒高亮显示网络链接数的变化情况
|
||||
|
|
|
|||
|
|
@ -7,14 +7,14 @@ POSIX 平台开发具有高压缩率的工具。
|
|||
|
||||
**xz命令** XZ Utils 是为 POSIX 平台开发具有高压缩率的工具。它使用 LZMA2 压缩算法,生成的压缩文件比 POSIX 平台传统使用的 gzip、bzip2 生成的压缩文件更小,而且解压缩速度也很快。最初 XZ Utils 的是基于 LZMA-SDK 开发,但是 LZMA-SDK 包含了一些 WINDOWS 平台的特性,所以 XZ Utils 为以适应 POSIX 平台作了大幅的修改。XZ Utils 的出现也是为了取代 POSIX 系统中旧的 LZMA Utils。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
xz(选项)(参数)
|
||||
xz [OPTION]... [FILE]...
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```bash
|
||||
-z, --compress 强制压缩
|
||||
|
|
@ -39,55 +39,55 @@ xz [OPTION]... [FILE]...
|
|||
-V, --version 显示版本号并退出
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
* 源文件:指定连接的源文件。
|
||||
* 目标文件:指定源文件的目标连接文件。
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
压缩一个文件 test.txt,压缩成功后生成 test.txt.xz, 原文件会被删除。
|
||||
|
||||
```bash
|
||||
$ xz test.txt
|
||||
$ ls test.txt*
|
||||
$ xz test.txt
|
||||
$ ls test.txt*
|
||||
|
||||
test.txt.xz
|
||||
test.txt.xz
|
||||
```
|
||||
|
||||
解压 test.txt.xz 文件,并使用参数 -k 保持原文件不被删除
|
||||
|
||||
```bash
|
||||
$ xz -d -k test.txt.xz
|
||||
$ ls test.txt*
|
||||
$ xz -d -k test.txt.xz
|
||||
$ ls test.txt*
|
||||
|
||||
test.txt.xz test.txt
|
||||
test.txt.xz test.txt
|
||||
```
|
||||
|
||||
使用参数 -l 显示 .xz 文件的基本信息。基本信息包括压缩率、数据完整性验证方式等。也可以和参数 -v 或 -vv 配合显示更详尽的信息。
|
||||
|
||||
```bash
|
||||
xz -l index.txt.xz
|
||||
# Strms Blocks Compressed Uncompressed Ratio Check Filename
|
||||
xz -l index.txt.xz
|
||||
# Strms Blocks Compressed Uncompressed Ratio Check Filename
|
||||
# 1 1 768 B 1,240 B 0.619 CRC64 index.txt.
|
||||
```
|
||||
|
||||
使用参数 -0, -1, -2, … -6, … -9 或参数 --fast, --best 设定压缩率。xz 命令的默认为 -6 ,对于大多数系统来说,甚至是一些较旧的系统,-4 … -6 压缩率预设值都不错的表现。
|
||||
|
||||
```
|
||||
$ xz -k7 xz_pipe_decomp_mini.c
|
||||
$ xz -k --fast xz_pipe_decomp_mini.c
|
||||
$ xz -k7 xz_pipe_decomp_mini.c
|
||||
$ xz -k --fast xz_pipe_decomp_mini.c
|
||||
```
|
||||
|
||||
使用参数 -H 显示 xz 命令所有 options. 参数 -H 比使用参数 --help 显示的内容更详细。
|
||||
|
||||
```
|
||||
$ xz -H | more
|
||||
$ xz -H | more
|
||||
```
|
||||
|
||||
借助 xargs 命令并行压缩多文件。下面的命令行可以将 /var/log 目录下所有的扩展名为 .log 的文件压缩。通过 xargs 命令同时运行多个 xz 进行压缩。
|
||||
|
||||
```bash
|
||||
# 运行此命令须有 root 权限。
|
||||
find /var/log -type f -iname "*.log" -print0 | xargs -P4 -n16 xz -T1
|
||||
find /var/log -type f -iname "*.log" -print0 | xargs -P4 -n16 xz -T1
|
||||
```
|
||||
|
|
|
|||
|
|
@ -9,13 +9,13 @@ yum
|
|||
|
||||
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
yum(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-h:显示帮助信息;
|
||||
|
|
@ -29,7 +29,7 @@ yum(选项)(参数)
|
|||
-C:完全从缓存中运行,而不去下载或者更新任何头文件。
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
```
|
||||
install:安装rpm软件包;
|
||||
|
|
@ -47,7 +47,7 @@ localupdate:显示本地rpm软件包进行更新;
|
|||
deplist:显示rpm软件包的所有依赖关系。
|
||||
```
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
部分常用的命令包括:
|
||||
|
||||
|
|
@ -55,7 +55,7 @@ deplist:显示rpm软件包的所有依赖关系。
|
|||
* 安装yum图形窗口插件:`yum install yumex`
|
||||
* 查看可能批量安装的列表:`yum grouplist`
|
||||
|
||||
**安装**
|
||||
**安装**
|
||||
|
||||
```bash
|
||||
yum install #全部安装
|
||||
|
|
@ -63,7 +63,7 @@ yum install package1 #安装指定的安装包package1
|
|||
yum groupinsall group1 #安装程序组group1
|
||||
```
|
||||
|
||||
**更新和升级**
|
||||
**更新和升级**
|
||||
|
||||
```bash
|
||||
yum update #全部更新
|
||||
|
|
@ -73,7 +73,7 @@ yum upgrade package1 #升级指定程序包package1
|
|||
yum groupupdate group1 #升级程序组group1
|
||||
```
|
||||
|
||||
**查找和显示**
|
||||
**查找和显示**
|
||||
|
||||
```bash
|
||||
# 检查 MySQL 是否已安装
|
||||
|
|
@ -86,7 +86,7 @@ yum list package1 #显示指定程序包安装情况package1
|
|||
yum groupinfo group1 #显示程序组group1信息yum search string 根据关键字string查找安装包
|
||||
```
|
||||
|
||||
**删除程序**
|
||||
**删除程序**
|
||||
|
||||
```bash
|
||||
yum remove | erase package1 #删除程序包package1
|
||||
|
|
@ -94,7 +94,7 @@ yum groupremove group1 #删除程序组group1
|
|||
yum deplist package1 #查看程序package1依赖情况
|
||||
```
|
||||
|
||||
**清除缓存**
|
||||
**清除缓存**
|
||||
|
||||
```bash
|
||||
yum clean packages #清除缓存目录下的软件包
|
||||
|
|
@ -102,5 +102,28 @@ yum clean headers #清除缓存目录下的 headers
|
|||
yum clean oldheaders #清除缓存目录下旧的 headers
|
||||
```
|
||||
|
||||
**更多实例**
|
||||
|
||||
```
|
||||
# yum
|
||||
/etc/yum.repos.d/ yum 源配置文件
|
||||
vi /etc/yum.repos.d/nginx.repo # 举个栗子: nginx yum源
|
||||
[nginx]
|
||||
name=nginx repo
|
||||
baseurl=http://nginx.org/packages/centos/6/$basearch/
|
||||
gpgcheck=0
|
||||
enabled=1
|
||||
|
||||
# yum mirror
|
||||
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
|
||||
wget https://mirror.tuna.tsinghua.edu.cn/help/centos/
|
||||
yum makecache
|
||||
|
||||
# 添加中文语言支持
|
||||
LANG=C # 原始语言
|
||||
LANG=zh_CN.utf8 # 切换到中文
|
||||
yum groupinstall "Chinese Support" # 添加中文语言支持
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@ zip
|
|||
|
||||
**zip命令** 可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。
|
||||
|
||||
### 语法
|
||||
### 语法
|
||||
|
||||
```
|
||||
zip(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
### 选项
|
||||
|
||||
```
|
||||
-A:调整可执行的自动解压缩文件;
|
||||
|
|
@ -52,12 +52,12 @@ zip(选项)(参数)
|
|||
-<压缩效率>:压缩效率是一个介于1~9的数值。
|
||||
```
|
||||
|
||||
### 参数
|
||||
### 参数
|
||||
|
||||
* zip压缩包:指定要创建的zip压缩包;
|
||||
* 文件列表:指定要压缩的文件列表。
|
||||
|
||||
### 实例
|
||||
### 实例
|
||||
|
||||
将`/home/Blinux/html/`这个目录下所有文件和文件夹打包为当前目录下的html.zip:
|
||||
|
||||
|
|
@ -77,6 +77,12 @@ zip -q -r html.zip html
|
|||
zip -q -r html.zip *
|
||||
```
|
||||
|
||||
压缩效率选择:
|
||||
|
||||
```
|
||||
zip -9 # 1-9 faster->better
|
||||
```
|
||||
|
||||
### 问题解决
|
||||
|
||||
CentOS7中命令找不到
|
||||
|
|
@ -86,7 +92,7 @@ CentOS7中命令找不到
|
|||
```
|
||||
|
||||
解决方法
|
||||
|
||||
|
||||
```bash
|
||||
yum install -y unzip zip
|
||||
```
|
||||
|
|
|
|||
Loading…
Reference in New Issue