Linux作为服务器操作系统的首选,其部署过程中的命令行操作是系统管理员和开发人员必备的核心技能,熟练掌握常用部署命令,能够高效完成软件安装、服务管理、网络配置、安全加固等关键任务,确保系统稳定运行,以下将详细介绍Linux环境下部署常用的各类命令及其应用场景。

软件包管理命令
Linux发行版主要分为基于Debian/Ubuntu的APT(Advanced Package Tool)和基于RedHat/CentOS的YUM(Yellow dog Updater, Modified)两大包管理系族,其命令存在差异但功能相似。
APT系列命令(Debian/Ubuntu)
sudo apt update
:更新软件包列表,从服务器获取最新的包信息。sudo apt upgrade
:升级已安装的所有软件包到最新版本。sudo apt install <package_name>
:安装指定的软件包,如sudo apt install nginx
。sudo apt remove <package_name>
:移除软件包但保留配置文件,如sudo apt remove nginx
。sudo apt purge <package_name>
:彻底移除软件包及其配置文件,如sudo apt purge nginx
。sudo apt autoremove
:自动清理不再需要的依赖包。sudo apt search <keyword>
:根据关键词搜索软件包,如sudo apt search ftp
。
YUM/DNF系列命令(CentOS/RHEL 7+/Fedora)
sudo yum check-update
:检查可更新的软件包。sudo yum update
:升级所有已安装的软件包。sudo yum install <package_name>
:安装软件包,如sudo yum install httpd
。sudo yum remove <package_name>
:移除软件包。sudo yum clean all
:清理缓存中的软件包数据。sudo yum search <keyword>
:搜索软件包,如sudo yum search mysql
。
注:CentOS 8+及Fedora推荐使用DNF(Dandified YUM),命令语法与YUM兼容,功能更强大。
系统服务管理命令
现代Linux系统多采用systemd
初始化系统,服务管理命令统一为systemctl
。

sudo systemctl start <service_name>
:启动服务,如sudo systemctl start nginx
。sudo systemctl stop <service_name>
:停止服务。sudo systemctl restart <service_name>
:重启服务。sudo systemctl reload <service_name>
:重新加载配置文件(不中断服务),如sudo systemctl reload nginx
。sudo systemctl enable <service_name>
:设置服务开机自启,如sudo systemctl enable mysql
。sudo systemctl disable <service_name>
:禁止服务开机自启。sudo systemctl status <service_name>
:查看服务运行状态及日志,如sudo systemctl status sshd
。sudo systemctl list-units --type=service
:列出所有已启动的服务单元。
文件与目录管理命令
部署过程中频繁涉及文件操作,掌握以下命令可提升效率。
ls -la
:列出目录下所有文件(含隐藏文件)及详细信息,包括权限、所有者、大小、修改时间。cd <path>
:切换目录,cd ..
返回上级目录,cd ~
进入用户主目录。pwd
:显示当前工作目录的完整路径。mkdir -p <dir_name>
:递归创建目录(若父目录不存在则自动创建),如mkdir -p /data/webapp/logs
。rm -rf <file_or_dir>
:强制递归删除文件或目录(需谨慎使用,-r
递归,-f
强制)。cp -r <source> <destination>
:递归复制目录,如cp -r /tmp/app /opt/
。mv <source> <destination>
:移动文件/目录或重命名,如mv config.php.example config.php
。touch <file_name>
:创建空文件或更新文件时间戳。chmod <permission> <file>
:修改文件权限,如chmod 755 script.sh
(所有者可读可写可执行,组用户和其他用户可读可执行)。chown <user>:<group> <file>
:修改文件所有者,如chown nginx:nginx /var/www/html/index.html
。
网络配置与诊断命令
部署服务常需检查网络连通性、端口占用及配置网络参数。
ifconfig
或ip addr
:查看网络接口IP地址信息(ifconfig
需安装net-tools
,ip addr
为iproute2
工具)。ping <ip_or_domain>
:测试网络连通性,如ping baidu.com
。netstat -tuln
:查看监听的TCP/UDP端口及进程(-t
TCP,-u
UDP,-l
仅显示监听端口,-n
以数字形式显示地址和端口)。ss -tuln
:netstat
的替代工具,显示更高效,如ss -tuln | grep 80
查看80端口占用情况。curl -I <url>
:检查HTTP响应头,如curl -I http://localhost
。wget <url>
:下载文件,如wget https://nginx.org/download/nginx-1.22.0.tar.gz
。ssh <user>@<ip>
:远程登录服务器,如ssh root@192.168.1.100
。scp <source> <user>@<ip>:<destination>
: secure copy,加密传输文件,如scp /local/file.txt user@remote:/remote/path/
。
进程管理命令
监控和管理系统进程是保障服务稳定运行的关键。
ps aux
:查看系统中所有进程的详细信息(a
所有终端,u
用户格式,x
包含无终端进程)。top
或htop
:实时监控系统进程及资源占用(htop
为增强版,交互更友好)。kill <pid>
:终止指定进程(需知道进程ID),如kill 1234
。killall <process_name>
:通过进程名终止所有匹配进程,如killall nginx
。nohup <command> &
:让命令在后台持续运行且忽略挂断信号,如nohup python app.py &
,输出默认重定向到nohup.out
。
压缩与解压命令
部署文件常需压缩传输,Linux支持多种压缩格式。

