添加命令

This commit is contained in:
jaywcjlove 2016-11-30 02:24:23 +08:00
parent 2ef249942a
commit 06c16b3ef3
60 changed files with 3174 additions and 0 deletions

46
command/arp.md Normal file
View File

@ -0,0 +1,46 @@
arp
===
显示和修改IP到MAC转换表
## 补充说明
**arp命令** 用于操作主机的arp缓冲区它可以显示arp缓冲区中的所有条目、删除指定的条目或者添加静态的ip地址与MAC地址对应关系。
### 语法
```
arp(选项)(参数)
```
### 选项
```
-a<主机>显示arp缓冲区的所有条目
-H<地址类型>指定arp指令使用的地址类型
-d<主机>从arp缓冲区中删除指定主机的arp条目
-D使用指定接口的硬件地址
-e以Linux的显示风格显示arp缓冲区中的条目
-i<接口>指定要操作arp缓冲区的网络接口
-s<主机><MAC地址>设置指定的主机的IP地址与MAC地址的静态映射
-n以数字方式显示arp缓冲区中的条目
-v显示详细的arp缓冲区条目包括缓冲区条目的统计信息
-f<文件>设置主机的IP地址与MAC地址的静态映射。
```
### 参数
主机查询arp缓冲区中指定主机的arp条目。
### 实例
```
[root@localhost ~]# arp -v
Address HWtype HWaddress Flags Mask Iface
192.168.0.134 ether 00:21:5E:C7:4D:88 C eth1
115.238.144.129 ether 38:22:D6:2F:B2:F1 C eth0
Entries: 2 Skipped: 0 Found: 2
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

50
command/arping.md Normal file
View File

@ -0,0 +1,50 @@
arping
===
通过发送ARP协议报文测试网络
## 补充说明
**arping命令** 是用于发送arp请求到一个相邻主机的工具arping使用arp数据包通过ping命令检查设备上的硬件地址。能够测试一个ip地址是否是在网络上已经被使用并能够获取更多设备信息。功能类似于ping。
### 语法
```
arping(选项)(参数)
```
### 选项
```
-b用于发送以太网广播帧FFFFFFFFFFFF。arping一开始使用广播地址在收到响应后就使用unicast地址。
-qquiet output不显示任何信息
-f表示在收到第一个响应报文后就退出
-w timeout设定一个超时时间单位是秒。如果到了指定时间arping还没到完全收到响应则退出
-c count表示发送指定数量的ARP请求数据包后就停止。如果指定了deadline选项则arping会等待相同数量的arp响应包直到超时为止
-s source设定arping发送的arp数据包中的SPA字段的值。如果为空则按下面处理如果是DAD模式冲突地址探测则设置为0.0.0.0如果是Unsolicited ARP模式Gratutious ARP则设置为目标地址否则从路由表得出
-I interface设置ping使用的网络接口。
```
### 参数
目的主机指定发送ARP报文的目的主机。
### 实例
```
[root@localhost ~]# arping www.baidu.com
ARPING 220.181.111.147 from 173.231.43.132 eth0
Unicast reply from 220.181.111.147 00:D0:03:[bc:48:00] 1.666ms
Unicast reply from 220.181.111.147 [00:D0:03:BC:48:00] 1.677ms
Unicast reply from 220.181.111.147 [00:D0:03:BC:48:00] 1.691ms
Unicast reply from 220.181.111.147 [00:D0:03:BC:48:00] 1.728ms
Unicast reply from 220.181.111.147 [00:D0:03:BC:48:00] 1.626ms
Unicast reply from 220.181.111.147 [00:D0:03:BC:48:00] 1.292ms
Unicast reply from 220.181.111.147 [00:D0:03:BC:48:00] 1.429ms
Unicast reply from 220.181.111.147 [00:D0:03:BC:48:00] 2.042ms
Sent 8 probes (1 broadcast(s))
Received 8 response(s)
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

98
command/chage.md Normal file
View File

@ -0,0 +1,98 @@
chage
===
修改帐号和密码的有效期限
## 补充说明
**chage命令** 是用来修改帐号和密码的有效期限。
### 语法
```
chage [选项] 用户名
```
### 选项
```
-m密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M密码保持有效的最大天数。
-w用户密码到期前提前收到警告信息的天数。
-E帐号到期的日期。过了这天此帐号将不可用。
-d上一次更改的日期。
-i停滞时期。如果一个密码已过期这些天那么此帐号将不可用。
-l例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
```
### 实例
可以编辑`/etc/login.defs`来设定几个参数,以后设置口令默认就按照参数设定为准:
```
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
```
当然在`/etc/default/useradd`可以找到如下2个参数进行设置
```
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
```
通过修改配置文件能对之后新建用户起作用而目前系统已经存在的用户则直接用chage来配置。
我的服务器root帐户密码策略信息如下
```
[root@linuxde ~]# chage -l root
最近一次密码修改时间 3月 12, 2013
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 0
两次改变密码之间相距的最大天数 99999
在密码过期之前警告的天数 7
```
我可以通过如下命令修改我的密码过期时间:
```
[root@linuxde ~]# chage -M 60 root
[root@linuxde ~]# chage -l root
最近一次密码修改时间 3月 12, 2013
密码过期时间 5月 11, 2013
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 0
两次改变密码之间相距的最大天数 60
在密码过期之前警告的天数 9
```
然后通过如下命令设置密码失效时间:
```
[root@linuxde ~]# chage -I 5 root
[root@linuxde ~]# chage -l root
最近一次密码修改时间 3月 12, 2013
密码过期时间 5月 11, 2013
密码失效时间 5月 16, 2013
帐户过期时间 :从不
两次改变密码之间相距的最小天数 0
两次改变密码之间相距的最大天数 60
在密码过期之前警告的天数 9
```
从上述命令可以看到在密码过期后5天密码自动失效这个用户将无法登陆系统了。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

75
command/chcon.md Normal file
View File

@ -0,0 +1,75 @@
chcon
===
修改对象(文件)的安全上下文
## 补充说明
**chcon命令** 是修改对象(文件)的安全上下文,比如:用户、角色、类型、安全级别。也就是将每个文件的安全环境变更至指定环境。使用`--reference`选项时把指定文件的安全环境设置为与参考文件相同。chcon命令位于`/usr/bin/chcon`。
### 语法
```
chcon [选项]... 环境 文件...
chcon [选项]... [-u 用户] [-r 角色] [-l 范围] [-t 类型] 文件...
chcon [选项]... --reference=参考文件 文件...
```
### 选项
```
-h, --no-dereference影响符号连接而非引用的文件。
--reference=参考文件:使用指定参考文件的安全环境,而非指定值。
-R, --recursive递归处理所有的文件及子目录。
-v, --verbose为处理的所有文件显示诊断信息。
-u, --user=用户:设置指定用户的目标安全环境。
-r, --role=角色:设置指定角色的目标安全环境。
-t, --type=类型:设置指定类型的目标安全环境。
-l, --range=范围:设置指定范围的目标安全环境。
```
以下选项是在指定了`-R`选项时被用于设置如何穿越目录结构体系。如果您指定了多于一个选项,那么只有最后一个会生效。
```
-H如果命令行参数是一个通到目录的符号链接则遍历符号链接。
-L遍历每一个遇到的通到目录的符号链接。
-P不遍历任何符号链接默认
--help显示此帮助信息并退出。
--version显示版本信息并退出。
```
### 实例
如果你想把这个ftp共享给匿名用户的话需要开启以下
```
chcon -R -t public_content_t /var/ftp
```
如果你想让你设置的FTP目录可以上传文件的话SELINUX需要设置
```
chcon -t public_content_rw_t /var/ftp/incoming
```
允许用户HHTP访问其家目录该设定限仅于用户的家目录主页
```
setsebool -P httpd_enable_homedirs 1
chcon -R -t httpd_sys_content_t ~user/public_html
```
如果你希望将samba目录共享给其他用户你需要设置
```
chcon -t samba_share_t /directory
```
共享rsync目录时
```
chcon -t public_content_t /directories
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

37
command/dhclient.md Normal file
View File

@ -0,0 +1,37 @@
dhclient
===
动态获取或释放IP地址
## 补充说明
**dhclient命令** 使用动态主机配置协议动态的配置网络接口的网络参数。
### 语法
```
dhclient(选项)(参数)
```
### 选项
```
0指定dhcp客户端监听的端口号
-d总是以前台方式运行程序
-q安静模式不打印任何错误的提示信息
-r释放ip地址。
```
### 参数
网络接口:操作的网络接口。
### 实例
```
dhclient -r #释放IP
dhclient #获取IP
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

66
command/dig.md Normal file
View File

@ -0,0 +1,66 @@
dig
===
域名查询工具
## 补充说明
**dig命令** 是常用的域名查询工具,可以用来测试域名系统工作是否正常。
### 语法
```
dig(选项)(参数)
```
### 选项
```
@<服务器地址>:指定进行域名解析的域名服务器;
-b<ip地址>当主机具有多个IP地址指定使用本机的哪个IP地址向域名服务器发送域名查询请求
-f<文件名称>指定dig以批处理的方式运行指定的文件中保存着需要批处理查询的DNS任务信息
-P指定域名服务器所使用端口号
-t<类型>指定要查询的DNS数据类型
-x<IP地址>:执行逆向域名查询;
-4使用IPv4
-6使用IPv6
-h显示指令帮助信息。
```
### 参数
* 主机:指定要查询域名主机;
* 查询类型指定DNS查询的类型
* 查询类指定查询DNS的class
* 查询选项:指定查询选项。
### 实例
```
[root@localhost ~]# dig www.linuxde.net
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.1 <<>> www.linuxde.net
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2115
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;www.linuxde.net. IN A
;; ANSWER SECTION:
www.linuxde.net. 0 IN CNAME host.1.linuxde.net.
host.1.linuxde.net. 0 IN A 100.42.212.8
;; AUTHORITY SECTION:
linuxde.net. 8 IN NS f1g1ns2.dnspod.net.
linuxde.net. 8 IN NS f1g1ns1.dnspod.net.
;; Query time: 0 msec
;; SERVER: 202.96.104.15#53(202.96.104.15)
;; WHEN: Thu Dec 26 11:14:37 2013
;; MSG SIZE rcvd: 121
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

31
command/dnsdomainname.md Normal file
View File

@ -0,0 +1,31 @@
dnsdomainname
===
定义DNS系统中FQDN名称的域名
## 补充说明
**dnsdomainname命令** 用于定义DNS系统中FQDN名称中的域名。
### 语法
```
dnsdomainname(选项)
```
### 选项
-v详细信息模式输出指令执行的详细信息。
### 实例
```
[root@AY1307311912260196fcZ ~]# dnsdomainname -v
gethostname()=`AY1307311912260196fcZ'
Resolving `AY1307311912260196fcZ' ...
Result: h_name=`AY1307311912260196fcZ'
Result: h_addr_list=`10.160.7.81'
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

