在宝塔面板中,AnQiCMS的停止脚本(stop.sh)具体如何配置和执行?

📅 👁️ 66

作为一位资深的网站运营专家,我深知一套高效稳定的内容管理系统(CMS)对于企业在线业务的重要性。安企CMS(AnQiCMS)以其基于Go语言的高性能和简洁高效的架构,成为了众多中小企业和内容运营团队的理想选择。然而,再优秀的系统也离不开精细化的运维管理,其中就包括如何安全、有效地停止其运行进程。今天,我们就来深入探讨在宝塔面板环境中,AnQiCMS的停止脚本stop.sh究竟该如何配置与执行。

优雅停止:为何我们需要stop.sh

您可能会想,停止一个网站服务,直接在宝塔面板里点个停止按钮不就行了?或者简单粗暴地kill掉进程?对于AnQiCMS这样基于Go语言开发的应用程序而言,其运行机制与传统的PHP、Java应用有所不同。它通常以一个独立的二进制文件形式运行,其进程管理需要更为明确的指令。stop.sh脚本正是为了实现这一点而生,它不仅仅是强制终止,更承载着定位正确进程并安全关闭的职责,这对于避免数据损坏、确保下次启动的顺利至关重要。

stop.sh的核心任务是找到当前正在运行的AnQiCMS主进程,并向其发送终止信号。这个过程涉及到几个关键步骤和Unix/Linux命令的巧妙组合。

揭秘stop.sh脚本内容

根据AnQiCMS的官方文档,一个典型的stop.sh脚本大致会是这个样子:

#!/bin/bash
### stop anqicms
# author fesion
# the bin name is anqicms
BINNAME=anqicms
BINPATH="$( cd "$( dirname "$0"  )" && pwd  )"

# check the pid if exists
exists=`ps -ef | grep '\<anqicms\>' |grep -v grep |awk '{printf $2}'`
echo "$(date +'%Y%m%d %H:%M:%S') $BINNAME PID check: $exists" >> $BINPATH/check.log
echo "PID $BINNAME check: $exists"
if [ $exists -eq 0 ]; then
    echo "$BINNAME NOT running"
else
    echo "$BINNAME is running"
    kill -9 $exists
    echo "$BINNAME is stop"
fi

让我们分解一下这段脚本的精髓:

  1. BINNAME=anqicms:这行定义了AnQiCMS可执行文件的名称。默认情况下,AnQiCMS的可执行文件通常就叫做anqicms。如果您的文件名有所改动,务必在此处更新。
  2. BINPATH="$( cd "$( dirname "$0" )" && pwd )":这行代码非常巧妙,它自动获取了当前stop.sh脚本所在的绝对路径,并将其赋值给BINPATH。这意味着,无论您将脚本放在何处,只要与AnQiCMS的可执行文件在同一目录下,它就能自动识别其运行环境。
  3. exists=ps -ef | grep ‘<anqicms>’ |grep -v grep |awk ‘{printf $2}’”:这是脚本的核心命令,用于查找AnQiCMS的进程ID(PID)。
    • ps -ef:列出当前系统上所有正在运行的进程的详细信息。
    • grep '\<anqicms\>':从进程列表中筛选出包含“anqicms”关键字的行。\<\>是单词边界符,确保只匹配完整的“anqicms”单词,而非“anqicms_test”这类部分匹配。
    • grep -v grep:这一步是为了排除掉grep命令自身的进程,因为grep命令本身也会包含“grep”关键字,避免误杀。
    • awk '{printf $2}':提取出过滤后进程信息的第二列,通常就是进程ID(PID)。
  4. if [ $exists -eq 0 ]; then ... else ... fi:这是一个条件判断。
    • 如果exists(即找到的PID)为0,说明AnQiCMS进程未运行,脚本会输出“NOT running”。
    • 如果exists不为0,说明找到了正在运行的AnQiCMS进程,脚本会输出“is running”,然后执行kill -9 $exists命令。
  5. kill -9 $exists:这是强制终止指定PID进程的命令。-9是一个强制终止信号,意味着进程将立即停止,不做任何清理工作。虽然有些粗暴,但在确保进程停止方面非常有效。

