Linux常用命令及服务搭建-第一版
本帖最后由 二饭 于 2021-1-6 18:45 编辑# Linux常用命令
[^二饭]: 第1版
| 命令 | 描述 |
| ---- | ------------------------------------------------------------ |
| `w`| 保存不退出 |
| `q`| 不保存退出 |
| `!`| 强制退出 |
| `q!` | 表示不保存退出,保留源文件,而另存为其他的文件,可以用`w 新文件名` |
| `ZZ` | 大写Z,保存退出 |
## 命令提示符
`#`
| 符号 | 含义 |
| ---------------- | -------------------------------------------------------- |
| [ ] | 这是提示符的分隔符号,没有特殊含义 |
| root | 显示的时当前的登录用户 |
| @ | 分割符号,没有含义 |
| localhost | 当前系统的简写主机名 |
| ~ | 代表当前用户所在的目录,注意这里只显示最后一个子目录 |
| # | 命令提示符。如果是超级用户显示为#,如果是普通用户显示为$ |
| 超级用户的根目录 | /root |
| 普通用户的根目录 | /home/用户名 |
## Linux命令的基本格式
`# 命令 [选项][参数]`
命令中的[]代表可选项,也就是一些命令可以不写选项或参数。
**选项**
加入选项可以实现更多功能,如`ls -l`意思就是显示文件的详细信息。
**参数**
参数是命令的操作对象,一般文件、命令、用户和进程等都可以作为参数被命令操作。
# 目录操作命令
## ls -目录操作命令
**命令名称:**`ls`
**所在路径:**`usr/bin/ls`
**执行权限:**所有用户
**命令格式:**ls [选项] [文件名或目录名]
选项:
| 选项 | 描述 |
| -------------- | ------------------------------------------------------------ |
| -a | 显示所有文件(包括隐藏文件) |
| `--color=when` | 支持颜色输出,when的值默认是`always`(总显示颜色),也可以是`never`(从不显示颜色)和`auto`(自动) |
| `-ld` | 显示目录信息,而不是目录下的文件 |
| `-lh` | 人性化显示,按照我们习惯的单位显示文件大小 |
| `-i` | 显示文件的i节点号 |
| `-l` | 长格式显示(详细信息)。`ls -l`等同于`ll` |
**PS:**Linux中`.`开头的文件为隐藏文件。
##### `-l`选项
!(C:\Users\stad\AppData\Roaming\Typora\typora-user-images\image-20200919191051379.png)
依次表示:权限、引用计数、所属用户、所属组、文件大小(字节)、文件修改时间、文件名称
这里的引用计数代表该目录下有多少个一级子目录。
## `cd` -切换所在目录
**所在路径:**Shell内置命令
**执行权限:**所有用户
**功能:**切换所在目录
命令格式:`cd [目录名]`
cd命令只要两个选项:
| -P | 指如果切换的目录是软链接目录,则进入其原始的物理目录 |
| ------ | ------------------------------------------------------ |
| **-L** | **指如果切换的目录是软链接目录,则直接进入软链接目录** |
| ~ | 代表用户的家目录。cd命令直接回车效果是一样的。 |
| - | 代表上次所在目录 |
| . | 代表当前目录 |
| .. | 代表上级目录 |
## `mkdir` -创建目录命令
所在路径:/usr/bin/mkdir
执行权限:所有用户
功能描述:创建一个空目录
命令格式:`mkdir [选项] 目录名`
**选项**只有一个:`-p`递归建立所需目录。
就是当需要创建多级目录时,需要`-p`选项,不加则无法创建多级目录。
如:`mkdir -p lm1/lm2/lm3`
## `rmdir` -删除目录命令
所在路径:/usr/bin/rmdir
执行权限:所有用户
命令格式:`rmdir [选项] 目录名`
无选项。
rmdir也可以递归删除目录,不过只能删除空目录,一旦目录中有内容就会报错。
## `tree` -显示目录树
所在路径:/usr/bin/tree
执行权限:所有用户
命令格式:`tree 目录名`
# 文件操作命令
## `touch` -修改时间戳
执行权限:所有用户
功能描述:修改时间戳,如没有该文件,则创建一个空文件。
命令格式:`touch [选项] 文件名或目录名`
**选项:**
| 选项 | 描述 |
| ---- | ------------------------------ |
| -a | 只修改文件的访问时间 |
| -c | 如果文件不存在,则不建立新文件 |
| -d | 把文件的时间改为指定的时间 |
| -m | 只修改文件的数据修改时间 |
Linux中分为三个时间,分别为访问时间、数据修改时间、状态修改时间。这三个时间可以通过`stat`命令查看。
## `stat` -显示文件详细信息
执行权限:所有用户
功能描述:显示文件或文件系统的详细信息
命令格式:`stat [选项] 文件或目录名`
**选项:**只有一个选项`-f`查看文件所在的文件系统信息,而不是查看文件的信息。
## `cat` -查看文件内容
执行权限:所有用户
功能描述:合并文件并打印输出到标准输出
命令格式:`cat [选项] 文件名`
**选项:**
| 选项 | 描述 |
| ---- | -------------------------------------------- |
| -A | 相当于`-vET`功能的整合,用于列出所有隐藏符号 |
| -E | 列出每行结尾的回车符$ |
| -n | 显示行号 |
| -T | 把Tab键用^I 显示出来 |
| -v | 列出特殊字符 |
## `more` -分屏显示内容
执行权限:所有用户
功能描述:分屏显示文件内容
命令格式:`more 文件名`
**常用的交互命令:**
| 命令 | 描述 |
| --------- | ---------------- |
| 空格键 | 向下翻页 |
| b | 向上翻页 |
| 回车键 | 向下滚动一页 |
| `/字符串` | 搜索指定的字符串 |
| q | 退出 |
## `less` -分行显示文件内容
执行权限:全部用户
功能描述:分行显示文件内容
命令格式:`less 文件名`
进入显示文件后,使用`上`、`下`箭头键,用于分行查看文件内容。(每按一次会向上、下显示一行)。
## `head` -显示文件开头的内容
执行权限:全部用户
命令格式:`head [选项] 文件名`
**选项:**
| 选项 | 描述 |
| ---- | --------------------------------------------------------- |
| -n | 行数:从文件开头开始,显示指定行数,`-n20`与`-20`效果一样 |
| -v | 显示文件名 |
命令默认显示文件前十行内容。
## `tail` -显示文件结尾内容
执行权限:所有用户
命令格式:`tail [选项] 文件名`
**选项**
| 选项 | 描述 |
| ---- | --------------------------------------------------------- |
| -n | 行数:从文件结尾开始,显示指定行数,`-n20`与`-20`效果一样 |
| -f | 监听文件的新增内容 |
使用`-f`选项会显示最后10行内容,而且光标不会退出文件,会一直监听文件的新增内容,这个时候使用`echo`命令向该文件追加内容,在原始的正在监听的终端中就会显示追加的内容。
## `ln` -在文件之间建立链接
执行权限:所有用户
命令格式:`ln [选项] 源文件 目标文件`
**选项:**
| 选项 | 描述 |
| ---- | ---------------------------------------------------------- |
| -s | 建立软链接文件。默认建立硬链接文件 |
| -f | 强制。如果目标文件已经存在,则删除目标文件后再建立链接文件 |
建立硬链接:`ln /root/test /tmp/test-hard`
建立软链接:`ln -s /root/test /tmp/test-hard`
# 目录和文件都能操作的命令
## `rm` -删除文件或目录
执行权限:所有用户
命令格式:`rm [选项] 文件或目录`
选项:
| 选项 | 描述 |
| ---- | ------------------------------------------------ |
| -f | 强制删除 |
| -i | 这个选项是默认的,交互删除,在删除之前会询问用户 |
| -r | 可以递归删除,可以删除目录 |
如果被删除的路径是一个目录,则必须有`-r`选项,否则会报错。
一般要强制删除一个文件时,用`rm -rf 文件路径`。
## `cp` -复制文件和目录
执行权限:所有用户
命令格式:`cp [选项] 源文件 目标文件`
选项:
| 选项 | 描述 |
| ---- | ------------------------------------------------------------ |
| -a | 相当于-dpr选项的集合 |
| -d | 如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接 |
| -i | 询问,如果目标文件已经存在,则会询问是否覆盖 |
| -l | 把目标文件建立为源文件的**硬链接**文件,而不是复制源文件 |
| -s | 把目标文件建立为源文件的**软链接**文件,而不是复制源文件 |
| -p | 复制后目标文件保留源文件的属性(包括所有者、所属组、权限、时间) |
| -r | 递归复制,用于复制目录 |
不改名复制:`cp test /tmp/`
改名复制:`cp test /tmp/test`
如需要复制目录,则需要使用`-r`选项。
## `mv` -移动文件或改名
执行权限:所有用户
命令格式:`mv[格式] 源文件 目标文件`
选项:
| 选项 | 描述 |
| ---- | ------------------------------------------------------ |
| -f | 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖 |
| -i | 交互移动,默认选项 |
| -n | 如果目标文件已经存在,则不会覆盖移动,而是不询问用户 |
| -v | 显示详细信息 |
# 权限管理命令
## 权限位的含义
**!(C:\Users\stad\AppData\Roaming\Typora\typora-user-images\image-20200920153951711.png)**
以上详细信息中,第一列就是权限位,其中:
**第1位**:表示linux的文件类型,如下
| `-`| 普通文件 |
| ---- | --------------------------------------------- |
| `b`| 块设备文件 |
| `c`| 字符设备文件 |
| `d`| 目录文件,Linux中一切皆文件,目录也是一种文件 |
| `l`| 软链接文件 |
| `p`| 管道符文件 |
| `s`| 套接字文件 |
| `r`| 代表read,读权限 |
| `w`| 代表write,写权限 |
| `x`| 代表execute,执行权限 |
**第1组(第2-4位)**:文件拥有者的权限
**第2组(第5-7位)**:文件所属组的权限
**第3组(第8-10位)**:其他用户
## `chmod` -修改文件的权限
执行权限:所有用户
功能描述:修改文件的权限模式
命令格式:`chmod [选项] 权限模式 文件名`
**选项**只有一个`-R`,递归设置权限,也就是给子目录中的所有文件设定权限。
**权限模式**:chmod命令的权限模式的格式是`[用户身份][[赋予方式][权限]]`。
用户身份:
| 用户身份 | 描述 |
| -------- | ------------ |
| `u` | 代表所有者 |
| `g` | 代表所属组 |
| `o` | 代表其他人 |
| `a` | 代表全部身份 |
赋予方式:
| 赋予方式 | 描述 |
| -------- | -------- |
| `+` | 加入权限 |
| `-` | 减去权限 |
| `=` | 设置权限 |
权限:
| 权限 | 描述 |
| ---- | -------- |
| `r`| 读取权限 |
| `w`| 写权限 |
| `x`| 执行权限 |
如:
`chmod o=rwx 文件名`给其他人设置读写和执行权限。
`chmod u+x,g+w 文件名`给所有者执行权限,和所属组写权限。
### 数字权限
数字的含义:
| 数字 | 含义 |
| ---- | ----------- |
| 1 | 代表`x`权限 |
| 2 | 代表`w`权限 |
| 4 | 代表`r`权限 |
如:`chmod 755 文件名`
第一个数字代表所有者的权限是 4+2+1
第二个数字代表所属组的权限是 4+1
第三个数字代表其他人的权限是 4+1
### **注意:**
①当需要删除一个文件时,需要获取当前文件目录的写权限,光有文件的写权限是不够的。
②root用户是超级用户,就算没有任何权限,也可以执行所有操作。
③在普通用户中,只有文件的所有者才能修改权限。
## `umask` -默认权限
主要让Linux中的新建文件和目录拥有默认权限。
**查看系统的`umask 默认权限`:**
`umask -S`直接使用字母来表示默认权限。
**修改系统的`umask`默认权限:**
`umask 002` 修改默认权限为002
# 用户命令
## `useradd` -创建用户
执行权限:超级用户
命令格式:`useradd [选项] 用户名`
选项:
| 选项 | 描述 |
| ---- | ---------------------- |
| `-u` | 手动指定用户的UID |
| `-d` | 手动指定用户的家目录 |
| `-g` | 手动指定用户的组名 |
| `-e` | 手动指定用户的失效日期 |
第一步:添加用户`useradd user`
第二部:设置用户密码`passwd user`,输入两次密码确认
## `passwd` -修改用户密码
执行权限:超级用户
命令格式:`passwd [选项] 用户名`
选项:
| 选项 | 描述 |
| ---- | ------------------ |
| `-S` | 查询用户密码的状态 |
| `-l` | 暂时锁定用户 |
| `-u` | 解锁用户 |
## `su` -切换用户
命令格式:`su - user`切换到指定用户
## `usermod` -修改用户信息
命令格式:`usermod [选项] 用户名`
## `userdel` -删除用户
命令格式:`userdel [-r] 用户名`
# 所有者和所有组命令
## `chown` -修改所有者和所有组
执行权限:所有用户
功能描述:修改文件和目录的所有者和所属组
命令格式:`chown [选项] 所有者:所属组 文件(目录)`
**选项:**`-R`递归设置权限,给子目录中的所有文件设置权限。
**修改文件的所有者**:`chown user 文件名`
**修改文件的所属组**:`chown user:user 文件名`
# 帮助命令
## `man` 显示联级帮助手册
执行权限:所有用户
命令格式:`man [选项] 命令`
**选项:**
| 选项 | 描述 |
| ---- | -------------------------- |
| -f | 查看命令拥有哪个级别的帮助 |
| -k | 查看和命令相关的所有帮助 |
如:`man ls ` #获取`ls`命令帮助信息
## `info` -显示帮助信息的完整资料
与`man`的使用大同小异。
在这个帮助信息中,如果标题的前面有`*`符号,则表示这是一个可以进入的子页面,按回车进入。
## `help` -获取Shell内置命令帮助
一般使用都是外部命令,所以`help`使用很少。
# 搜索命令
## `whereis` -查找命令、源文件和帮助
执行权限:所有用户
命令格式:`whereis [选项] 命令`
选项:
| 选项 | 描述 |
| ---- | ---------------- |
| -b | 只查找二进制命令 |
| -m | 只查找帮助文档 |
## `which` -列出命令的所在路径
执行权限:所有用户
命令格式:`which 命令`
## `locate` -按照文件名搜索
执行权限:所有用户
命令格式:`locate [选项] 文件名`
选项:`-i` 忽略大小写。
注意:新建的文件,`locate`找不到,因为它不会直接去搜索硬盘空间,而是搜索`locate`数据库。
如果需要,可以使用`updatedb`命令来更新数据库。这种情况也是有可能会找不到,因为系统可能把该文件认定为临时文件。
## `find` -在目录中搜索文件
执行权限:所有用户
命令格式:`find 搜索路径 [选项] 搜索内容`
选项:
| 选项 | 描述 |
| -------------------- | -------------------------------------------------- |
| `-name` | 按照文件名搜索 |
| `-iname` | 按照文件名搜索,不区分文件名大小写 |
| `-inum` | 按照inode号搜索 |
| `-size[+/-]` | 按照指定大小搜索文件,不加正反号为搜索指定大小文件 |
| `-atime[+/-]` | 按照文件访问时间搜索 |
| `-mtime[+/-]` | 按照文件数据修改时间搜索 |
| `-ctime[+/-]` | 按照文件状态修改时间搜索 |
| `-perm[+/-]权限模式` | 按照文件权限搜索 |
其他的还可以按照`所有者`,`文件类型`,`逻辑与算符`。
# 关机和重启命令
## `sync`-数据同步
执行权限:所有用户
可直接执行,无参数。
## `shutdown` -关机和重启
执行权限:超级用户
命令格式:`shutdown [选项] 时间 [警告信息]`
选项:
| 选项 | 描述 |
| ---- | ---------------------------- |
| -c | 取消已经执行的`shutdown`命令 |
| -h | 关机 |
| -r | 重启 |
`shutdown -r now`马上重启
`shutdown -r 05:30`指定时间重启,会占用终端前台
`shutdown -r 05:30 &`指定时间重启,会放入后台
`shutdown -c`取消定时重启
`shutdown -r +10`10分钟之后重启
`shutdown -h now`马上关机
`shutdown -h 05:30`指定时间关机
## `reboot` 重启
直接重启。
## `halt`和`poweroff `关机
直接关机。
## `init` 重启和关机
`init 0`关机
`init 6`重启
改变系统运行级别的形式来完成关机重启的操作。
# 网络命令
## `ip` -显示和设置网络路由
执行权限:超级用户
功能描述:显示和设置网络路由、路由策略
查看IP地址信息:`ip address show`
查看本机的路由信息表:`ip route show`
以下命令需要使用`nmmtui`工具
临时设定IP地址和删除IP地址:`ip address add 192.168.44.31/24 dev ens33`
临时设定网关:`ip route del default via 192.168.44.1`
## `ifconfig` -配置网络接口
执行权限:超级用户
查看IP地址信息:`ifconfig`
**临时配置IP地址:**
`ifconfig eth0 192.168.44.3`
不指定子网掩码就会使用标准的子网掩码
`ifconfig eth0 192.168.44.3 netmask 255.255.255.0`
指定子网掩码
## `ifup`启用网卡、`ifdown`关闭网卡
关闭eth0网卡命令:`ifdown eth0`
启用eth0网卡命令:`ifup eth0`
## `ping` -向网络主机发送请求
执行权限:所有用户
功能描述:向网络主机发送ICMP请求
命令格式:`ping [选项] IP`
**选项:**
| 选项 | 描述 |
| ---- | ----------------------------------------------------- |
| `-b` | 后面加入广播地址,用于对整个网段进行探测 |
| `-c` | 次数:用于指定ping的次数。`ping -c 3 192.168.103.105` |
| `-s` | 字节:指定探测包的大小。 |
再如:探测网段中可用主机
`ping -b -c 3 192.168.103.255`
## `ss` -查询网络访问
执行权限:超级用户
命令格式:`ss [选项]`
选项:
| 选项 | 描述 |
| ---- | ------------------------------------------ |
| `-a` | 列出所有网络状态,包括Socket程序 |
| `-n` | 使用IP地址和端口号显示,不使用域名和服务名 |
| `-p` | 显示PID和程序名 |
| `-t` | 显示TCP端口的连接状态 |
| `-u` | 显示UDP端口的连接状态 |
| `-l` | 查看监听状态 |
**TCP和UDP:**
①它们是两个具有代表性的传输层协议;
②TCP面向连接,而UDP是无连接的;
③TCP提供的服务更可靠;
④TCP面向字节流,UDP则是面向报文的;
⑤TCP连接只能是点到点相比,UDP连接方式更加多样化;
⑥UDP的首部开销8个字节比TCP的20字节要小;
在CentOS 7.x中默认没有安装`netstat`命令,而是通过`ss`命令取代了`netstat`命令。
**使用方法:**
查看本机所有网络连接:`ss -an`
查询本机开启的端口:`ss -tuln`
查看本机开启的端口与正在进行的连接:`ss -tuan`
## `netstat` -查看网络连接
执行权限:所有用户
功能描述:输出网络连接、路由表、接口统计、伪装链接和组播成员
命令格式:`netstat [选项]`
用法基本与`ss`一致。
## `write` -向其他用户发送信息
执行权限:所有用户
命令格式:`write 用户名 [终端号]`
如:`write user1 pts/1`
## `wall` -给所有登录用户发送信息
命令格式:`wall "要发送的信息"`
## `mail` -发送和接收电子邮件
执行权限:所有用户
**发送邮件:**
```
mail user1
Subject:hello <-右键标题
Nice to meet you! <-邮件内容
. <-使用"."来结束邮件输入
```
**发送文件内容:**
```
mail -s "test mail" root</root/anaconda-ks.cfg
```
其中`-s`选项用来指定邮件标题。
**查看已经接收的邮件:**
`mail`
## 打开ssh服务
```
service sshd start
```
## 打开22端口
```
netstat -ntpl | grep 22
```
## 查看防火墙状态
```
systemctl status firewalld
```
## 开启防火墙状态
```
systemctl start firewalld
```
## 关闭防火墙
```
systemctl stop firewalld
```
## 查看当前firewall状态
```
firewall-cmd --state
```
## 重启firewall
```
firewall-cmd --reload
```
## 禁止开启重启
```
systemctl disable firewalld.service
```
## 查看已经开放的端口
```
firewall-cmd --list-ports
```
## 开启端口
```shell
firewall-cmd --zone=public --add-port=80/tcp --permanent
```
## 测试端口
```shell
telnet 服务器ip地址 端口
#ip地址与端口使用空格隔开
```
# 用户和用户组管理
## 用户配置文件和管理相关文件
### 用户信息文件:`/etc/passwd`
保存所有用户的主要信息
### 影子(密码)文件:`/etc/shadow`
保存用户的实际加密密码和密码有效期等参数。这个文件只有超级用户才有权限查看。
### 组信息文件`/etc/group/`
记录组ID(GID)和组名的对应文件
### 组密码文件`/etc/gshadow`
# 服务器搭建
## 压缩包解压缩命令:
```
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
———————————————
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
———————————————
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
———————————————
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
```
## 启动tomcat
tomcat的bin目录下执行:
```
./startup.sh
```
## 关闭tomcat
```
./shutdown.sh
```
## 安装ssh服务
```
sudo yum install openssh-server
```
## 监听22端口
```
Port 22
ListenAddress 0.0.0.0
ListenAddress ::
```
!(C:\Users\stad\AppData\Roaming\Typora\typora-user-images\image-20201128154920006.png)
## 使用ssh服务登录
```
ssh root@192.168.0.114
```
## 打开某个端口号
```
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
```
## 重新启动网络服务
```
systemctl restart network
```
由于无法上传md格式的文件,所以md格式的笔记原件我放在附件压缩包中 互联网事 发表于 2021-1-6 17:39
这种归纳很无厘头,无益于记忆。
很多都是没头没脑的,比如开头是VI编辑器的快捷键,又缺失很 ...
我就没指望能记下来{:1_907:}是平时自己整理下来的笔记,自己查阅的,现在分享一下:lol 小涩席 发表于 2021-1-6 21:25
请问一下大佬,为什么在Centos 6服务器上运行sh文件没反应,又不报错,也不运行。本地搭建就可以,云服务器 ...
你换到超级用户试一下 很多命令平时都用到了,感觉整理的很全! 学习学习,请问有没有LINUX的虚拟机的镜像? 这些是基本功能,楼主。要搞搞:sed awk grep 三剑客 ivanlmy 发表于 2021-1-6 17:36
学习学习,请问有没有LINUX的虚拟机的镜像?
CentOS系统下载地址:https://www.centos.org/centos-linux/ {:1_907:}这种归纳很无厘头,无益于记忆。
很多都是没头没脑的,比如开头是VI编辑器的快捷键,又缺失很多,后面systemctl 很多环境根本没有 不错,最近才学完,可以复习一下 linuxcool 发表于 2021-1-6 17:38
这些是基本功能,楼主。要搞搞:sed awk grep 三剑客
基础命令太多也是记不住的啊,都是平时整理的,分享出来{:1_908:} 感谢分享。