控制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