tar -czvf <archive.tar.gz> <dir>
:打包并gzip压缩目录,如tar -czvf backup.tar.gz /var/www/html
。tar -xzvf <archive.tar.gz>
:解压gzip压缩包,如tar -xzvf backup.tar.gz
。zip -r <archive.zip> <dir>
:创建zip压缩包(需安装zip工具),如zip -r app.zip /opt/app
。unzip <archive.zip>
:解压zip文件,如unzip app.zip
。gzip <file>
:压缩文件为.gz格式(原文件删除),如gzip access.log
。gunzip <file.gz>
:解压.gz文件,如gunzip access.log.gz
。
日志查看与分析命令
排查问题时,日志是重要依据。
tail -f <log_file>
:实时查看日志文件末尾内容(-f
持续跟踪),如tail -f /var/log/nginx/error.log
。grep <pattern> <log_file>
:从日志中过滤包含指定模式的行,如grep "error" /var/log/syslog
。cat <log_file> | less
:分页查看日志内容(支持上下翻页、搜索)。journalctl -u <service_name>
:查看systemd服务的日志,如journalctl -u nginx
,-f
实时跟踪,-n 100
显示最后100行。
用户与权限管理命令
多用户环境下需合理分配权限。
sudo useradd -m <username>
:创建新用户并创建主目录,如sudo useradd -m deploy
。sudo passwd <username>
:设置用户密码,如sudo passwd deploy
。sudo userdel -r <username>
:删除用户及其主目录,如sudo userdel -r deploy
。sudo visudo
:编辑sudoers文件,配置用户sudo权限(推荐使用此命令直接编辑,避免权限错误)。su - <username>
:切换用户身份,参数加载目标用户环境变量,如su - deploy
。
磁盘与文件系统管理命令
部署前需检查磁盘空间,挂载新存储设备。
df -h
:查看磁盘分区使用情况(-h
以人类可读格式显示,如GB、MB)。du -sh <dir>
:查看目录总大小(-s
总计,-h
人类可读格式),如du -sh /var/www
。fdisk -l
:列出磁盘分区表信息,如sudo fdisk -l /dev/sdb
。mkfs -t <fs_type> <device>
:格式化磁盘分区,如sudo mkfs -t ext4 /dev/sdb1
。mount <device> <mount_point>
:挂载文件系统,如sudo mount /dev/sdb1 /data
。umount <device_or_mount_point>
:卸载文件系统,如sudo umount /data
。
相关问答FAQs
Q1: 如何在Linux系统中查看某个端口被哪个进程占用?
A: 可以使用netstat
或ss
命令结合grep
进行过滤,查看80端口占用情况:
netstat -tuln | grep 80 # 或 ss -tuln | grep 80
若需查看具体进程ID,可添加-p
参数(需root权限):
sudo netstat -tulnp | grep 80
输出结果中PID/Program name
列即为占用端口的进程信息。
Q2: Linux部署时如何设置服务开机自启,并确保服务崩溃后自动重启?
A: 使用systemctl
命令可轻松实现开机自启,通过配置Restart
参数确保崩溃自动重启,步骤如下:
- 启用服务开机自启:
sudo systemctl enable <service_name>
- 编辑服务文件(以
nginx
为例)设置崩溃自动重启:sudo systemctl edit nginx
- 在打开的编辑器中添加以下配置(若文件为空,需添加
[Service]
段落):[Service] Restart=always RestartSec=5s
其中
Restart=always
表示无论何种退出原因均重启,RestartSec=5s
表示重启间隔5秒。 - 保存文件后重新加载服务配置:
sudo systemctl daemon-reload sudo systemctl restart nginx
此时服务将开机自启,且崩溃后自动重启。