对于每个人程序员而言,平日里或多或少都会接触到 Linux
,在服务器方面, Linux
更是占据江山,本文简单介绍一些日常高频使用的命令。
一、基本命令
1. 系统设置
(1) 时间修改
例:将当前时间设置为 10
点:date -s 10:00
。
将当前日期设置为 2022-1-1
:date -s 1/1/2022
。
date -s <时间>
(2) 系统启停
通过 shutdown
关闭系统,reboot
实现服务器重启。
shutdown -r Now # 立即关闭
shutdown -r +1 # 设置 1 分钟后关闭
shutdown -h 18:00 # 设置 18:00 关机
2. 架构查看
arch
命令可以查看当前服务是 arm
架构还是 x86
架构。
arch # 查看系统内核
nproc # 查看 CPU 核心数
free -h # 查看内存使用情况
3. 文件列表
通过 ls
及相关命名查看目录文件信息,其中目录为蓝色,文件为灰色,绿色为隐藏文件。
ls -lh # 仅文件名,简写为:ls
ls -l # 详细信息: 简写为:ll
ls -a # 包括隐含文件
file <file_name> # 查看文件类型
4. 磁盘信息
通过 df
命令查看磁盘各分区使用情况。
df -h # 带单位显示文件系统的大小
du -h --max-depth=1 # 目录下各文件大小(指定层级为 1)
二、目录管理
1. 目录创建
通过 mkdir
命令创建目录,创建的目录名中若存在空格需使用 \
,如 mkdir a\ b
即在当前创建目录 a b
。
mkdir <dire_name> # 创建目录
mkdir -p <dire_1>/<dire_2> # 根据层级创建目录
(1) 删除目录
通过 rm
命令删除目录。
rmdir <dire_name> # 无法删除非空目录
rm -rf <dire_name> # 强制删除,删除非空目录时使用
(2) 删除文件
删除 N
天前的文件。
find <path> -type f -mtime +N -exec rm {} \;
2. 目录迁移
在 Linux
中没有重命名命令,移动到当前目录即等价于重命名。
mv <source_path> <target_path>
复制目录需加 -r
,复制文件则不需要。
cp <source_path> <target_path> # 移动文件
cp -r <source_path> <target_path> # 移动目录
文件链接分为软链接和硬链接,目录无法创建硬链接,文件则无限制。
ln <path> <nickname> # 硬链接,即源文件复制
ln -s <path> <nickname> # 软链接,即快捷方式
三、文件查看
1. 文件创建
通过 touch
命令即可新建文件,此外 echo
可实现文件内容写入功能。
touch <file_name> # 创建文件
echo 'content' > <file_name> # 创建文件并写入内容
2. 内容查看
常用的文件内容查看命令如下:
more <文件名>
cat <文件名> # 查看短文档,过长无法显示
head -n <文件名> # 查看前 n 行,默认 15 行
tail -n <文件名> # 查看后 n 行,默认尾部 10 行
tail -f <文件名> # 动态查看文件内容
3. 文件查找
通过 find
命令可按照指定规则搜索文件或目录。
属性 | 作用 |
---|---|
path | 目标搜索路径。 |
type | 搜索类型,依据名称 -name, 依据类型 -type。 |
name | 搜索目标名称,可通过 * 实现泛搜索。 |
# 基本格式
find <path> <type> <name>
# 查看 path 目录下 N 天前的文件
find <path> -type f -mtime +N -exec ls -l {} \;
4. 文件分发
通过 scp
命令可实现不同服务器之间的文件传输,当传输对象为目录时需要添加 -r
参数。
(1) 分发到远程
如下命令将本机 /temp/hellp.txt
文件复制到 192.168.0.1
的 /temp
目录下,回车后需输入目标服务器的 root
登录密码。
# 命令格式
scp -r <local_path> <User>@<IP>:<remote_path>
scp -r /temp/hellp.txt root@192.168.173.1:/temp
(2) 分发到本机
如下将 192.168.173.1
的 /temp/hellp.txt
文件复制到本机 /temp
目录下。
# 命令格式
scp -r root@<IP>:<remote_path> <local_path>
scp -r root@192.168.173.1:/temp/hellp.txt /temp
四、用户管理
1. 创建用户
通过 useradd
创建用户之后会在 /home
目录下生成同名目录。
useradd <用户名> # 创建用户
passwd <用户名> # 设置密码
useradd -c <备注> # 创建带备注信息的用户
2. 删除用户
通过 userdel
命令删除用户,添加参数 -r
会删除在 /home
目录下创建的同名文件夹。
userdel <user_name> # /home 路径下的目录仍存在
userdel -r <user_name> # 完全删除用户及其文件夹
3. 权限管理
通过 usermod
命令管理用户权限。
usermod -s /sbin/nologin <user_name> # 设置用户不能登陆系统
usermod -L <user_name> # 即无法使用该用户名进行登录
usermod -U <user_name> # 重新启用被禁用的用户
五、压缩管理
常见的压缩包格式有:.tar
, .tar.gz
, .zip
, .gzip
,根据不同格式选择不同命令。
1. 文件打包
在实际环境中最常见到是 tar.gz
,因为该方式能够保存文件权限信息,压缩后文件为红色标识,目录大小不变,其中相关命令参数如下:
方法 | 作用 |
---|---|
-c | 创建新的 tar 文件包。 |
-x | 解包 tar 文件。 |
-z | 将文件压缩为 gz 格式。 |
-t | 在不解包的情况下显示包文件内容。 |
-f | 用于指定文件名称。 |
-v | 不显示文件目录打包过程。 |
tar -cf <alias.tar> <target> # 打包文件
tar -xf <alias.tar> # 解包文件
tar -tf <target.tar> # 不解压的前提列出文件
tar -zcf <alias.tar.gz> <target> # 打包目录并压缩
tar -zxf <target.tar.gz> # 解压缩文件
2. 文件压解缩
其中 -r
表示压缩整个目录。
zip -r <name.zip> <dire_name> # 压缩文件
gzip -d <file> # 解压文件
unzip -l <name.zip> # 不解压列出
unzip <name.zip> <dire_name> # 解压到指定路径
六、文本编辑
1. 插入模式
在命令模式下按 i
键进入。
2. 命令模式
在插入模式下按 esc
键进入。
3. 末行模式
在插入模式下按 exit
键进入命令模式,然后输入对应命令按回车即可。
命令 | 功能 | 命令 | 功能 | |
---|---|---|---|---|
0 | 左移光标到行首 | $ | 右移光标至行尾 | |
gg | 光标移至首行 | ctrl + g | 光标移至尾行 | |
u | 撤销上一步操作 | dd | 删除光标所在行行 | |
yy | 拷贝光标所在行 | /word | 搜索,n 查看下一个词 | |
: set nu | 显示行标 | : set nonu | 关闭行标 |
七、进程管理
1. 防火墙
针对生产服务器并不建议关闭防火墙,应根据情况对放行相应端口或 IP
。
systemctl status firewalld # 防火墙状态
systemctl stop firewalld # 停止防火墙
systemctl disable firewalld # 禁用防火墙
firewall-cmd --reload # 刷新配置
2. 策略管理
(1) 端口策略
每次修改端口策略后都需要刷新配置使其生效。
# 开启指定端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 关闭指定端口
firewall-cmd --zone=public --remove-port=22/tcp --permanent
# 查看已打开的所有端口
firewall-cmd --zone=public --list-ports
(2) IP策略
每次修改 IP
策略后都需要刷新配置使其生效。
# 放行指定 IP
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.1" accept"
# 移除配置的策略
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.0.1" accept"
# 查看策略
firewall-cmd --list-all
3. 进程管理
通过 ps
组合命令可根据服务名查询进程信息。
top # 查看系统中进程动态变化
jobs # 查看后台的进程
ps aux | grep <name> # 查看服务进程
通过 pwdx
命令可查询对应进程的服务运行目录。
pwdx <pid> # 根据进程号查看应用目录
pgrep <name> # 根据服务查看进程号
4. 端口监听
netstat
与 lsof
命令都能根据端口查询其对应服务进程信息。
# 工具安装
yum install -y net-tools
# 查看指定端口
netstat -tunl | grep <port>
# 查看端口占用情况
lsof -i:<port>
八、网络请求
1. Get请求
curl
默认发送的即 Get
请求,若请求含参则通过 ?
拼接于 url
中。
curl <url> # 发送 get 请求到 url
curl <url>?id=123&name=alex
2. Post请求
通过 -X Post
指定请求方式为 Post
,-H
用于指定请求头,-d
用于指定请求体内容。
curl -X POST -d 'name=alex&pwd=456' <url>
curl -H "Content-Type: application/json" \
-X POST -d '{"name":"alex","pwd":"456"}' <url>
九、服务器优化
1. Host修改
通过设置 hostname
服务器之前即可不通过 IP
实现访问。
# 自定义本机名称
hostnamectl set-hostname <自定义名称>
添加集群 Host
,在配置文件添加如下内容:
# 编辑 Hosts 配置
vi /etc/hosts
# 文件添加内容示例
192.168.173.1 node1
192.168.173.2 node2
192.168.173.3 node3
2. JDK安装
JDK
安装步骤较为简单,提前下载好对应版本的 JDK
并上传至服务器,修改系统文件并刷新即可。
通过 arch
命令查看服务器是 x86
还是 arm
并上传下载的服务包,编辑 /etc/profile
文件并在文末配置 JDK
环境变量。
vim /etc/profile # 修改配置文件
export JAVA_HOME=/usr/local/jdk1.8.0_261
export PATH=${JAVA_HOME}/bin:$PATH
通过 source
命令重载配置使环境变量生效。
source /etc/profile # 生效配置