42
command/domainname.md Normal file
View File

@ -0,0 +1,42 @@
domainname
===
显示和设置系统的NIS域名
## 补充说明
**domainname命令** 用于显示和设置系统的NIS域名。
### 语法
```
domainname(选项)(参数)
```
### 选项
```
-v详细信息模式
-F指定读取域名信息的文件。
```
### 参数
NIS域名指定要设置的NIS域名。
### 实例
```
[root@AY1307311912260196fcZ ~]# domainname -v
getdomainname()=`(none)'
(none)
[root@AY1307311912260196fcZ ~]# domainname
www.linuxde.net
[root@AY1307311912260196fcZ ~]# domainname -v
getdomainname()=`www.linuxde.net'
www.linuxde.net
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

46
command/e2label.md Normal file
View File

@ -0,0 +1,46 @@
e2label
===
设置第二扩展文件系统的卷标
## 补充说明
**e2label命令** 用来设置第二扩展文件系统的卷标。
### 语法
```
e2label(参数)
```
### 参数
* 文件系统:指定文件系统所对应的设备文件名;
* 新卷标:为文件系统指定新卷标。
### 实例
许多用了多年Linux的人可能也没有用过e2label命令。但是这个命令相当有效。在介绍它之前,我们先看看`/etc/fstab文`件:
```
label=//ext3 defaults 1 1
/dev/hda7 /usr ext3 defaults 1 1
```
第二行的意思很容易懂,就是把`/dev/hda7` mount到`/usr`上。第一行没有指明分区意思是把label(卷标)为/ 的分区mount到/上。这样写的好处在于即使如果把硬盘从主板上的ide0(hda) 换到ide2(hdc)上系统仍然可以自动挂载正确的分区。通常Linux安装的时候已经自动指定了卷标。如果是手动增加的新分区可以用下边的命令为 其指定卷标:
```
e2label /dev/hdax /new
mkdir /new
```
然后在`/etc/fstab`里加入:
```
label=/new /new ext3 defaults 1 1
```
下次重新起动机器的时候,就会把卷标为`/new`的分区挂接到`/new`上。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

30
command/findfs.md Normal file
View File

@ -0,0 +1,30 @@
findfs
===
标签或UUID查找文件系统
## 补充说明
**findfs命令** 依据卷标Label和UUID查找文件系统所对应的设备文件。findfs命令会搜索整个磁盘看是否有匹配的标签或者UUID没有如果有则打印到标注输出上。findfs命令也是e2fsprogs项目的一部分。
### 语法
```
findfs(参数)
```
### 参数
`LABEL=<卷标>`或者`UUID=<UUID>`按照卷标或者UUID查询文件系统。
### 实例
通过卷标名查找对应的文件系统:
```
findfs LABEL=/boot
/dev/hda1
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

25
command/ftptop.md Normal file
View File

@ -0,0 +1,25 @@
ftptop
===
proftpd服务器的连接状态
## 补充说明
**ftptop命令** 类似于top命令的显示风格显示proftpd服务器的连接状态。
### 语法
```
ftptop(选项)
```
### 选项
```
-D过滤正在下载的会话
-S仅显示指定虚拟主机的连接状态
-d指定屏幕刷新时间默认
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

44
command/getsebool.md Normal file
View File

@ -0,0 +1,44 @@
getsebool
===
查询SElinux策略内各项规则的布尔值
## 补充说明
**getsebool命令** 是用来查询SElinux策略内各项规则的布尔值。SELinux的策略与规则管理相关命令seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令。
### 语法
```
getsebool [-a] [布尔值条款]
```
### 选项
```
-a列出目前系统上面的所有布尔值条款设置为开启或关闭值。
```
### 实例
查询本系统内所有的布尔值设置状况:
```
getsebool -a
NetworkManager_disable_trans --> off
allow_console_login --> off
allow_cvs_read_shadow --> off
allow_daemons_dump_core --> on
....(底下省略)....
```
查询httpd_enable_homedirs是否为关闭若没关闭请关闭它
```
getsebool httpd_enable_homedirs
setsebool -P httpd_enable_homedirs=0 //0是关闭 1是开启
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

40
command/hostname.md Normal file
View File

@ -0,0 +1,40 @@
hostname
===
显示和设置系统的主机名
## 补充说明
**hostname命令** 用于显示和设置系统的主机名称。环境变量HOSTNAME也保存了当前的主机名。在使用hostname命令设置主机名后系统并不会永久保存新的主机名重新启动机器之后还是原来的主机名。如果需要永久修改主机名需要同时修改`/etc/hosts`和`/etc/sysconfig/network`的相关内容。
### 语法
```
hostname(选项)(参数)
```
### 选项
```
-v详细信息模式
-a显示主机别名
-d显示DNS域名
-f显示FQDN名称
-i显示主机的ip地址
-s显示短主机名称在第一个点处截断
-y显示NIS域名。
```
### 参数
主机名:指定要设置的主机名。
### 实例
```
[root@AY1307311912260196fcZ ~]# hostname
AY1307311912260196fcZ
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

29
command/htdigest.md Normal file
View File

@ -0,0 +1,29 @@
htdigest
===
Apache服务器内置工具
## 补充说明
**htdigest命令** 是Apache的Web服务器内置工具用于创建和更新储存用户名、域和用于摘要认证的密码文件。
### 语法
```
htdigest(选项)(参数)
```
### 选项
```
-c创建密码文件。
```
### 参数
* 密码文件:指定要创建或更新的密码文件;
* 域:指定用户名所属的域;
* 用户名:要创建或者更新的用户名。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

74
command/htpasswd.md Normal file
View File

@ -0,0 +1,74 @@
htpasswd
===
apache服务器创建密码认证文件
## 补充说明
**htpasswd命令** 是Apache的Web服务器内置工具用于创建和更新储存用户名、域和用户基本认证的密码文件。
### 语法
### htpasswd(选项)(参数)
### 选项
```
-c创建一个加密文件
-n不更新加密文件只将加密后的用户名密码显示在屏幕上
-m默认采用MD5算法对密码进行加密
-d采用CRYPT算法对密码进行加密
-p不对密码进行进行加密即明文密码
-s采用SHA算法对密码进行加密
-b在命令行中一并输入用户名和密码而不是根据提示输入密码
-D删除指定的用户。
```
### 参数
* 用户:要创建或者更新密码的用户名;
* 密码:用户的新密码。
### 实例
**利用htpasswd命令添加用户**
```
htpasswd -bc .passwd www.linuxde.net php
```
在bin目录下生成一个.passwd文件用户名www.linuxde.net密码php默认采用MD5加密方式。
**在原有密码文件中增加下一个用户**
```
htpasswd -b .passwd Jack 123456
```
去掉`-c`选项,即可在第一个用户之后添加第二个用户,依此类推。
**不更新密码文件,只显示加密后的用户名和密码**
```
htpasswd -nb Jack 123456
```
不更新.passwd文件只在屏幕上输出用户名和经过加密后的密码。
**利用htpasswd命令删除用户名和密码**
```
htpasswd -D .passwd Jack
```
**利用htpasswd命令修改密码**
```
htpasswd -D .passwd Jack
htpasswd -b .passwd Jack 123456
```
即先使用htpasswd删除命令删除指定用户再利用htpasswd添加用户命令创建用户即可实现修改密码的功能。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

26
command/ifcfg.md Normal file
View File

@ -0,0 +1,26 @@
ifcfg
===
置Linux中的网络接口参数
## 补充说明
**ifcfg命令** 是一个Bash脚本程序用来设置Linux中的网络接口参数。
### 语法
```
ifcfg(参数)
```
### 参数
```
网络接口:指定要操作的网络接口;
add/del添加或删除网络接口上的地址
ip地址指定IP地址和子网掩码
Stop停用指定的网络接口的IP地址。
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

27
command/ifdown.md Normal file
View File

@ -0,0 +1,27 @@
ifdown
===
禁用指定的网络接口
## 补充说明
**ifdown命令** 用于禁用指定的网络接口。
### 语法
```
ifdown(参数)
```
### 参数
网络接口:要禁用的网络接口。
### 实例
```
ifdown eth0 #禁用eth0
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

27
command/ifup.md Normal file
View File

@ -0,0 +1,27 @@
ifup
===
激活指定的网络接口
## 补充说明
**ifup命令** 用于激活指定的网络接口。
### 语法
```
ifup(参数)
```
### 参数
网络接口:要激活的网络接口。
### 实例
```
ifup eth0 #激活eth0
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

38
command/ipcrm.md Normal file
View File

