如何高效控制Linux服务器?需要掌握哪些核心命令和工具?

控制Linux服务器是系统管理员的核心任务,涉及服务管理、进程调度、用户权限、系统监控、安全防护等多个维度,确保服务器稳定、安全、高效运行,以下从关键操作场景出发,详细说明控制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等旧系统使用,通过servicechkconfig命令。
    • 启动服务: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:动态实时监控,按CPUMEM排序,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限制用户或进程的资源:

如何控制linux的服务器

  • 限制最大文件数: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监控topP键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

    如何控制linux的服务器

  • 定期清理:清理日志(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端口占用进程)。
  • 端口转发:使用iptablessocat,如将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种常用方法:

  1. 修改用户Shell:将用户登录Shell设置为/sbin/nologin(仅禁止远程登录,可本地操作),命令:usermod -s /sbin/nologin username
  2. SSH配置禁止:编辑/etc/ssh/sshd_config,添加DenyUsers username,重载SSH服务:systemctl reload sshd
  3. 锁定用户密码:使用passwd -l username锁定密码,即使知道密码也无法登录(需root解锁)。
    注:方法1最常用,不影响用户本地权限(如通过su切换),且可逆(修改为/bin/bash即可恢复)。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/34133.html

(0)
酷番叔酷番叔
上一篇 2025年10月2日 01:43
下一篇 2025年10月2日 02:10

相关推荐

  • Arch安装分区不当会怎样?

    分区前的核心准备备份数据使用dd或rsync备份整个磁盘:dd if=/dev/sdX of=/path/to/backup.img status=progress双系统用户需提前用fdisk -l确认Windows/Mac分区位置,避免误删,选择分区工具命令行工具(推荐):fdisk:通用MBR/GPT工具g……

    2025年6月18日
    5400
  • 如何用g O0编译动态库?

    编译动态库需使用关键参数:-fPIC生成位置无关代码,-shared指定输出为动态库,-g包含调试信息,-O0禁用优化便于调试。

    2025年7月17日
    5300
  • 如何快速提升网站流量?

    在Linux系统中,查看设备的子设备数量是设备管理、驱动调试或系统维护中的常见需求,子设备通常指依附于父设备(如USB控制器、PCI总线)的衍生设备(如USB外设、PCI扩展卡),以下是几种专业可靠的方法:使用 lsusb 查看USB子设备(推荐)适用场景:快速统计USB控制器下的子设备数量,步骤:lsusb……

    2025年7月24日
    5000
  • linux文件权限如何查看文件夹权限设置

    Linux中,使用ls -l命令可查看文件和文件夹的权限设置。

    2025年8月15日
    3500
  • 如何快速定位mysqld路径?

    方法1:使用 mysql 命令(推荐)mysql –version输出示例:mysql Ver 8.0.33-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))说明:直接显示MySQL客户端版本,无需登录数据库,若提示command not found,需安装MyS……

    2025年7月2日
    5000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信