You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RHEL 7.9系统下为Ticktok服务预留4590端口的方法咨询

RHEL 7.9系统下为Ticktok服务预留4590端口的方法咨询

嘿,这个场景我太熟悉了——服务偶尔停机维护,重启时却发现端口被其他程序抢了导致启动失败,在RHEL 7.9上要搞定这个问题,有两个实用方案,其中第二个最贴合你的需求:

方案一:通过内核参数预留端口,阻止随机分配

这个方法是告诉Linux内核,4590端口不要分配给那些随机使用端口的程序,只有明确指定绑定该端口的服务才能使用它:

  • 创建一个自定义的sysctl配置文件:touch /etc/sysctl.d/99-reserve-ports.conf
  • 编辑这个文件,添加一行配置:
    net.ipv4.ip_local_reserved_ports = 4590
    
  • 执行命令让配置立即生效:sysctl -p /etc/sysctl.d/99-reserve-ports.conf

注意:这个方法只能阻止内核随机分配端口,但如果有程序硬编码绑定4590端口,还是有可能占用它,不过绝大多数正常程序不会这么做。

方案二:用systemd Socket单元锁定端口(推荐)

这个方法是让systemd全程持有4590端口,不管Ticktok服务是运行还是停机维护,端口都不会被其他程序抢走,完美适配你的维护场景:

  1. 创建Ticktok的Socket单元文件
    创建/etc/systemd/system/ticktok.socket,写入以下内容:

    [Unit]
    Description=Ticktok Service Socket
    
    [Socket]
    ListenStream=4590
    BindIPv6Only=ipv6-only  # 如果不需要IPv6可以改成"no"
    
    [Install]
    WantedBy=sockets.target
    
  2. 修改Ticktok的systemd服务文件
    找到你的Ticktok服务文件(通常是/etc/systemd/system/ticktok.service),在对应段添加配置:

    • 在[Unit]段添加:
      Requires=ticktok.socket
      After=ticktok.socket
      
    • 在[Service]段添加(如果服务支持socket激活的话):
      StandardInput=socket
      StandardOutput=socket
      

    如果Ticktok服务本身是自己绑定4590端口的,你可能需要调整服务的启动参数,让它使用systemd提供的socket而非自行绑定端口,具体可以参考服务的官方文档调整启动命令。

  3. 重新加载systemd配置并启用服务

    • 执行命令刷新systemd配置:systemctl daemon-reload
    • 启动并启用socket服务:systemctl enable --now ticktok.socket
    • 之后正常启动Ticktok服务即可:systemctl start ticktok.service

这样一来,哪怕Ticktok服务停机维护,4590端口也会被systemd的socket单元牢牢占用,其他程序根本无法绑定这个端口,彻底解决你的问题。

备注:内容来源于stack exchange,提问作者King David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 15:58:12