温馨提示×

Debian进程配置如何修改

小樊
42
2025-11-15 00:48:23
栏目: 智能运维

Debian 进程配置的常用修改方式

一 定位与编辑服务单元文件

  • 现代 Debian 使用 systemd 管理服务,服务单元文件通常位于:
    • /etc/systemd/system/(系统管理员自定义与覆盖)
    • /lib/systemd/system/(软件包提供的默认单元)
  • 快速查看某个服务的完整单元内容:
    • 命令:systemctl cat <服务名>
  • 编辑或新增单元后,必须执行:
    • 命令:sudo systemctl daemon-reload
    • 使改动生效:sudo systemctl restart <服务名>
  • 示例最小服务单元(/etc/systemd/system/example.service):
    • [Unit]
      • Description=示例服务
      • After=network.target
    • [Service]
      • ExecStart=/usr/bin/your-app
      • Restart=always
      • User=appuser
    • [Install]
      • WantedBy=multi-user.target
  • 启用开机自启:sudo systemctl enable example.service

二 环境变量与工作目录

  • 在单元文件中为单个服务设置环境变量:
    • [Service]
      • Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      • Environment=MY_VAR=my_value
      • WorkingDirectory=/opt/myapp
  • 全局环境变量(影响所有进程/登录会话):编辑 /etc/environment(语法为 KEY=VALUE,无 export)。
  • 用户级环境变量:编辑 ~/.bashrc~/.profile 等,并用 source ~/.bashrc 使当前会话生效。
  • 一次性启动并带环境变量:env MY_VAR=val /path/to/app

三 资源限制与进程数控制

  • 为单个 systemd 服务设置资源限制(在 [Service] 段):
    • LimitNOFILE=4096(文件描述符上限)
    • LimitNPROC=1024(用户进程数上限)
    • LimitCORE=infinity(核心转储大小)
    • 修改后执行:sudo systemctl daemon-reload && sudo systemctl restart <服务名>
  • 全局用户/用户组限制:编辑 /etc/security/limits.conf(或 /etc/security/limits.d/*.conf)
    • 示例:
      • * soft nproc 1024
      • * hard nproc 1024
    • 注意:通过 PAM 登录会话(如 ssh、终端)才会应用。
  • 系统级内核参数:编辑 /etc/sysctl.conf 或 /etc/sysctl.d/*.conf
    • 示例:
      • kernel.pid_max=4194303(最大 PID)
      • fs.file-max=100000(最大文件句柄)
    • 应用:sudo sysctl -p
  • 使用 cgroups 做更细粒度控制(示例创建 cpu、memory 组并加入任务):
    • sudo cgcreate -g cpu,memory:/mygroup
    • echo <PID> | sudo tee /sys/fs/cgroup/cpu/mygroup/tasks

四 启动项与启动顺序

  • 使用 systemd 管理启动项与依赖顺序:
    • 通过 After=WantedBy= 控制服务在 network.target 之后启动并随多用户目标启动。
    • 常用命令:systemctl enable|start|status|restart <服务名>
  • 旧式 SysV 脚本:在 /etc/init.d/ 放置脚本并使用 update-rc.d <脚本名> defaults 注册。
  • 兼容方案 rc.local:在 /etc/rc.localexit 0 前添加命令,并确保文件可执行(chmod +x /etc/rc.local)。
  • 使用 cron @rebootcrontab -e 添加 @reboot /path/to/script.sh,适合简单自启任务。

五 查找配置文件与实战示例

  • 快速定位服务主配置:
    • systemctl cat <服务名> 查看单元内容,通常会包含或提示主配置路径。
    • 常见主配置目录:/etc/<服务名>/(如 /etc/apache2//etc/mysql/)。
    • 全局配置与内核参数:/etc//etc/sysctl.conf
    • 搜索示例:grep -r "apache2.conf" /etc/
  • 实战示例(将 Python 应用作为服务运行):
    • 单元文件(/etc/systemd/system/my-python-app.service):
      • [Unit]
        • Description=My Python App
        • After=network.target
      • [Service]
        • Type=simple
        • User=myuser
        • WorkingDirectory=/opt/myapp
        • ExecStart=/usr/bin/python3 /opt/myapp/app.py
        • Restart=always
      • [Install]
        • WantedBy=multi-user.target
    • 操作:
      • sudo systemctl daemon-reload
      • sudo systemctl enable --now my-python-app.service
      • sudo systemctl status my-python-app.service

0