@ -0,0 +1,38 @@
ipcrm
===
删除消息队列、信号集、或者共享内存标识
## 补充说明
**ipcrm命令** 用来删除一个或更多的消息队列、信号量集或者共享内存标识。
### 语法
```
ipcrm [ -m SharedMemoryID ] [ -M SharedMemoryKey ] [ -q MessageID ] [ -Q MessageKey ] [ -s SemaphoreID ] [ -S SemaphoreKey ]
```
### 选项
```
-m SharedMemory id 删除共享内存标识 SharedMemoryID。与 SharedMemoryID 有关联的共享内存段以及数据结构都会在最后一次拆离操作后删除。
-M SharedMemoryKey 删除用关键字 SharedMemoryKey 创建的共享内存标识。与其相关的共享内存段和数据结构段都将在最后一次拆离操作后删除。
-q MessageID 删除消息队列标识 MessageID 和与其相关的消息队列和数据结构。
-Q MessageKey 删除由关键字 MessageKey 创建的消息队列标识和与其相关的消息队列和数据结构。
-s SemaphoreID 删除信号量标识 SemaphoreID 和与其相关的信号量集及数据结构。
-S SemaphoreKey 删除由关键字 SemaphoreKey 创建的信号标识和与其相关的信号量集和数据结构。
```
msgctl、shmctl 和 semctl 子例程提供了删除操作的细节。标识和关键字可以用 ipcs 命令找到。
### 示例
如果要删除和 SharedMemoryID 18602 相关的共享内存段,请输入:
```
ipcrm -m 18602
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

38
command/ipcs.md Normal file
View File

@ -0,0 +1,38 @@
ipcs
===
分析消息队列共享内存和信号量
## 补充说明
**ipcs命令** 用于报告Linux中进程间通信设施的状态显示的信息包括消息列表、共享内存和信号量的信息。
### 语法
```
ipcs(选项)
```
### 选项
```
-a显示全部可显示的信息
-q显示活动的消息队列信息
-m显示活动的共享内存信息
-s显示活动的信号量信息。
```
### 实例
```
ipcs -a
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x7401833d 2654208 root 600 4 0
0x00000000 3145729 root 600 4194304 9 dest
0x7401833c 2621442 root 600 4 0
0xd201012b 3080195 root 600 1720 2
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

59
command/lastlog.md Normal file
View File

@ -0,0 +1,59 @@
lastlog
===
显示系统中所有用户最近一次登录信息
## 补充说明
**lastlog命令** 用于显示系统中所有用户最近一次登录信息。
lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间并格式化输出上次登录日志`/var/log/lastlog`的内容。它根据UID排序显示登录名、端口号tty和上次登录时间。如果一个用户从未登录过lastlog显示` **Never logged** `。注意需要以root身份运行该命令。
### 语法
```
lastlog(选项)
```
### 选项
```
-b<天数>:显示指定天数前的登录信息;
-h显示召集令的帮助信息
-t<天数>:显示指定天数以来的登录信息;
-u<用户名>:显示指定用户的最近登录信息。
```
### 实例
```
lastlog
Username Port From Latest
root pts/0 221.6.45.34 Tue Dec 17 09:40:48 +0800 2013
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
sync **Never logged in**
shutdown **Never logged in**
halt **Never logged in**
mail **Never logged in**
news **Never logged in**
uucp **Never logged in**
operator **Never logged in**
games **Never logged in**
gopher **Never logged in**
ftp **Never logged in**
nobody **Never logged in**
vcsa **Never logged in**
ntp **Never logged in**
sshd **Never logged in**
nscd **Never logged in**
ldap **Never logged in**
postfix **Never logged in**
www **Never logged in**
mysql **Never logged in**
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

119
command/lftp.md Normal file
View File

@ -0,0 +1,119 @@
lftp
===
优秀的文件客户端程序
## 补充说明
**lftp命令** 是一款优秀的文件客户端程序它支持ftp、SETP、HTTP和FTPs等多种文件传输协议。lftp支持tab自动补全记不得命令双击tab键就可以看到可能的选项了。
### 语法
```
lftp(选项)(参数)
```
### 选项
```
-f指定lftp指令要执行的脚本文件
-c执行指定的命令后退出
--help显示帮助信息
--version显示指令的版本号。
```
### 参数
站点要访问的站点的ip地址或者域名。
### 实例
**登录ftp**
```
lftp 用户名:密码@ftp地址:传送端口默认21
```
也可以先不带用户名登录然后在接口界面下用login命令来用指定账号登录密码不显示。
**查看文件与改变目录**
```
ls
cd 对应ftp目录
```
**下载**
get当然是可以的还可以
```
mget -c *.pdf #把所有的pdf文件以允许断点续传的方式下载
mirror aaa/ #将aaa目录整个的下载下来,子目录也会自动复制。
pget -c -n 10 file.dat #以最多10个线程以允许断点续传的方式下载file.dat可以通过设置pget:default-n的值而使用默认值。
```
**上传**
同样的put、mput都是对文件的操作和下载类似。
```
mirror -R 本地目录名
```
将本地目录以迭代包括子目录的方式反向上传到ftp site。
**模式设置**
```
set ftp:charset gbk
```
远程ftp site用gbk编码对应的要设置为utf8,只要替换gbk为utf8即可。
```
set file:charset utf8
```
本地的charset设定为utf8,如果你是gbk相应改掉。
```
set ftp:passive-mode 1
```
使用被动模式登录有些site要求必须用被动模式或者主动模式才可以登录这个开关就是设置这个的。0代表不用被动模式。
**书签**
其实命令行也可以有书签在lftp终端提示符下
```
bookmark add ustc
```
就可以把当前正在浏览的ftp site用ustc作为标签储存起来。以后在shell终端下直接`lftp ustc`就可以自动填好用户名和密码,进入对应的目录了。
```
bookmark edit
```
会调用编辑器手动修改书签。当然,也可以看到,这个书签其实就是个简单的文本文件。密码,用户名都可以看到。
**配置文件**
```
vim /etc/lftp.conf
```
一般,我会添加这几行:
```
set ftp:charset gbk
set file:charset utf8
set pget:default-n 5
```
这样就不用每次进入都要打命令了。其他的set可以自己tab然后help来看。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

28
command/logsave.md Normal file
View File

@ -0,0 +1,28 @@
logsave
===
将命令的输出信息保存到指定的日志文件
## 补充说明
**logsave命令** 运行给定的命令,并将命令的输出信息保存到指定的日志文件中。
### 语法
```
logsave(选项)(参数)
```
### 选项
```
-a追加信息到指定的日志文件中。
```
### 参数
* 日志文件:指定记录运行信息的日志文件;
* 指令:需要执行的指令。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

71
command/logwatch.md Normal file
View File

@ -0,0 +1,71 @@
logwatch
===
可定制和可插入式的日志监视系统
## 补充说明
**logwatch命令** 是一个可定制和可插入式的日志监视系统它通过遍历给定时间范围内的系统日志文件而产生日志报告。logwatch默认每天执行一次可以从`/etc/cron.daily`里看到。
### 语法
```
logwatch(选项)
```
### 选项
```
--detail<报告详细程度>:指定日志报告的详细程度;
--logfile<日志文件>:仅处理指定的日志文件;
--service<服务名>:仅处理指定服务的日志文件;
--print打印结果到标准输出
--mailto<邮件地址>:将结果发送到指定邮箱;
--range<日期范围>:指定处理日志的日期范围;
--archives处理归档日志文件
--debug<调试等级>:调试模式;
--save<文件名>:将结果保存到指定文件中,而不显示或者发送到指定邮箱;
--logdir<目录>:指定查找日志文件的目录,而不使用默认的日志目录;
--hostname<主机名>:指定在日志报告中使用的主机名,不使用系统默认的主机名;
--numeric在报告中显示ip地址而不是主机名
--help显示指令的帮助信息。
```
### 实例
检查你的主机上是否已经存在LogwatchRedhat默认已经安装了Logwatch不过版本比较旧
```
rpm -qa logwatch
```
如果主机上没有logwatch则执行
```
rpm -Ivh logwatch***.rpm
```
如果有老版本的logwatch则执行
```
rpm -Uvh logwatch***.rpm
```
安装完毕后,开始配置:
可以修改和添加它的logfiles、services和其他配置但默认已经有很多脚本了只要在1里设置`Detail = High`就可以了。
* 可以添加新的配置到`/etc/logwatch/conf/logwatch.conf`
* 也可以修改`/usr/share/logwatch/default.conf/logwatch.conf`
`/etc/logwatch/conf/`会自动覆盖`/usr/share/logwatch/default.conf/`下的同名文件。
如果没有设置logwatch.conf也没关系可以直接在命令行下设置。
```
logwatch --detail High --Service All --range All --print 基本就可以显示出所有日志的情况了
logwatch --service sshd --detail High 只看sshd的日志情况
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

30
command/mysql.md Normal file
View File

@ -0,0 +1,30 @@
mysql
===
MySQL服务器客户端工具
## 补充说明
**mysql命令** 是MySQL数据库服务器的客户端工具它工作在命令行终端中完成对远程MySQL数据库服务器的操作。
### 语法
```
mysql(选项)(参数)
```
### 选项
```
-hMySQL服务器的ip地址或主机名
-u连接MySQL服务器的用户名
-e执行mysql内部命令
-p连接MySQL服务器的密码。
```
### 参数
数据库:指定连接服务器后自动打开的数据库。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

52
command/mysqladmin.md Normal file
View File

