控制Linux服务器是系统管理员的核心任务,涉及服务管理、进程调度、用户权限、系统监控、安全防护等多个维度,确保服务器稳定、安全、高效运行,以下从关键操作场景出发,详细说明控制Linux服务器的方法与实践。

服务管理:服务器功能的核心载体
Linux服务(Daemon)是后台持续运行的程序,提供Web、数据库、网络等功能,服务管理是服务器控制的基础,需掌握启动、停止、重启、开机自启等操作。
服务管理工具
- Systemd(现代主流):CentOS 7+、Ubuntu 16+等系统默认使用,通过
systemctl命令管理。- 启动服务:
systemctl start nginx - 停止服务:
systemctl stop nginx - 重启服务:
systemctl restart nginx - 查看服务状态:
systemctl status nginx - 设置开机自启:
systemctl enable nginx - 禁止开机自启:
systemctl disable nginx - 查看服务依赖:
systemctl list-dependencies nginx
- 启动服务:
- SysVinit(传统系统):CentOS 6、Ubuntu 14等旧系统使用,通过
service和chkconfig命令。- 启动服务:
service nginx start - 开机自启:
chkconfig nginx on
- 启动服务:
服务日志排查
服务异常时,需通过日志定位问题,Systemd服务日志可通过journalctl查看:
- 实时查看日志:
journalctl -u nginx -f - 查看最近100行日志:
journalctl -u nginx --no-pager -n 100 - 按时间筛选:
journalctl -u nginx --since "2024-01-01 10:00"
服务依赖管理
Systemd支持服务依赖关系,通过Wants(弱依赖)、Requires(强依赖)等配置,确保服务按正确顺序启动,Nginx服务可配置依赖网络服务(network.target),避免网络未就绪时启动失败。
进程管理:服务器资源调度的核心
进程是程序执行的实例,合理管理进程可避免资源耗尽、服务卡顿等问题。
进程查看工具
- ps:静态查看进程,
ps aux显示所有进程详细信息(用户、CPU、内存占用等),ps -ef以全格式展示。 - top:动态实时监控,按
CPU、MEM排序,k键终止进程,f键自定义显示字段。 - htop:top的增强版(需安装),支持鼠标操作、进程树可视化,更直观。
- pgrep:按名称查找进程ID,如
pgrep nginx返回Nginx主进程PID。
进程控制
- 终止进程:
kill(普通终止)、kill -9(强制终止,无法忽略信号),如kill -9 1234(PID为1234的进程)。 - 进程优先级调整:
nice值(-20到19,值越小优先级越高),启动时设置nice -n -10 nginx;运行中调整renice 15 1234(将PID 1234进程优先级设为15)。 - 进程守护:关键进程需持久化运行,避免意外退出,可通过
systemd将进程封装为服务(如编写.service文件),或使用supervisor(Python进程管理工具,支持自动重启)。
资源限制
为防单个进程占用过多资源,可通过ulimit限制用户或进程的资源:

- 限制最大文件数:
ulimit -n 65536 - 限制最大内存:
ulimit -v 1073741824(1GB) - 永久限制:编辑
/etc/security/limits.conf,添加* soft nofile 65536(*表示所有用户)。
用户与权限控制:服务器安全的基石
最小权限原则是安全管理的核心,需严格控制用户权限,避免越权操作。
用户管理
- 创建用户:
useradd -m -s /bin/bash testuser(-m创建家目录,-s指定默认shell)。 - 修改用户:
usermod -l newname oldname(改名)、usermod -aG sudo testuser(添加sudo组)。 - 删除用户:
userdel -r testuser(-r删除家目录)。
权限管理
Linux通过r(读)、w(写)、x(执行)权限控制文件访问,搭配chmod(修改权限)、chown(修改所有者)管理:
- 符号法:
chmod u+x script.sh(用户添加执行权限)、chmod g-w file.txt(组移除写权限)。 - 数字法:
chmod 755 script.sh(所有者rwx,组和其他r-x)。 - 递归修改:
chmod -R 755 /var/www/html(修改目录及子目录权限)。
sudo权限配置
允许普通用户执行管理员命令,编辑/etc/sudoers(使用visudo命令避免语法错误):
- 单用户授权:
testuser ALL=(ALL) /usr/bin/apt, /usr/bin/systemctl - 用户组授权:
%admin ALL=(ALL) ALL(admin组用户可执行所有命令)。
特殊权限
- SUID:用户执行文件时以文件所有者权限运行(如
passwd命令),设置chmod u+s /usr/bin/passwd。 - SGID:用户进入目录后继承目录组权限,设置
chmod g+s /data/project。 - Sticky Bit:仅文件所有者可删除目录内文件(如
/tmp),设置chmod +t /tmp。
系统监控与性能优化:保障服务器高效运行
实时监控服务器状态,及时发现并解决性能瓶颈,是控制服务器的关键环节。
系统资源监控
- CPU监控:
top按P键CPU排序,vmstat 1每秒刷新CPU、内存、IO数据(r列运行进程数,us列用户CPU占用)。 - 内存监控:
free -h(人性化显示内存使用),-/+ buffers/cache列是实际可用内存(需减去缓存和缓冲区)。 - 磁盘监控:
df -h查看分区使用情况,iostat -xz 1监控磁盘IO(await平均等待时间,svctim服务时间)。 - 网络监控:
netstat -tlnp查看监听端口,ss -tlnp(netstat替代品,性能更好),iftop实时流量监控(需安装)。
性能优化
- 资源限制:通过
cgroups(控制组)限制进程CPU、内存使用,如cgcreate -g cpu,memory:/nginx_cgroup创建组,cgset -r cpu.cfs_quota_us=50000 nginx_cgroup限制CPU使用率50%。 - 内核参数调优:编辑
/etc/sysctl.conf,优化网络、文件系统,如:net.ipv4.tcp_max_syn_backlog = 65536 # SYN队列长度 fs.file-max = 1000000 # 最大文件句柄数
生效命令:
sysctl -p。
- 定期清理:清理日志(
logrotate轮转)、临时文件(/tmp)、无用包(apt autoremove),释放磁盘空间。
安全控制:防范未然,抵御威胁
服务器安全是控制的重中之重,需从访问控制、漏洞修复、入侵检测等多维度加固。
防火墙配置
- firewalld(CentOS 7+):
- 添加允许端口:
firewall-cmd --permanent --add-port=80/tcp - 重载规则:
firewall-cmd --reload - 查看规则:
firewall-cmd --list-all
- 添加允许端口:
- iptables(传统):
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许SSH iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许HTTP iptables -A INPUT -j DROP # 禁止其他访问 service iptables save # 保存规则
SSH安全加固
- 禁用root登录:编辑
/etc/ssh/sshd_config,设置PermitRootLogin no。 - 密钥认证:禁用密码登录,设置
PasswordAuthentication no,客户端通过ssh-keygen生成密钥对上传。 - 修改默认端口:
Port 2222(避免默认22端口扫描)。 - 防暴力破解:安装
fail2ban,监控SSH失败登录,封禁恶意IP(如/etc/fail2ban/jail.local配置)。
漏洞与入侵检测
- 系统更新:定期执行
apt update && apt upgrade(Ubuntu)或yum update(CentOS),修复已知漏洞。 - 入侵检测工具:使用
Lynis(系统安全审计)、Rkhunter(检测rootkit),定期扫描异常文件或进程。 - 日志审计:启用
auditd服务,记录关键操作(如登录、文件修改),日志存于/var/log/audit/。
网络服务配置:提供稳定对外服务
服务器通常需提供Web、数据库、DNS等网络服务,需掌握安装、配置、优化方法。
常见服务部署
- Nginx Web服务:安装
apt install nginx,配置文件/etc/nginx/nginx.conf和/etc/nginx/sites-available/default,通过systemctl restart nginx生效。 - MySQL数据库:安装
mysql-server,安全初始化mysql_secure_installation,配置/etc/mysql/mysql.conf.d/mysqld.cnf(调整缓冲池大小innodb_buffer_pool_size)。 - DNS服务:安装
bind9,配置/etc/bind/named.conf和区域文件,通过nslookup测试解析。
端口与连接管理
- 查看端口占用:
netstat -tlnp | grep :80(查看80端口占用进程)。 - 端口转发:使用
iptables或socat,如将80端口转发到8080:iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080。
常用监控工具对比表
| 工具名 | 用途 | 常用命令 | 特点 |
|---|---|---|---|
| top | 实时进程监控 | top -p 1234(指定进程) |
系统内置,轻量 |
| htop | 增强版进程监控 | htop --sort-cpu |
交互式,支持进程树 |
| vmstat | 系统资源统计 | vmstat 1 5(每秒1次,共5次) |
CPU、内存、IO综合统计 |
| iostat | 磁盘IO监控 | iostat -xz 1 |
详细磁盘性能指标 |
| iftop | 实时网络流量监控 | iftop -i eth0(指定网卡) |
按连接/主机显示流量 |
相关问答FAQs
Q1:如何查看Linux服务器上某个服务的详细日志?
A:对于Systemd管理的服务(如Nginx),使用journalctl命令:
- 实时查看日志:
journalctl -u nginx -f(-f持续跟踪) - 查看最近1小时日志:
journalctl -u nginx --since "1 hour ago" - 查看带时间戳的完整日志:
journalctl -u nginx --no-pager -o cat
若服务使用传统Syslog(如Apache),日志通常位于/var/log/目录(如/var/log/apache2/error.log),使用tail -f实时查看:tail -f /var/log/apache2/error.log。
Q2:如何禁止某个用户远程登录SSH?
A:有3种常用方法:
- 修改用户Shell:将用户登录Shell设置为
/sbin/nologin(仅禁止远程登录,可本地操作),命令:usermod -s /sbin/nologin username。 - SSH配置禁止:编辑
/etc/ssh/sshd_config,添加DenyUsers username,重载SSH服务:systemctl reload sshd。 - 锁定用户密码:使用
passwd -l username锁定密码,即使知道密码也无法登录(需root解锁)。
注:方法1最常用,不影响用户本地权限(如通过su切换),且可逆(修改为/bin/bash即可恢复)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/34133.html