在宝塔面板中配置stop.sh

有了对脚本的理解,在宝塔面板中配置就变得轻而易举了。

  1. 登录宝塔面板并进入“计划任务”:在左侧菜单栏找到并点击“计划任务”选项。

  2. 添加计划任务:点击页面上方的“添加计划任务”按钮。

  3. 配置任务参数

    • 任务类型:选择“Shell脚本”。
    • 任务名称:建议命名为“停止AnQiCMS”或类似清晰的名称。
    • 执行周期:官方文档中stop.sh的示例是每月执行一次,这通常是为了定期清理或配合计划性维护。但考虑到停止操作往往是临时性和主动性的,您也可以选择手动执行,或者根据实际维护需求设置(例如,在每月某个固定时间段进行维护前自动停止)。如果您只是为了手动停止,可以选择一个不常用的周期,如“月”,然后通过点击执行按钮来触发。
    • 脚本内容:将上面提供的stop.sh脚本内容粘贴到此处的文本框中。

    【关键定制点】 在粘贴脚本前,请务必检查并修改脚本中的BINNAMEBINPATH变量。

    • BINPATH:这需要是您的AnQiCMS程序所在的根目录,例如:/www/wwwroot/yourdomain.com。您可以在宝塔面板的“文件”管理中找到您AnQiCMS的部署路径。
    • BINNAME:这是AnQiCMS的可执行文件名,通常是anqicms。如果您在安装时进行了重命名(例如,为了区分多站点而命名为anqicms_site1),请务必同步修改。
    • grep '\<anqicms\>' 中的anqicms也需要与BINNAME保持一致。

    例如,如果您的AnQiCMS部署在/www/wwwroot/myanqicms目录下,可执行文件名为anqicms_main,那么脚本中对应的部分应修改为:

    #!/bin/bash
    ### stop anqicms
    # author fesion
    # the bin name is anqicms
    BINNAME=anqicms_main # <--- 修改为您的可执行文件名
    BINPATH="/www/wwwroot/myanqicms" # <--- 修改为您的程序根目录
    
    # check the pid if exists
    exists=`ps -ef | grep '\<anqicms_main\>' |grep -v grep |awk '{printf $2}'` # <--- 修改 grep 的匹配名
    echo "$(date +'%Y%m%d %H:%M:%S') $BINNAME PID check: $exists" >> $BINPATH/check.log
    echo "PID $BINNAME check: $exists"
    if [ $exists -eq 0 ]; then
        echo "$BINNAME NOT running"
    else
        echo "$BINNAME is running"
        kill -9 $exists
        echo "$BINNAME is stop"
    fi
    
    • 点击“添加任务”:完成上述配置后,点击按钮保存任务。

执行stop.sh脚本

当您需要停止AnQiCMS服务时,只需在宝塔面板的“计划任务”列表中,找到您刚刚创建的“

相关文章

AnQiCMS项目如何优雅地停止运行,而非强制关闭?

在网站运营中,服务的稳定性与数据的完整性是核心要素。对于像AnQiCMS这样基于Go语言开发的高效内容管理系统,其“优雅地停止运行”而非“强制关闭”显得尤为重要。这不仅仅关乎技术的规范性,更直接影响到网站的正常运作、用户体验以及关键数据的安全性。 ## 优雅停止:为何如此重要? 想象一下,你正在忙碌地编辑一篇重要的文章,或者用户正在浏览你的产品页面。此时

2025-11-06

如何在AnQiCMS后台创建和管理不同的网站导航类别及链接?