@ -0,0 +1,52 @@
mysqladmin
===
MySQL服务器管理客户端
## 补充说明
**mysqladmin命令** 是mysql服务器管理任务的客户端工具它可以检查mytsql服务器的配置和当前工作状态创建和删除数据库创建用户和修改用户密码等操作。
### 语法
```
mysqladmin(选项)(参数)
```
### 选项
```
-hMySQL服务器主机名或ip地址
-u连接MySQL服务器的用户名
-p连接MySQL服务器的密码
--help显示帮助信息。
```
### 参数
管理命令需要在MySQL服务器上执行的管理命令。
**mysqladmin支持下列命令**
```
create databasename创建一个新数据库
drop databasename删除一个数据库及其所有表
extended-status给出服务器的一个扩展状态消息
flush-hosts清空所有缓存的主机
flush-logs清空所有日志
flush-tables清空所有表
flush-privileges再次装载授权表(同reload)
kill id,id,...杀死mysql线程
password 新口令:将老密码改为新密码;
ping检查mysqld是否活着
processlist显示服务其中活跃线程列表
reload重载授权表
refresh清空所有表并关闭和打开日志文件
shutdown关掉服务器
status给出服务器的简短状态消息
variables打印出可用变量
version得到服务器的版本信息。
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

62
command/mysqldump.md Normal file
View File

@ -0,0 +1,62 @@
mysqldump
===
MySQL数据库中备份工具
## 补充说明
**mysqldump命令** 是mysql数据库中备份工具用于将MySQL服务器中的数据库以标准的sql语言的方式导出并保存到文件中。
### 语法
```
mysqldump(选项)
```
### 选项
```
--add-drop-table在每个创建数据库表语句前添加删除数据库表的语句
--add-locks备份数据库表时锁定数据库表
--all-databases备份MySQL服务器上的所有数据库
--comments添加注释信息
--compact压缩模式产生更少的输出
--complete-insert输出完成的插入语句
--databases指定要备份的数据库
--default-character-set指定默认字符集
--force当出现错误时仍然继续备份操作
--host指定要备份数据库的服务器
--lock-tables备份前锁定所有数据库表
--no-create-db禁止生成创建数据库语句
--no-create-info禁止生成创建数据库库表语句
--password连接MySQL服务器的密码
--portMySQL服务器的端口号
--user连接MySQL服务器的用户名。
```
### 实例
**导出整个数据库**
```
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u linuxde -p smgp_apps_linuxde > linuxde.sql
```
**导出一个表**
```
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u linuxde -p smgp_apps_linuxde users > linuxde_users.sql
```
**导出一个数据库结构**
```
mysqldump -u linuxde -p -d --add-drop-table smgp_apps_linuxde > linuxde_db.sql
```
`-d`没有数据,`--add-drop-tabl`e每个create语句之前增加一个`drop table`
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

33
command/mysqlshow.md Normal file
View File

@ -0,0 +1,33 @@
mysqlshow
===
显示MySQL中数据库相关信息
## 补充说明
**mysqlshow命令** 用于显示mysql服务器中数据库、表和列表信息。
### 语法
```
mysqlshow(选项)(参数)
```
### 选项
```
-hMySQL服务器的ip地址或主机名
-u连接MySQL服务器的用户名
-p连接MySQL服务器的密码
--count显示每个数据表中数据的行数
-k显示数据表的索引
-t显示数据表的类型
-i显示数据表的额外信息。
```
### 参数
数据库信息:指定要显示的数据库信息,可以是一个数据库名,或者是数据库名和表名,或者是数据库名、表名和列名。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

56
command/nfsstat.md Normal file
View File

@ -0,0 +1,56 @@
nfsstat
===
列出NFS客户端和服务器的工作状态
## 补充说明
**nfsstat命令** 用于列出NFS客户端和服务器的工作状态。
### 语法
```
nfsstat(选项)
```
### 选项
```
-s仅列出NFS服务器端状态
-c仅列出NFS客户端状态
-n仅列出NFS状态默认显示nfs客户端和服务器的状态
-2仅列出NFS版本2的状态
-3仅列出NFS版本3的状态
-4仅列出NFS版本4的状态
-m打印以加载的nfs文件系统状态
-r仅打印rpc状态。
```
### 实例
要显示关于客户机发送和拒绝的RPC和NFS调用数目的信息输入
```
nfsstat -c
```
要显示和打印与客户机NFS调用相关的信息输入如下命令
```
nfsstat -cn
```
要显示和打印客户机和服务器的与RPC调用相关的信息输入如下命令
```
nfsstat -r
```
要显示关于服务器接收和拒绝的RPC和NFS调用数目的信息输入如下命令
```
nfsstat s
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

23
command/nisdomainname.md Normal file
View File

@ -0,0 +1,23 @@
nisdomainname
===
显示主机NIS的域名
## 补充说明
**nisdomainname命令** 用于显示主机NIS的域名。
### 语法
```
nisdomainname(选项)
```
### 选项
```
-v详细信息模式。
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

38
command/nohup.md Normal file
View File

@ -0,0 +1,38 @@
nohup
===
将程序以忽略挂起信号的方式运行起来
## 补充说明
**nohup命令** 可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。
无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到`$HOME/nohup.out`文件中。如果没有文件能创建或打开以用于追加,那么 command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。
### 语法
nohup(选项)(参数)
### 选项
```
--help在线帮助
--version显示版本信息。
```
### 参数
程序及选项:要运行的程序及选项。
### 实例
使用nohup命令提交作业如果使用nohup命令提交作业那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中除非另外指定了输出文件
```
nohup command > myout.file 2>&1 &
```
在上面的例子中输出被重定向到myout.file文件中。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

44
command/nslookup.md Normal file
View File

@ -0,0 +1,44 @@
nslookup
===
查询域名DNS信息的工具
## 补充说明
**nslookup命令** 是常用域名查询工具就是查DNS信息用的命令。
nslookup4有两种工作模式即“交互模式”和“非交互模式”。在“交互模式”下用户可以向域名服务器查询各类主机、域名的信息或者输出域名中的主机列表。而在“非交互模式”下用户可以针对一个主机或域名仅仅获取特定的名称或所需信息。
进入交互模式直接输入nslookup命令不加任何参数则直接进入交互模式此时nslookup会连接到默认的域名服务器即`/etc/resolv.conf`的第一个dns地址。或者输入`nslookup -nameserver/ip`。进入非交互模式,就直接输入`nslookup 域名`就可以了。
### 语法
```
nslookup(选项)(参数)
```
### 选项
```
-sil不显示任何警告信息。
```
### 参数
域名:指定要查询域名。
### 实例
```
[root@localhost ~]# nslookup www.linuxde.net
Server: 202.96.104.15
Address: 202.96.104.15#53
Non-authoritative answer:
www.linuxde.net canonical name = host.1.linuxde.net.
Name: host.1.linuxde.net
Address: 100.42.212.8
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

213
command/openssl.md Normal file
View File

@ -0,0 +1,213 @@
openssl
===
强大的安全套接字层密码库
## 补充说明
**OpenSSL** 是一个强大的安全套接字层密码库囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议并提供丰富的应用程序供测试或其它目的使用。在OpenSSL被曝出现严重安全漏洞后发现多数通过SSL协议加密的网站使用名为OpenSSL的开源软件包。由于这是互联网应用最广泛的安全传输方法被网银、在线支付、电商网站、门户网站、电子邮件等重要网站广泛使用所以该漏洞影响范围广大。
OpenSSL有两种运行模式交互模式和批处理模式。
直接输入openssl回车进入交互模式输入带命令选项的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、SHASHA1和RIPEMD。SHA算法事实上包括了SHA和SHA1两种信息摘要算法此外OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。 
**密钥和证书管理**
密钥和证书管理是PKI的一个重要组成部分OpenSSL为之提供了丰富的功能支持多种标准。 
首先OpenSSL实现了ASN.1的证书和密钥相关标准提供了对证书、公钥、私钥、证书请求以及CRL等数据对象的DER、PEM和BASE64的编解码功能。OpenSSL提供了产生各种公开密钥对和对称密钥的方法、函数和应用程序同时提供了对公钥和私钥的DER编解码功能。并实现了私钥的PKCS#12和PKCS#8的编解码功能。OpenSSL在标准中提供了对私钥的加密保护功能使得密钥可以安全地进行存储和分发。 
在此基础上OpenSSL实现了对证书的X.509标准编解码、PKCS#12格式的编解码以及PKCS#7的编解码功能。并提供了一种文本数据库支持证书的管理功能包括证书密钥产生、请求产生、证书签发、吊销和验证等功能。 
事实上OpenSSL提供的CA应用程序就是一个小型的证书管理中心CA实现了证书签发的整个流程和证书管理的大部分机制。
### 实例
**1、消息摘要算法应用例子**
用SHA1算法计算文件file.txt的哈西值输出到stdout
```
# openssl dgst -sha1 file.txt
```
用SHA1算法计算文件file.txt的哈西值输出到文件digest.txt
```
# openssl sha1 -out digest.txt file.txt
```
用DSS1(SHA1)算法为文件file.txt签名输出到文件dsasign.bin。签名的private key必须为DSA算法产生的保存在文件dsakey.pem中。
```
# openssl dgst -dss1 -sign dsakey.pem -out dsasign.bin file.txt
```
用dss1算法验证file.txt的数字签名dsasign.bin验证的private key为DSA算法产生的文件dsakey.pem。
```
# openssl dgst -dss1 -prverify dsakey.pem -signature dsasign.bin file.txt
```
用sha1算法为文件file.txt签名,输出到文件rsasign.bin签名的private key为RSA算法产生的文件rsaprivate.pem。
```
# openssl sha1 -sign rsaprivate.pem -out rsasign.bin file.txt
```
# 用sha1算法验证file.txt的数字签名rsasign.bin验证的public key为RSA算法生成的rsapublic.pem。
```
# openssl sha1 -verify rsapublic.pem -signature rsasign.bin file.txt
```
**2、对称加密应用例子**
对称加密应用例子用DES3算法的CBC模式加密文件plaintext.doc加密结果输出到文件ciphertext.bin。
```
# openssl enc -des3 -salt -in plaintext.doc -out ciphertext.bin
```
用DES3算法的OFB模式解密文件ciphertext.bin提供的口令为trousers输出到文件plaintext.doc。注意因为模式不同该命令不能对以上的文件进行解密。
```
# openssl enc -des-ede3-ofb -d -in ciphertext.bin -out plaintext.doc -pass pass:trousers
```
用Blowfish的CFB模式加密plaintext.doc口令从环境变量PASSWORD中取输出到文件ciphertext.bin。
```
# openssl bf-cfb -salt -in plaintext.doc -out ciphertext.bin -pass env:PASSWORD
```
给文件ciphertext.bin用base64编码输出到文件base64.txt。
```
# openssl base64 -in ciphertext.bin -out base64.txt
```
用RC5算法的CBC模式加密文件plaintext.doc输出到文件ciphertext.binsalt、key和初始化向量(iv)在命令行指定。
```
# openssl rc5 -in plaintext.doc -out ciphertext.bin -S C62CB1D49F158ADC -iv E9EDACA1BD7090C6 -K 89D4B1678D604FAA3DBFFD030A314B29
```
**3、Diffie-Hellman应用例子**
使用生成因子2和随机的1024-bit的素数产生D0ffie-Hellman参数输出保存到文件dhparam.pem
```
# openssl dhparam -out dhparam.pem -2 1024
```
从dhparam.pem中读取Diffie-Hell参数以C代码的形式输出到stdout。
```
# openssl dhparam -in dhparam.pem -noout -C
```
**4、DSA应用例子应用例子**
生成1024位DSA参数集并输出到文件dsaparam.pem。
```
# openssl dsaparam -out dsaparam.pem 1024
```
使用参数文件dsaparam.pem生成DSA私钥匙采用3DES加密后输出到文件dsaprivatekey.pem
```
# openssl gendsa -out dsaprivatekey.pem -des3 dsaparam.pem
```
使用私钥匙dsaprivatekey.pem生成公钥匙输出到dsapublickey.pem
```
# openssl dsa -in dsaprivatekey.pem -pubout -out dsapublickey.pem
```
从dsaprivatekey.pem中读取私钥匙解密并输入新口令进行加密然后写回文件dsaprivatekey.pem
```
# openssl dsa -in dsaprivatekey.pem -out dsaprivatekey.pem -des3 -passin
```
**5、RSA应用例子**
产生1024位RSA私匙用3DES加密它口令为trousers输出到文件rsaprivatekey.pem
```
# openssl genrsa -out rsaprivatekey.pem -passout pass:trousers -des3 1024
```
从文件rsaprivatekey.pem读取私匙用口令trousers解密生成的公钥匙输出到文件rsapublickey.pem
```
# openssl rsa -in rsaprivatekey.pem -passin pass:trousers -pubout -out rsapubckey.pem
```
用公钥匙rsapublickey.pem加密文件plain.txt输出到文件cipher.txt
```
# openssl rsautl -encrypt -pubin -inkey rsapublickey.pem -in plain.txt -out cipher.txt
```
使用私钥匙rsaprivatekey.pem解密密文cipher.txt输出到文件plain.txt
```
# openssl rsautl -decrypt -inkey rsaprivatekey.pem -in cipher.txt -out plain.txt
```
用私钥匙rsaprivatekey.pem给文件plain.txt签名输出到文件signature.bin
```
# openssl rsautl -sign -inkey rsaprivatekey.pem -in plain.txt -out signature.bin
```
用公钥匙rsapublickey.pem验证签名signature.bin输出到文件plain.txt
```
# openssl rsautl -verify -pubin -inkey rsapublickey.pem -in signature.bin -out plain
```
从X.509证书文件cert.pem中获取公钥匙用3DES加密mail.txt输出到文件mail.enc
```
# openssl smime -encrypt -in mail.txt -des3 -out mail.enc cert.pem
```
从X.509证书文件cert.pem中获取接收人的公钥匙用私钥匙key.pem解密S/MIME消息mail.enc结果输出到文件mail.txt
```
# openssl smime -decrypt -in mail.enc -recip cert.pem -inkey key.pem -out mail.txt
```
cert.pem为X.509证书文件用私匙key,pem为mail.txt签名证书被包含在S/MIME消息中输出到文件mail.sgn
```
# openssl smime -sign -in mail.txt -signer cert.pem -inkey key.pem -out mail.sgn
```
验证S/MIME消息mail.sgn输出到文件mail.txt签名者的证书应该作为S/MIME消息的一部分包含在mail.sgn中
```
# openssl smime -verify -in mail.sgn -out mail.txt
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

61
command/pgrep.md Normal file
View File

@ -0,0 +1,61 @@
pgrep
===
设置用户的认证信息,包括用户密码、密码过期时间等
## 补充说明
**pgrep命令** 以名称为依据从运行进程队列中查找进程并显示查找到的进程id。每一个进程ID以一个十进制数表示通过一个分割字符串和下一个ID分开默认的分割字符串是一个新行。对于每个属性选项用户可以在命令行上指定一个以逗号分割的可能值的集合。
### 语法
```
pgrep(选项)(参数)
```
### 选项
```
-o仅显示找到的最小起始进程号
-n仅显示找到的最大结束进程号
-l显示进程名称
-P指定父进程号
-g指定进程组
-t指定开启进程的终端
-u指定进程的有效用户ID。
```
### 参数
进程名称指定要查找的进程名称同时也支持类似grep指令中的匹配模式。
### 实例
```
pgrep -lo httpd
4557 httpd
root@localhost ~ httpd
4566 httpd
[root@localhost ~]# pgrep -l httpd
4557 httpd
4560 httpd
4561 httpd
4562 httpd
4563 httpd
4564 httpd
4565 httpd
4566 httpd
[root@localhost ~]# pgrep httpd 4557
4560
4561
4562
4563
4564
4565
4566
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

43
command/pidof.md Normal file
View File

@ -0,0 +1,43 @@
pidof
===
查找指定名称的进程的进程号ID号
## 补充说明
**pidof命令** 用于查找指定名称的进程的进程号id号。
### 语法
```
pidof(选项)(参数)
```
### 选项
```
-s仅返回一个进程号
-c仅显示具有相同“root”目录的进程
-x显示由脚本开启的进程
-o指定不显示的进程ID。
```
### 参数
进程名称:指定要查找的进程名称。
### 实例
```
pidof nginx
13312 5371
pidof crond
1509
pidof init
1
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

69
command/restorecon.md Normal file
View File

@ -0,0 +1,69 @@
restorecon
===
恢复文件的安全上下文
## 补充说明
**restorecon命令** 用来恢复SELinux文件属性即恢复文件的安全上下文。
### 语法
```
restorecon [-iFnrRv] [-e excludedir ] [-o filename ] [-f filename | pathname...]
```
### 选项
```
-i忽略不存在的文件。
-finfilename 文件 infilename 中记录要处理的文件。
-edirectory 排除目录。
-R/-r递归处理目录。
-n不改变文件标签。
-o/outfilename保存文件列表到 outfilename在文件不正确情况下。
-v将过程显示到屏幕上。
-F强制恢复文件安全语境。
```
### 实例
假设CentOS安装了apache网页默认的主目录是`/var/www/html`我们经常遇到这样的问题在其他目录中创建了一个网页文件然后用mv移动到网页默认目录`/var/www/html`中但是在浏览器中却打不开这个文件这很可能是因为这个文件的SELinux配置信息是继承原来那个目录的与`/var/www/html`目录不同使用mv移动的时候这个SELinux配置信息也一起移动过来了从而导致无法打开页面具体请看下面的实例
<pre style="color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">/*使用CentOS举例,如果默认没有安装apache确保网络连接使用下面的命令安装*/
root@linuxde.net ~ install httpd
/*我们在root的家目录新建一个html文件*/
root@linuxde.net ~
/root
root@linuxde.net ~ index.html
/*随便输入一段文字,保存退出*/
welcome to www.linuxde.net
/*将这个文件mv到网页默认目录下*/
[root@linuxde.net ~]# mv index.html /var/www/html/
/*
* 这个时候我们使用firefox浏览器输入127.0.0.1/index.html发现打不开
* 查看一下SELinux的日志文件发现了下面这一段报错信息从这个报错信息不难看出
* 进程httpd访问网页主目录中的index.html时被SELinux阻止原因是因为SELinux配置信息不正确,
* 正确的SELinux配置信息应该是scontext=后面的部分,
* 而index.html文件的SELinux配置信息却是tcontext=后面的部分,
* 从tcontext=的第三段“admin_home_t”不难看出这个文件的SELinux配置信息是root用户家目录的。
*/
type=AVC msg=audit(1378974214.610:465): avc: denied { open } for pid=2359 comm="httpd" path="/var/www/html/index.html" dev="sda1" ino=1317685 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file
/*使用ls -Z也可以看出,文件和目录的SELinux信息不匹配*/
[root@linuxde.net html]# ls -Z /var/www/html/
.... unconfined_u:object_r:admin_home_t:s0 index.html
[root@linuxde.net html]# ls -Zd /var/www/html/
.... system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
/*使用restorecon来恢复网页主目录中所有文件的SELinux配置信息(如果目标为一个目录,可以添加-R参数递归)*/
[root@linuxde.net html]# restorecon -R /var/www/html/
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

105
command/route.md Normal file
View File

@ -0,0 +1,105 @@
route
===
显示并设置Linux中静态路由表
## 补充说明
**route命令** 用来显示并设置Linux内核中的网络路由表route命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信需要一台连接两个网络的路由器或者同时位于两个网络的网关来实现。
在Linux系统中设置路由通常是为了解决以下问题该Linux系统在一个局域网中局域网中有一个网关能够让机器访问Internet那么就需要将这台机器的ip地址设置为Linux机器的默认路由。要注意的是直接在命令行下执行route命令来添加路由不会永久保存当网卡重启或者机器重启之后该路由就失效了可以在`/etc/rc.local`中添加route命令来保证该路由设置永久有效。
### 语法
```
route(选项)(参数)
```
### 选项
```
-A设置地址类型
-C打印将Linux核心的路由缓存
-v详细信息模式
-n不执行DNS反向查找直接显示数字形式的IP地址
-enetstat格式显示路由表
-net到一个网络的路由表
-host到一个主机的路由表。
```
### 参数
```
Add增加指定的路由记录
Del删除指定的路由记录
Target目的网络或目的主机
gw设置默认网关
mss设置TCP的最大区块长度MSS单位MB
window指定通过路由表的TCP连接的TCP窗口大小
dev路由记录所表示的网络接口。
```
### 实例
**显示当前路由:**
```
[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
112.124.12.0    *               255.255.252.0   U     0      0        0 eth1
10.160.0.0      *               255.255.240.0   U     0      0        0 eth0
192.168.0.0     10.160.15.247   255.255.0.0     UG    0      0        0 eth0
172.16.0.0      10.160.15.247   255.240.0.0     UG    0      0        0 eth0
10.0.0.0        10.160.15.247   255.0.0.0       UG    0      0        0 eth0
default         112.124.15.247  0.0.0.0         UG    0      0        0 eth1
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
112.124.12.0 0.0.0.0 255.255.252.0 U 0 0 0 eth1
10.160.0.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0
192.168.0.0 10.160.15.247 255.255.0.0 UG 0 0 0 eth0
172.16.0.0 10.160.15.247 255.240.0.0 UG 0 0 0 eth0
10.0.0.0 10.160.15.247 255.0.0.0 UG 0 0 0 eth0
0.0.0.0 112.124.15.247 0.0.0.0 UG 0 0 0 eth1
```
其中Flags为路由标志标记当前网络节点的状态Flags标志说明
* U Up表示此路由当前为启动状态。
* H Host表示此网关为一主机。
* G Gateway表示此网关为一路由器。
* R Reinstate Route使用动态路由重新初始化的路由。
* D Dynamically,此路由是动态性地写入。
* M Modified此路由是由路由守护程序或导向器动态修改。
* ! 表示此路由当前为关闭状态。
**添加网关/设置网关:**
```
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 #增加一条到达244.0.0.0的路由。
```
**屏蔽一条路由:**
```
route add -net 224.0.0.0 netmask 240.0.0.0 reject #增加一条屏蔽的路由目的地址为224.x.x.x将被拒绝。
```
**删除路由记录:**
```
route del -net 224.0.0.0 netmask 240.0.0.0
route del -net 224.0.0.0 netmask 240.0.0.0 reject
```
**删除和添加设置默认网关:**
```
route del default gw 192.168.120.240
route add default gw 192.168.120.240
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

35
command/seinfo.md Normal file
View File

@ -0,0 +1,35 @@
seinfo
===
查询SELinux的策略提供多少相关规则
## 补充说明
**seinfo命令** 是用来查询SELinux的策略提供多少相关规则一个主体进程能否读取到目标文件资源的重点是在于SELinux的策略以及策略内的各项规则然后再通过该规则的定义去处理各项目标文件的安全上下文尤其是“类型”部分。SELinux的策略与规则管理相关命令seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令。
### 语法
```
seinfo选项
```
### 选项
```
-A列出SELinux的状态、规则布尔值、身份识别、角色、类型等所有信息。
-t列出SELinux所有类型(type)的种类。
-r列出SELinux所有角色(role)的种类。
-u列出SELinux所有身份识别(user)的种类。
-b列出所有规则的种类布尔值
```
### 实例
列出与httpd有关的规则
```
seinfo -b | grep httpd
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

86
command/semanage.md Normal file
View File

@ -0,0 +1,86 @@
semanage
===
默认目录的安全上下文查询与修改
## 补充说明
**semanage命令** 是用来查询与修改SELinux默认目录的安全上下文。SELinux的策略与规则管理相关命令seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令。
### 语法
```
semanage {login|user|port|interface|fcontext|translation} -l
semanage fcontext -{a|d|m} [-frst] file_spec
```
### 选项
```
-l查询。
fcontext主要用在安全上下文方面。
-a增加你可以增加一些目录的默认安全上下文类型设置。
-m修改。
-d删除。
```
### 实例
查询一下`/var/www/html`的默认安全性本文的设置:
```
semanage fcontext -l
SELinux fcontext type Context
....(前面省略)....
/var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
....(後面省略)....
```
如上面例子所示,我们可以查询的到每个目录的安全性本文!而目录的设定可以使用正则表达式去指定一个范围。那么如果我们想要增加某些自定义目录的安全性本文呢?举例来说,我想要色设置`/srv/samba`成为 `public_content_t`的类型时,应该如何设置呢?
用semanage命令设置`/srv/samba`目录的默认安全性本文为`public_content_t`
```
mkdir /srv/samba
ll -Zd /srv/samba
drwxr-xr-x root root root:object_r:var_t /srv/samba
```
如上所示,默认的情况应该是`var_t`这个咚咚的!
```
semanage fcontext -l | grep '/srv'
/srv/.* all files system_u:object_r:var_t:s0
/srv/(^/?ftp(/.*)? all files system_u:object_r:public_content_t:s0
/srv/(^/?www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
/srv/(^/?rsync(/.*)? all files system_u:object_r:public_content_t:s0
/srv/gallery2(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
/srv directory system_u:object_r:var_t:s0 //看这里!
```
上面则是默认的`/srv`底下的安全性本文资料,不过,并没有指定到`/srv/samba`。
```
semanage fcontext -a -t public_content_t "/srv/samba(/.*)?"
semanage fcontext -l | grep '/srv/samba'
/srv/samba(/.*)? all files system_u:object_r:public_content_t:s0
```
```
cat /etc/selinux/targeted/contexts/files/file_contexts.local
# This file is auto-generated by libsemanage
# Please use the semanage command to make changes
/srv/samba(/.*)? system_u:object_r:public_content_t:s0 #写入这个档案
```
```
restorecon -Rv /srv/samba* #尝试恢复默认值
ll -Zd /srv/samba
drwxr-xr-x root root system_u:object_r:public_content_t /srv/samba/ #有默认值以后用restorecon命令来修改比较简单
```
semanage命令的功能很多这里主要用到的仅有fcontext这个选项的用法而已。如上所示你可以使用semanage来查询所有的目录默认值也能够使用它来增加默认值的设置
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

33
command/sendmail.md Normal file
View File

@ -0,0 +1,33 @@
sendmail
===
著名电子邮件服务器
## 补充说明
**sendmail命令** 是一款著名的电子邮件传送代理程序也就是平常说的电子邮件服务器它基于标准的简单邮件传输协议SMTP
### 语法
```
sendmail(选项)
```
### 选项
```
-bd以守护进程方式运行指令
-bD以前台运行方式运行
-bi初始化别名数据库
-bm以常规发送电子邮件
-bp显示邮件的发送队列
-C指定配置文件
-D将调试的输出信息保存到日志文件而不显示在标准输出设备上
-F指定邮件发送者全名
-n禁止使用邮件别名功能
-f指定发件人的名字
-q设置处理邮件队列中邮件的时间间隔。
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

45
command/sesearch.md Normal file
View File

@ -0,0 +1,45 @@
sesearch
===
查询SELinux策略的规则详情
## 补充说明
使用seinfo命令可以查询SELinux的策略提供多少相关规则如果查到的相关类型或者布尔值想要知道详细规则时使用 **sesearch命令** 查询。SELinux的策略与规则管理相关命令seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令。
### 语法
```
sesearch [-a] [-s 主体类型] [-t 目标类型] [-b 布尔值]
```
### 选项
```
-a:列出该类型或布尔值的所有相关信息
-t:后面还要接类型,例如 -t httpd_t
-b:后面还要接布尔值的规则,例如 -b httpd_enable_ftp_server
```
### 实例
找出目标文件资源类型为`httpd_sys_content_t`的有关信息:
```
sesearch -a -t httpd_sys_content_t
```
找出主体进程为`httpd_t`且目标文件类型为httpd相关的所有信息
```
sesearch -s httpd_t -t httpd_* -a
```
查看布尔值`httpd_enable_homedirs`设置了多少规则
```
sesearch -b httpd_enable_homedirs -a
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

155
command/setsebool.md Normal file
View File

@ -0,0 +1,155 @@
setsebool
===
修改SElinux策略内各项规则的布尔值
## 补充说明
**setsebool命令** 是用来修改SElinux策略内各项规则的布尔值。setsebool命令和getsebool命令是SELinux修改和查询布尔值的一套工具组。SELinux的策略与规则管理相关命令seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令。
### 语法
```
setsebool [-P] 布尔值=[0|1]
```
### 选项
```
-P:直接将设置值写入配置文件,该设置数据将来会生效的。
```
### 实例
允许vsvtp匿名用户写入权限
```
setsebool -P allow_ftpd_anon_write=1
```
如果你希望你的ftp用户可以访问自己的家目录的话需要开启
```
setsebool -P ftp_home_dir 1
```
如果你希望将vsftpd以daemon的方式运行的话需要开启
```
setsebool -P ftpd_is_daemon 1
```
你可以让SElinux停止保护vsftpd的daemon方式动行
```
setsebool -P ftpd_disable_trans 1
```
HTTP被设置允许cgi的设置
```
setsebool -P httpd_enable_cgi 1
```
允许用户HHTP访问其家目录该设定限仅于用户的家目录主页
```
setsebool -P httpd_enable_homedirs 1
chcon -R -t httpd_sys_content_t ~user/public_html
```
允许httpd访问终端
```
setsebool -P httpd_tty_comm 1
```
关闭Selinux的关于httpd进程守护的保护
```
setsebool -P httpd_disable_trans 1
service httpd restart
```
关于named、master更新selinux设定
```
setsebool -P named_write_master_zones 1
```
关闭named的进程守护保护
```
setsebool -P named_disable_trans 1
service named restart
```
Selinux将本机的NFS共享设置成只读
```
setsebool -P nfs_export_all_ro 1
```
SElinux将本机的NFS共享设置成可读可写
```
setsebool -P nfs_export_all_rw 1
```
如果你想要将远程NFS的家目录共享到本机需要开启
```
setsebool -P use_nfs_home_dirs 1
```
如果samba服务器共享目录给多个域则需要
```
setsebool -P allow_smbd_anon_write=1
```
samba服务器要共享家目录时
```
setsebool -P samba_enable_home_dirs 1
```
如果你需在本机上使用远程samba服务器的家目录
```
setsebool -P use_samba_home_dirs 1
```
关闭selinux关于samba的进程守护的保护
```
setsebool -P smbd_disable_trans 1
service smb restart
```
允许rsync其他用户写入时
```
setsebool -P allow_rsync_anon_write=1
```
停止rsync的进程保护
```
setsebool -P rsync_disable_trans 1
```
允许系统使用kerberos
```
setsebool -P allow_kerberos 1
```
系统工作在nis环境时
```
setsebool -P allow_ypbind 1
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

34
command/sftp.md Normal file
View File

@ -0,0 +1,34 @@
sftp
===
交互式的文件传输程序
## 补充说明
**sftp命令** 是一款交互式的文件传输程序命令的运行和使用方式与ftp命令相似但是sftp命令对传输的所有信息使用ssh加密它还支持公钥认证和压缩等功能。
### 语法
```
sftp(选项)(参数)
```
### 选项
```
-B指定传输文件时缓冲区的大小
-l使用ssh协议版本1
-b指定批处理文件
-C使用压缩
-o指定ssh选项
-F指定ssh配置文件
-R指定一次可以容忍多少请求数
-v升高日志等级。
```
### 参数
目标主机指定sftp服务器ip地址或者主机名。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

28
command/showmount.md Normal file
View File

@ -0,0 +1,28 @@
showmount
===
显示NFS服务器加载的信息
## 补充说明
**showmount命令** 查询“mountd”守护进程以显示NFS服务器加载的信息。
### 语法
```
showmount(选项)(参数)
```
### 选项
```
-d仅显示已被NFS客户端加载的目录
-e显示NFS服务器上所有的共享目录。
```
### 参数
NFS服务器指定NFS服务器的ip地址或者主机名。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

126
command/skill.md Normal file
View File

@ -0,0 +1,126 @@
skill
===
向选定的进程发送信号冻结进程
## 补充说明
**skill命令** 用于向选定的进程发送信号,冻结进程。这个命令初学者并不常用,深入之后牵涉到系统服务优化之后可能会用到。
### 语法
```
skill(选项)
```
### 选项
```
-f快速模式
-i交互模式每一步操作都需要确认
-v冗余模式
-w激活模式
-V显示版本号
-t指定开启进程的终端号
-u指定开启进程的用户
-p指定进程的id号
-c指定开启进程的指令名称。
```
### 实例
如果您发现了一个占用大量CPU和内存的进程但又不想停止它该怎么办考虑下面的top命令输出
```
top -c -p 16514
23:00:44 up 12 days, 2:04, 4 users, load average: 0.47, 0.35, 0.31
1 processes: 1 sleeping, 0 running, 0 zombie, 0 stopped
CPU states: cpu user nice system irq softirq iowait idle
total 0.0% 0.6% 8.7% 2.2% 0.0% 88.3% 0.0%
Mem: 1026912k av, 1010476k used, 16436k free, 0k shrd, 52128k buff
766724k actv, 143128k in_d, 14264k in_c
Swap: 2041192k av, 83160k used, 1958032k free 799432k cached
PID USER PRI NI SIZE RSS SHARE stat %CPU %MEM time CPU command
16514 oracle 19 4 28796 26M 20252 D N 7.0 2.5 0:03 0 oraclePRODB2...
```
既然您确认进程16514占用了大量内存您就可以使用skill命令“冻结”它而不是停止它。
```
skill -STOP 1
```
之后检查top输出
```
23:01:11 up 12 days, 2:05, 4 users, load average: 1.20, 0.54, 0.38
1 processes: 0 sleeping, 0 running, 0 zombie, 1 stopped
CPU states: cpu user nice system irq softirq iowait idle
total 2.3% 0.0% 0.3% 0.0% 0.0% 2.3% 94.8%
Mem: 1026912k av, 1008756k used, 18156k free, 0k shrd, 3976k buff
770024k actv, 143496k in_d, 12876k in_c
Swap: 2041192k av, 83152k used, 1958040k free 851200k cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
16514 oracle 19 4 28796 26M 20252 T N 0.0 2.5 0:04 0 oraclePRODB2...
```
现在CPU 从 0% 空闲变为 94% 空闲。该进程被有效冻结。过一段时间之后,您可能希望唤醒该进程:
```
skill -CONT 16514
```
如果希望暂时冻结进程以便为完成更重要的进程腾出空间,该方法非常有用。
此命令用途很广。如果您要停止 "oracle" 用户的所有进程,只需要一个命令即可实现:
```
skill -STOP oracle
```
可以使用用户、PID、命令或终端 id 作为参数。以下命令可停止所有 rman 命令。
```
skill -STOP rman
```
如您所见skill 决定您输入的参数(进程 ID、用户 ID 或命令)并进行相应操作。这可能会导致在某些情况下出现这样的问题:您可能具有同名的用户和命令。最好的示例是 "oracle" 进程,通常由用户 "oracle" 运行。因此,当您希望停止名为 "oracle" 的进程时,可执行以下命令:
```
skill -STOP oracle
```
用户 "oracle" 的所有进程都停止,包括您可能要使用的会话。要非常明确地执行命令,您可以选择使用一个新参数指定参数的类型。要停止一个名为 oracle 的命令,可执行以下命令:
```
skill -STOP -c oracle
```
snice命令的功能与skill类似。但它用于降低进程的优先级而不是停止进程。首先检查 top 输出:
```
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
3 root 15 0 0 0 0 RW 0.0 0.0 0:00 0 kapmd
13680 oracle 15 0 11336 10M 8820 T 0.0 1.0 0:00 0 oracle
13683 oracle 15 0 9972 9608 7788 T 0.0 0.9 0:00 0 oracle
13686 oracle 15 0 9860 9496 7676 T 0.0 0.9 0:00 0 oracle
13689 oracle 15 0 10004 9640 7820 T 0.0 0.9 0:00 0 oracle
13695 oracle 15 0 9984 9620 7800 T 0.0 0.9 0:00 0 oracle
13698 oracle 15 0 10064 9700 7884 T 0.0 0.9 0:00 0 oracle
13701 oracle 15 0 22204 21M 16940 T 0.0 2.1 0:00 0 oracle
```
现在,将 "oracle" 进程的优先级降低四个点。注意,该值越高,优先级越低。
```
snice +4 -u oracle
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
16894 oracle 20 4 38904 32M 26248 D N 5.5 3.2 0:01 0 oracle
```
注意NI 列nice 值)现在是 4优先级现在设置为 20而不是 15。这对于降低优先级非常有帮助。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

32
command/smbpasswd.md Normal file
View File

@ -0,0 +1,32 @@
smbpasswd
===
samba用户和密码管理工具
## 补充说明
**smbpasswd命令** 属于samba套件能够实现添加或删除samba用户和为用户修改密码。
### 语法
```
smbpasswd(选项)(参数)
```
### 选项
```
-a向smbpasswd文件中添加用户
-c指定samba的配置文件
-x从smbpasswd文件中删除用户
-d在smbpasswd文件中禁用指定的用户
-e在smbpasswd文件中激活指定的用户
-n将指定的用户的密码置空。
```
### 参数
用户名指定要修改SMB密码的用户。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

31
command/squid.md Normal file
View File

@ -0,0 +1,31 @@
squid
===
squid服务器守护进程
## 补充说明
**squid命令** 高性能的Web客户端代理缓存服务器套件“squid”的服务器守护进程。
### 语法
```
squid(选项)
```
### 选项
```
-d将指定调试等级的信息发送到标准错误设备
-f使用指定的配置文件。而不使用默认配置文件
-k向squid服务器发送指令
-s启用syslog日志
-z创建缓存目录
-C不捕获致命信号
-D不进行DNS参数测试
-N以非守护进程模式运行
-X强制进入完全调试模式。
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

34
command/squidclient.md Normal file
View File

@ -0,0 +1,34 @@
squidclient
===
squid服务器的客户端管理工具
## 补充说明
**squidclient命令** 使用squid服务器的客户端管理工具它可以查看squid服务器的详细运行信息和管理squid服务器。
### 语法
```
squidclient(选项)(参数)
```
### 选项
```
-a不包含“accept:header”
-r强制缓存重新加载URL
-s安静模式不输出信息到标准输出设备
-h从指定主机获取url
-l指定一个本地ip地址进行绑定
-p端口号默认为3128
-m指定发送请求的方法
-u代理认证用户名。
```
### 参数
URL指定操作缓存中的URL。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

33
command/ssh-keyscan.md Normal file
View File

@ -0,0 +1,33 @@
ssh-keyscan
===
收集主机公钥的使用工具
## 补充说明
**ssh-keyscan命令** 是一个收集大量主机公钥的使用工具。
### 语法
```
ssh-keyscan(选项)(参数)
```
### 选项
```
-4强制使用IPv4地址
-6强制使用IPv6地址
-f从指定文件中读取“地址列表/名字列表”;
-p指定连接远程主机的端口
-T指定连接尝试的超时时间
-t指定要创建的密钥类型
-v信息模式打印调试信息。
```
### 参数
主机列表:指定要收集公钥的主机列表。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

47
command/ssh.md Normal file
View File

@ -0,0 +1,47 @@
ssh
===
openssh套件中的客户端连接工具
## 补充说明
**ssh命令** 是openssh套件中的客户端连接工具可以给予ssh加密协议实现安全的远程登录服务器。
### 语法
```
ssh(选项)(参数)
```
### 选项
```
-1强制使用ssh协议版本1
-2强制使用ssh协议版本2
-4强制使用IPv4地址
-6强制使用IPv6地址
-A开启认证代理连接转发功能
-a关闭认证代理连接转发功能
-b使用本机指定地址作为对应连接的源ip地址
-C请求压缩所有数据
-F指定ssh指令的配置文件
-f后台执行ssh指令
-g允许远程主机连接主机的转发端口
-i指定身份文件
-l指定连接远程服务器登录用户名
-N不执行远程指令
-o指定配置选项
-p指定远程服务器上的端口
-q静默模式
-X开启X11转发功能
-x关闭X11转发功能
-y开启信任X11转发功能。
```
### 参数
* 远程主机指定要连接的远程ssh服务器
* 指令要在远程ssh服务器上执行的指令。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

40
command/syslog.md Normal file
View File

@ -0,0 +1,40 @@
syslog
===
系统默认的日志守护进程
## 补充说明
**syslog** 是Linux系统默认的日志守护进程。默认的syslog配置文件是/etc/syslog.conf文件。程序守护进程和内核提供了访问系统的日志信息。因此任何希望生成日志信息的程序都可以向 syslog 接口呼叫生成该信息。
几乎所有的网络设备都可以通过syslog协议将日志信息以用户数据报协议(UDP)方式传送到远端服务器远端接收日志服务器必须通过syslogd监听UDP 端口514并根据 syslog.conf配置文件中的配置处理本机接收访问系统的日志信息把指定的事件写入特定文件中供后台数据库管理和响应之用。意味着可以让任何事件都登录到一台或多台服务器上以备后台数据库用off-line(离线) 方法分析远端设备的事件。
通常syslog 接受来自系统的各种功能的信息,每个信息都包括重要级。/etc/syslog.conf 文件通知 syslogd 如何根据设备和信息重要级别来报告信息。
### 使用方法
在/var/log中创建并写入日志信息是由syslog协议处理的是由守护进程sylogd负责执行。每个标准的进程都可以用syslog记录日志。可以使用logger命令通过syslogd记录日志。
要向syslog文件/var/log/messages中记录日志信息
```
logger this is a test log line
输出:
tail -n 1 messages
Jan 5 10:07:03 localhost root: this is a test log line
```
如果要记录特定的标记tag可以使用
```
logger -t TAG this is a test log line
输出:
tail -n 1 messages
Jan 5 10:37:14 localhost TAG: this is a test log line
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

157
command/systemctl.md Normal file
View File

@ -0,0 +1,157 @@
systemctl
===
系统服务管理器指令
## 补充说明
**systemctl命令** 是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。
<table>
<tbody>
<tr>
<td>任务</td>
<td>旧指令</td>
<td>新指令</td>
</tr>
<tr>
<td>使某服务自动启动</td>
<td>chkconfig --level 3 httpd on</td>
<td>systemctl enable httpd.service</td>
</tr>
<tr>
<td>使某服务不自动启动</td>
<td>chkconfig --level 3 httpd off</td>
<td>systemctl disable httpd.service</td>
</tr>
<tr>
<td>检查服务状态</td>
<td>service httpd status</td>
<td>systemctl status httpd.service (服务详细信息) systemctl is-active httpd.service (仅显示是否 Active)</td>
</tr>
<tr>
<td>显示所有已启动的服务</td>
<td>chkconfig --list</td>
<td>systemctl list-units --type=service</td>
</tr>
<tr>
<td>启动某服务</td>
<td>service httpd start</td>
<td>systemctl start httpd.service</td>
</tr>
<tr>
<td>停止某服务</td>
<td>service httpd stop</td>
<td>systemctl stop httpd.service</td>
</tr>
<tr>
<td>重启某服务</td>
<td>service httpd restart</td>
<td>systemctl restart httpd.service</td>
</tr>
</tbody>
</table>
### 实例
1.启动nfs服务
```
systemctl start nfs-server.service
```
2.设置开机自启动
```
systemctl enable nfs-server.service
```
3.停止开机自启动
```
systemctl disable nfs-server.service
```
4.查看服务当前状态
```
systemctl status nfs-server.service
```
5.重新启动某服务
```
systemctl restart nfs-server.service
```
6.查看所有已启动的服务
```
systemctl list -units --type=service
```
开启防火墙22端口
```
iptables -I INPUT -p tcp --dport 22 -j accept
```
如果仍然有问题就可能是SELinux导致的
关闭SElinux
修改`/etc/selinux/config`文件中的`SELINUX=””`为disabled然后重启。
彻底关闭防火墙:
```
sudo systemctl status firewalld.service
sudo systemctl stop firewalld.service          
sudo systemctl disable firewalld.service
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

43
command/tracepath.md Normal file
View File

@ -0,0 +1,43 @@
tracepath
===
追踪目的主机经过的路由信息
## 补充说明
**tracepath命令** 用来追踪并显示报文到达目的主机所经过的路由信息。
### 语法
```
tracepath(参数)
```
### 参数
* 目的主机:指定追踪路由信息的目的主机;
* 端口指定使用的UDP端口号。
### 实例
```
tracepath www.58.com
1: 192.168.2.10 (192.168.2.10) 20.150ms pmtu 1500
1: unknown (192.168.2.1) 9.343ms
2: 221.6.45.33 (221.6.45.33) 34.430ms
3: 221.6.9.81 (221.6.9.81) 19.263ms
4: 122.96.66.37 (122.96.66.37) 54.372ms
5: 219.158.96.149 (219.158.96.149) asymm 6 128.526ms
6: 123.126.0.66 (123.126.0.66) 138.281ms
7: 124.65.57.26 (124.65.57.26) 166.244ms
8: 61.148.154.98 (61.148.154.98) 103.723ms
9: 202.106.42.102 (202.106.42.102) asymm 10 78.099ms
10: 210.77.139.150 (210.77.139.150) asymm 9 199.930ms
11: 211.151.104.6 (211.151.104.6) asymm 10 121.965ms
12: no reply
13: 211.151.111.30 (211.151.111.30) asymm 12 118.989ms reached
Resume: pmtu 1500 hops 13 back 12
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

24
command/usernetctl.md Normal file
View File

@ -0,0 +1,24 @@
usernetctl
===
被允许时操作指定的网络接口
## 补充说明
**usernetctl命令** 在用于被允许时操作指定的网络接口。
### 语法
```
usernetctl(参数)
```
### 参数
* 网络接口:被操纵的网络接口;
* up激活网络接口
* down禁用网络接口
* report报告网络接口状态。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

43
command/watch.md Normal file
View File

@ -0,0 +1,43 @@
watch
===
周期性的方式执行给定的指令
## 补充说明
**watch命令** 以周期性的方式执行给定的指令指令输出以全屏方式显示。watch是一个非常实用的命令基本所有的Linux发行版都带有这个小工具如同名字一样watch可以帮你监测一个命令的运行结果省得你一遍遍的手动运行。
### 语法
```
watch(选项)(参数)
```
### 选项
```
-n指定指令执行的间隔时间
-d高亮显示指令输出信息不同之处
-t不显示标题。
```
### 参数
指令:需要周期性执行的指令。
### 实例
```
#watch uptime
#watch -t uptime
#watch -d -n 1 netstat -ntlp
#watch -d 'ls -l | fgrep goface' //监测goface的文件
#watch -t -differences=cumulative uptime
#watch -n 60 from //监控mail
#watch -n 1 "df -i;df" //监测磁盘inode和block数目变化情况
```
FreeBSD和Linux下watch命令的不同在Linux下watch是周期性的执行下个程序并全屏显示执行结果`watch -n 1 -d netstat -ant`而在FreeBSD下的watch命令是查看其它用户的正在运行的操作watch允许你偷看其它terminal正在做什么该命令只能让超级用户使用。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

41
command/xauth.md Normal file
View File

@ -0,0 +1,41 @@
xauth
===
显示和编辑被用于连接X服务器的认证信息
## 补充说明
**xauth命令** 用于显示和编辑被用于连接X服务器的认证信息。
### 语法
```
xauth(选项)(参数)
```
### 选项
```
-f不使用默认的认证文件而使用指定的认证文件
-q安静模式不打印未请求的状态信息
-v详细模式打印指定的各种操作信息
-i忽略认证文件锁定
-b执行任何操作终端认证文件锁定。
```
### 参数
* add添加认证条目到认证文件中
* extract将指定的设备内容加入到指定的密码文件中
* info显示授权文件相关信息
* exit退出交互模式
* list列出给定的显示设备的内容
* merge合并多个授权文件内容
* extract将指定设备内容写入指定的授权文件
* nextrct将指定设备内容写入指定的授权文件
* nmerge合并多个授权文件内容
* remove删除指定显示设备的授权条目
* source从指定文件读取包含xauth的内容指令。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

28
command/xclip.md Normal file
View File

@ -0,0 +1,28 @@
xclip
===
管理 X 粘贴板
## 补充说明
在 X 系统里面,从一个窗口复制一段文字到另一个窗口,有两套机制,分别是 Selections 和 cut buffers。
常用的 copy & paste 是利用的 cut buffers 机制;另外用鼠标选中一段文字,然后在另一个窗口按鼠标中键实现复制,利用的是 selections 机制。selection 又可以分为 master 和 slave selection。
当用鼠标选中一段文件,这段文字就自动被复制到 master selection。然后在另一个地方按鼠标中键就自动把 master selection 的内容粘贴出来。
当你想复制少量文字的时候,两种方法都是很方便的。但是当复制大段文字的时候就挺麻烦。另外就是你可能会频繁的执行一些复制粘贴工作,不停的用鼠标选中文字,然后再粘贴。这是对手指的折磨。
我忍受不了这种折磨,所以发现了 xclip 方便的管理 X selections 里面内容的工具。
比如如下命令就把文件 /etc/passwd 的内容复制到 X master selections 里面了。
```
xclip -i /etc/passwd
```
然后到别的地方就能复制出来,利用鼠标中键。或者是更舒服的 shift+insert。 我现在最常用的方法是通过键盘绑定来管理 X master selections 的内容。比如 alt+F1 就能把我的 ~/f1 的内容复制到 X master selectionsalt+F2 复制 ~/f2 的内容。这样就能把你需要经常用到的内容方便的进行复制粘贴。比如常用的密码啥的。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

32
command/xhost.md Normal file
View File

@ -0,0 +1,32 @@
xhost
===
制哪些X客户端能够在X服务器上显示
## 补充说明
**xhost命令** 是X服务器的访问控制工具用来控制哪些X客户端能够在X服务器上显示。该命令必须从有显示连接的机器上运行。可以通过使用`-host`参数,从访问列表中除去一个名称。不要从访问列表中除去当前的名称。如果已经这样做了,请在作出任何更改之前注销系统。
### 语法
```
xhost(参数)
```
### 参数
* +关闭访问控制允许任何主机访问本地的X服务器
* -打开访问控制仅允许授权清单中的主机访问本地的X服务器。
输入无变量的xhost命令将显示访问X服务器的当前主机名并显示一条消息表明访问是否已启用。
为了安全起见只能从控制主机运行影响访问控制的选项。对于工作站来说这台机器也就是服务器。对于X终端来说这台机器是登录主机。
要在缺省情况下启用远程名称,可以在`/etc/X?.hosts`文件中定义名称,其中`?`为启用访问的显示器号。
例如,显示器`jeanne:0`可以由使用jeanne的缺省主机名的系统上的`/etc/X0.hosts`文件中定义的系统访问。在显示名称和文件名中0表明已定义的远程系统允许通过增强X-Windows访问的显示器号。
注意:`-name`参数定义要从X服务器访问列表中除去的主机名。已有的连接没有被中断但将拒绝新的连接请求。注意可以除去当前的机器然而不允许进行进一步的连接包括试图将其添加回来。再一次启用本地连接的唯一方法就是将服务器复位因此也会中断所有连接
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

29
command/xset.md Normal file
View File

@ -0,0 +1,29 @@
xset
===
设置X-Window系统中的用户爱好的实用工具
## 补充说明
**xset命令** 是设置X-Window系统中的用户爱好的实用工具。
### 语法
```
xset(选项)(参数)
```
### 选项
```
-b蜂鸣器开关设置
-c键盘按键声响设置。
```
### 参数
* c键盘按键声响设置
* s屏幕保护程序设置。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

23
command/ypdomainname.md Normal file
View File

@ -0,0 +1,23 @@
ypdomainname
===
显示主机的NIS的域名
## 补充说明
**ypdomainname命令** 显示主机的NIS的域名。
### 语法
```
ypdomainname(选项)
```
### 选项
```
-v详细信息模式。
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->