安企CMS作为一款高效的企业级内容管理系统,其灵活便捷的后台操作是众多用户选择它的重要原因。在网站运营中,导航系统无疑是用户体验和搜索引擎优化的核心要素。一个结构清晰、指向明确的导航不仅能帮助用户快速找到所需信息,更能引导搜索引擎蜘蛛有效抓取网站内容。今天,我们就来深入探讨如何在AnQiCMS后台创建和管理不同的网站导航类别及链接。 ### 巧妙搭建网站骨架:导航系统的重要性 想象一下

2025-11-06

AnQiCMS的“首页TDK设置”中,如何配置网站首页的标题、关键词和描述?

作为一名资深的网站运营专家,我深知网站首页的TDK(Title, Description, Keywords)设置对于搜索引擎优化(SEO)的重要性。它不仅是网站在搜索引擎结果页面(SERP)上的“名片”,更是吸引用户点击、提升网站可见度的关键环节。安企CMS(AnQiCMS)在设计之初就充分考虑了这一点,为用户提供了直观且强大的TDK设置功能,让即使是SEO新手也能轻松配置

2025-11-06

AnQiCMS的“内容设置”中,如何配置图片下载、外链过滤和Webp格式转换?

作为一名资深的网站运营专家,我深知AnQiCMS为内容管理者带来的便利与强大功能。尤其是在内容设置方面,它提供了许多精细化的选项,能够显著提升网站的性能、安全性和SEO表现。今天,我们就来深入探讨AnQiCMS的“内容设置”中,如何巧妙配置图片下载、外链过滤和WebP格式转换,让您的网站内容更具竞争力。 在AnQiCMS的后台,这些关键设置都集中在“后台设置”菜单下的“内容设置”模块中

2025-11-06

命令行下,AnQiCMS项目的`stop.sh`脚本执行失败时应如何排查?

在AnQiCMS的日常运维中,`stop.sh`脚本是管理服务生命周期的关键一环。它允许我们优雅地停止AnQiCMS服务,以便进行维护、升级或故障排查。然而,当这个看似简单的脚本执行失败,没有按预期停止服务时,往往会让我们感到困惑。作为一位资深的网站运营专家,我深知这种困扰,因此本文将带您深入剖析`stop.sh`脚本执行失败的各种可能原因,并提供一套行之有效的排查策略

2025-11-06

当AnQiCMS程序无响应时,如何在Linux上强制停止其进程?

当我们的AnQiCMS网站在Linux服务器上运行,偶尔可能会遇到程序无响应,导致网站无法正常访问的情况。这就像汽车在高速公路上突然熄火,让人焦急。作为网站运营专家,我们深知网站的稳定运行是多么重要。AnQiCMS作为一个基于Go语言开发、以高性能和稳定性为特点的内容管理系统,虽然设计上力求健壮,但任何软件在特定环境下都可能因资源耗尽、代码死锁或外部依赖问题而陷入僵局。面对这样的情况

2025-11-06

Windows环境下,如何通过任务管理器正确关闭AnQiCMS的后台进程?

## Windows环境下,如何通过任务管理器正确关闭AnQiCMS的后台进程? 作为一款基于 Go 语言开发的企业级内容管理系统,AnQiCMS 以其高效、小巧和卓越的运行速度赢得了众多用户的青睐。在日常的网站运营和维护中,我们有时需要暂停或完全关闭其后台服务,无论是进行系统维护、配置调整,还是简单的故障排查,正确地终止 AnQiCMS 的运行都是一项基础而重要的操作。对于 Windows

2025-11-06

AnQiCMS多站点模式下,停止其中一个站点会影响其他站点吗?

安企CMS作为一款高效的企业级内容管理系统,其强大的多站点管理功能无疑为许多运营者带来了便利。它允许我们在一个统一的后台,轻松驾驭多个独立的内容平台。然而,许多初次接触多站点模式的用户常常会有一个疑问:在一个AnQiCMS实例中,如果我们需要停止或维护其中一个站点,这是否会对其他正在正常运行的站点造成影响呢?今天,我们就来深度解析这个问题,并分享一些实用的运营建议。 --- ###

2025-11-06