Asterisk 22.11.0 常用 CLI 命令与工具详解

Asterisk 22.11.0 常用 CLI 命令与工具详解:asterisk 启动参数与 core/pjsip/dialplan/logger/module/database 七大命令族逐条实测,含 AstDB 读写删闭环、logger rotate 落盘验证与服务停止排障。

Asterisk即时通信Asterisk2026/10/22

Asterisk 22.11.0 常用 CLI 命令与工具详解

目标:把管理 Asterisk 22.11.0 的两套命令面——asterisk 二进制的启动参数与运行时 CLI 控制台的七大常用命令族(core/pjsip/dialplan/logger/module/database/channel)——逐条讲清并配真实回显,形成一套可照抄的日常运维命令手册。全部命令与回显均在 Ubuntu 22.04 x86_64 服务器的 Asterisk 22.11.0 实测采集;安装与配置参数背景见 《Ubuntu 22.04 安装 Asterisk 指南》 与 《Asterisk 22.11.0 配置参数详解》。

一、环境信息

本文所有命令与回显均在以下环境实测采集:

  • 操作系统:Ubuntu 22.04 LTS(x86_64);
  • Asterisk 版本:22.11.0(当前最新 LTS,源码编译安装);
  • 运行形态:systemd 服务 asterisk.service(Type=notify)托管,运行用户 asterisk;
  • CLI 通道:Unix 套接字 /var/run/asterisk/asterisk.ctl(asterisk -r/-rx 经它连接);
  • 示例对象:PJSIP 端点 100、6001、6002(来自配置篇与部署篇的实测环境);
  • 日志目录:/var/log/asterisk(messages.log、full.log、queue_log);
  • 模块规模:实测 316 个模块加载(module show 统计行)。

二、工具概览

管理 Asterisk 有两层命令面,先分清再上手:

  • 第一层:asterisk 二进制(服务器 shell 里执行)。负责启停进程、连接控制台、单发 CLI 命令(-rx)——它是「入口」,本身不查业务状态;
  • 第二层:运行时 CLI(Asterisk 进程内的控制台命令)。数百条命令按族组织(core、pjsip、dialplan、logger、module、database、bridge、channel……),负责查看与操控运行中的 PBX。进入方式两种:交互式 asterisk -r(进入 asterisk*CLI> 提示符,exit 退出),或单发式 asterisk -rx "<命令>"(执行即退出,适合脚本与本文的全部演示)。

两层关系:asterisk -rx "core show uptime" 实际是「第一层连接套接字 → 第二层执行 core 族命令 → 返回结果退出」。

运行时 CLI 的全量命令清单用帮助体系自查(实测):

asterisk -rx "core show help"

实测回显(输出节选,实测首尾;全量数百行):

!                              -- Execute a shell command
acl show                       -- Show a named ACL or list all named ACLs
aeap show client               -- Show AEAP client configuration by id
ael reload                     -- Reload AEL configuration
agent show                     -- Show information about an agent
agi show commands [topic]      -- List AGI commands or specific help
ari show apps                  -- List registered ARI applications
bridge show all                -- List all bridges
calendar show calendars        -- Show registered calendars
cdr set debug [on|off]         -- Enable debugging in the CDR engine
...
voicemail show users [for]     -- List defined voicemail boxes
xmldoc dump                    -- Dump the XML docs to the specified file
xmldoc reload                  -- Reload the XML docs

💡 说明:core show help 输出「命令 -- 一句话说明」两列;任一命令后缀查询子帮助,如 core show help core show channels。首行的 ! 是交互控制台里临时执行 shell 命令的转义符(如 !ls /var/log/asterisk),受 asterisk.conf 的 disable_remote_console_shell 开关约束(配置篇 5.1 节)。

日常运维命令按使用频率的族分布如下表,五、六、七节逐族详解:

命令族用途高频命令
core内核状态与生命周期core show version/uptime/channels、core restart gracefully
pjsipSIP 端点与信令诊断pjsip show endpoints、pjsip set logger on
dialplan拨号计划查看与重载dialplan show、dialplan reload
logger日志通道管理logger show channels、logger rotate
module模块加载管理module show like
database内置 AstDB 键值库database put/get/show/del
channel/bridge通道与桥接(通话中)core show channels

三、前置条件

本章确认命令手册可复现的环境基线:Asterisk 服务在跑、CLI 通道可用。完整安装步骤见 《Ubuntu 22.04 安装 Asterisk 指南》。

确认服务运行状态:

systemctl is-active asterisk

实测回显:

active

确认 CLI 通道应答正常:

asterisk -rx "core show version"

实测回显:

Asterisk 22.11.0 built by root @ 7d9aaf7362ca on a x86_64 running Linux on 2026-10-21 11:21:56 UTC

💡 说明:-rx 中的 -r 连接本机 Asterisk 控制台、-x 执行命令后退出。版本串里的构建主机名与时间随安装环境不同而不同,以能返回版本号为准。若此处报 Unable to connect to remote asterisk,直接转七、Q3 排障。

四、asterisk 命令行参数详解

asterisk -h 是第一层工具的权威参数表,实测全文如下:

asterisk -h

实测回显(全量):

Asterisk 22.11.0, Copyright (C) 1999 - 2025, Sangoma Technologies Corporation and others.
Usage: asterisk [OPTIONS]
Valid Options:
   -V              Display version number and exit
   -C <configfile> Use an alternate configuration file
   -G <group>      Run as a group other than the caller
   -U <user>       Run as a user other than the caller
   -c              Provide console CLI
   -d              Increase debugging (multiple d's = more debugging)
   -f              Do not fork
   -F              Always fork
   -g              Dump core in case of a crash
   -h              This help screen
   -i              Initialize crypto keys at startup
   -L <load>       Limit the maximum load average before rejecting new calls
   -M <value>      Limit the maximum number of calls to the specified value
   -m              Mute debugging and console output on the console
   -n              Disable console colorization. Can be used only at startup.
   -p              Run as pseudo-realtime thread
   -q              Quiet mode (suppress output)
   -r              Connect to Asterisk on this machine
   -R              Same as -r, except attempt to reconnect if disconnected
   -s <socket>     Connect to Asterisk via socket <socket> (only valid with -r)
   -t              Record soundfiles in /var/tmp and move them where they
                   belong after they are done
   -T              Display the time in [Mmm dd hh:mm:ss] format for each line
                   of output to the CLI. Cannot be used with remote console mode.

   -v              Increase verbosity (multiple v's = more verbose)
   -x <cmd>        Execute command <cmd> (implies -r)
   -X              Enable use of #exec in asterisk.conf
   -W              Adjust terminal colors to compensate for a light background

日常最高频的参数逐项说明:

参数作用典型用法
-V只打印版本号退出升级后核对版本(回显 Asterisk 22.11.0)
-r连接本机控制台进入交互 CLI排障时盯实时输出
-R同 -r,断线自动重连长时间盯台
-x "<命令>"连上执行一条命令即退出(隐含 -r)脚本化巡检,本文主力
-c前台启动并直接进控制台前台排障(配合 -f)
-f / -F不 fork 前台跑 / 强制 forksystemd 托管用 -f(见部署篇单元文件)
-C <文件>指定主配置多实例/备用配置测试
-U <用户> / -G <组>启动时切换运行身份apt 版单元 -U asterisk(部署篇 5.3 节)
-v(可叠)提高控制台详细级别asterisk -rvvvvv 加深排障输出
-d(可叠)提高调试级别内核问题深挖,生产慎用
-q安静模式systemd 单元 -mqf 组合成员
-m控制台输出静音/重定向同上
-M <数> / -L <负载>限制最大呼叫数 / 负载阈值等价 asterisk.conf 的 maxcalls/maxload 的命令行版

💡 说明:命令行参数与 asterisk.conf [options] 段是同一批开关的两个入口,命令行优先。systemd 托管后这些「启动类」参数都写在单元的 ExecStart 行里(源码版 -mqf -C /etc/asterisk/asterisk.conf,apt 版 -g -f -p -U asterisk),日常不再手工带参启动——第一层参数真正的高频使用只剩 -V、-r、-rx 三个。

五、运行时 CLI 命令族详解

本章按命令族逐条给出「命令 → 实测回显 → 说明」。全部通过 asterisk -rx 采集;在交互控制台(asterisk -r)里去掉外层包装执行效果相同。

5.1 core 族:内核状态与生命周期

(1)版本与运行时长。 版本见三、前置条件;运行时长:

asterisk -rx "core show uptime"

实测回显:

System uptime: 4 hours, 25 minutes, 57 seconds
Last reload: 4 hours, 25 minutes, 57 seconds

说明:System uptime 进程级时长;Last reload 最近一次全量重载时间。巡检时 uptime 突然变小意味着进程被重启过,应回查 systemd 日志。

(2)内核运行值总览。

asterisk -rx "core show settings"

实测回显(输出节选,实测首尾):


PBX Core settings
-----------------
  Version:                     22.11.0
  Maximum calls:               Not set
  Maximum open file handles:   1024
  Root console verbosity:      0
  Debug level:                 0
  Startup time:                11:48:01
  Last reload time:            17:06:45
  ...
* Directories
  -------------
  Configuration file:          /etc/asterisk/asterisk.conf
  Configuration directory:     /etc/asterisk
  Module directory:            /usr/lib/asterisk/modules
  Log directory:               /var/log/asterisk
  Run/Sockets directory:       /var/run/asterisk

说明:这一屏核对启动参数与目录布局是否如预期生效(与 asterisk.conf 参数的对照见配置篇 5.1 节)。

(3)通道与呼叫计数。

asterisk -rx "core show channels"

实测回显(空闲态):

Channel                                                          Location                         State   Application(Data)
0 active channels
0 active calls
0 calls processed
asterisk -rx "core show calls"

实测回显:

0 active calls
0 calls processed

说明:0 calls processed 自启动以来未处理过呼叫;有话务后此处是容量观察点——活跃通道数接近 asterisk.conf 的 maxcalls 就该扩容。通话进行中再执行 core show channels 会逐行列出通道名、所在拨号位置、当前应用与数据,是「现在谁在打电话、打到哪一步」的第一入口。

(4)编解码能力清单。

asterisk -rx "core show codecs"

实测回显(输出节选,实测首段):

Disclaimer: this command is for informational purposes only.
        It does not indicate anything about your configuration.
      ID TYPE  NAME         FORMAT           QUALITY DESCRIPTION
------------------------------------------------------------------------------------------------
       4 audio alaw         alaw                 100 (G.711 a-law)
       2 audio g723         g723                  20 (G.723.1)
      24 audio g722         g722                 110 (G722)
      19 audio g729         g729                  45 (G.729A)
       9 audio slin         slin                 115 (16 bit Signed Linear PCM)
      34 video h264         h264                  0 (H.264 video)
      ...

说明:首行 Disclaimer 明确提示这只列「编译时支持的编解码全集」,不代表 pjsip.conf 里放行了哪些——放行与否看 pjsip show endpoint <分机> 的 allow 值(配置篇 5.2 节实测为 (ulaw))。

(5)全量配置热重载。

asterisk -rx "core reload"

实测回显(成功时静默返回):

说明:按序重载全部支持热重载的配置(等价于依次执行 pjsip reload、dialplan reload、logger reload 等);无输出即成功,疑有异常时用 core show uptime 看 Last reload 时间是否刷新。

(6)CLI 侧优雅重启。

asterisk -rx "core restart gracefully"

实测回显(命令本身无输出):

验证重启确已发生(等十余秒后查):

asterisk -rx "core show uptime"

实测回显:

System uptime: 11 seconds
Last reload: 11 seconds

说明:gracefully 等 busy 通道结束后再重启(core restart now 立即断话重启、core restart when convenient 空闲才重启)。命令无输出,以 uptime 归零为生效判据;生产执行前先看 core show channels 确认没有进行中的通话。实测环境空闲,重启在数秒内完成且服务恢复 active。

5.2 pjsip 族:SIP 端点与信令诊断

(1)端点总览。

asterisk -rx "pjsip show endpoints"

实测回显(输出节选,实测首尾):


 Endpoint:  <Endpoint/CID.....................................>  <State.....>  <Channels.>
     I/OAuth:  <AuthId/UserName...........................................................>
         Aor:  <Aor............................................>  <MaxContact>
       ...
==========================================================================================

 Endpoint:  100                                                  Unavailable   0 of inf
     InAuth:  auth100/100
        Aor:  100                                                2

 Endpoint:  6001                                                 Unavailable   0 of inf
     InAuth:  auth6001/6001
        Aor:  6001                                               2

 Endpoint:  6002                                                 Unavailable   0 of inf
     InAuth:  auth6002/6002
        Aor:  6002                                               2


Objects found: 3

说明:State: Unavailable 表示该端点当前无注册 contact(七、Q4);话机注册成功后该端点状态转 Available 并在 Aor 行下挂出 Contact 与 RTT。

(2)单端点参数明细(排编解码/DTMF/context 配置争议时的权威输出):

asterisk -rx "pjsip show endpoint 6001"

实测回显(输出节选,实测首尾;全量约 150 行参数表):


 Endpoint:  6001                                                 Unavailable   0 of inf
     InAuth:  auth6001/6001
        Aor:  6001                                               2


 ParameterName                      : ParameterValue
 ===================================================================================================
 100rel                             : yes
 allow                              : (ulaw)
 context                            : from-internal
 direct_media                       : true
 dtmf_mode                          : rfc4733
 media_encryption                   : no
 rtp_symmetric                      : false
 timers                             : yes
 webrtc                             : no

(3)注册对象:AOR 与 Contact。

asterisk -rx "pjsip show aors"

实测回显:


      Aor:  <Aor..............................................>  <MaxContact>
    Contact:  <Aor/ContactUri............................> <Hash....> <Status> <RTT(ms)..>
==========================================================================================

      Aor:  100                                                  2

      Aor:  6001                                                 2

      Aor:  6002                                                 2


Objects found: 3
asterisk -rx "pjsip show contacts"

实测回显(无设备注册时空态):

No objects found.

说明:AOR 列出注册落点与 max_contacts 上限;Contact 列出实际注册的话机联系人。pjsip show contacts 为空与端点 Unavailable 互相印证,是「话机注册不上」时区分服务器侧/终端侧问题的分水岭——服务器侧有对象而 Contact 空,问题多在终端配置或网络可达性。

(4)传输层。

asterisk -rx "pjsip show transports"

实测回显:


Transport:  <TransportId........>  <Type>  <cos>  <tos>  <BindAddress....................>
==========================================================================================

Transport:  transport-udp             udp      0      0  0.0.0.0:5060

Objects found: 1

(5)SIP 报文抓取开关。

asterisk -rx "pjsip set logger on"

实测回显:

PJSIP Logging enabled
asterisk -rx "pjsip set logger off"

实测回显:

PJSIP Logging disabled

说明:开启后全部收发的 SIP 报文(REGISTER/INVITE/响应)按时间戳打到控制台与 messages.log,是排注册失败、INVITE 401、No route 类问题最直接的取证手段。看完务必关回——报文体量大,会快速推高日志(配置篇 5.5 节日志治理)。

(6)pjsip 配置热重载。

asterisk -rx "pjsip reload"

实测回显:

Module 'res_pjsip.so' reloaded successfully.
Module 'res_pjsip_authenticator_digest.so' reloaded successfully.
Module 'res_pjsip_endpoint_identifier_ip.so' reloaded successfully.
Module 'res_pjsip_mwi.so' reloaded successfully.
Module 'res_pjsip_notify.so' reloaded successfully.
Module 'res_pjsip_outbound_publish.so' reloaded successfully.
Module 'res_pjsip_publish_asterisk.so' reloaded successfully.
Module 'res_pjsip_outbound_registration.so' reloaded successfully.

说明:逐模块回报重载结果,全部 successfully 即生效。⚠️ 例外:transport 段参数 reload 不生效需重启服务(配置篇七、Q1 实测)。

5.3 dialplan 族:拨号计划查看与重载

(1)查看单个 context。

asterisk -rx "dialplan show from-internal"

实测回显:

[ Context 'from-internal' created by 'pbx_config' ]
  '6001' =>         1. NoOp(demo call to 6001)                    [extensions.conf:892]
                    2. Dial(PJSIP/6001,20)                        [extensions.conf:893]
                    3. Hangup()                                   [extensions.conf:894]
  '6002' =>         1. NoOp(demo call to 6002)                    [extensions.conf:895]
                    2. Dial(PJSIP/6002,20)                        [extensions.conf:896]
                    3. Hangup()                                   [extensions.conf:897]

-= 2 extensions (6 priorities) in 1 context. =-

说明:每行右侧 [extensions.conf:行号] 直接定位规则在源文件中的位置;末行统计 context 内的分机与优先级总数。「改了拨号计划怎么验证」——重载后跑这条命令逐行比对即是最可靠的闭环。

(2)查看全局变量。

asterisk -rx "dialplan show globals"

实测回显:

   OUTBOUND-TRUNKMSD=1
   OUTBOUND-TRUNK="Zap/g2"
   CONSOLE-AEL="Console/dsp"
   TRUNKMSD=1
   TRUNK=DAHDI/G2
   CONSOLE=Console/dsp

    -- 6 variable(s)

(3)拨号计划热重载。

asterisk -rx "dialplan reload"

实测回显:

Dialplan reloaded.

说明:extensions.conf 的改动到此生效,随即用 5.3(1)命令验证新规则;配置语法错误时重载会保留旧计划并在控制台报错行,按行号修正后再次 reload 即可。

5.4 logger 族:日志通道管理

(1)查看通道。

asterisk -rx "logger show channels"

实测回显:

Logger queue limit: 1000

Channel                             Type     Formatter  Status    Configuration
-------                             ----     ---------  ------    -------------
/var/log/asterisk/full.log          File     default    Enabled    - NOTICE WARNING ERROR VERBOSE
/var/log/asterisk/messages.log      File     default    Enabled    - NOTICE WARNING ERROR
                                    Console  default    Enabled    - NOTICE WARNING ERROR VERBOSE

说明:逐行对应 logger.conf [logfiles] 段的一个通道;Configuration 列是各通道生效的级别集,与配置文件比对可确认重载结果。

(2)日志配置热重载。

asterisk -rx "logger reload"

实测回显(成功时静默返回):

(3)日志轮转。

asterisk -rx "logger rotate"

实测回显(成功时静默返回):

落盘验证(rotate 后):

ls -l /var/log/asterisk/*.log*

实测回显:

-rw-r--r-- 1 asterisk asterisk   117 Oct 21 17:14 /var/log/asterisk/full.log
-rw-r--r-- 1 asterisk asterisk  4899 Oct 21 17:07 /var/log/asterisk/full.log.0
-rw-r--r-- 1 asterisk asterisk   117 Oct 21 17:14 /var/log/asterisk/messages.log
-rw-r--r-- 1 asterisk asterisk 18156 Oct 21 17:07 /var/log/asterisk/messages.log.0

说明:rotate 后原日志改名 .0 归档、新同名文件从零写入(默认 rotatestrategy=sequential 的行为);生产可把它挂进 cron 做定时轮转,或改用 logrotate 对接(logger.conf 的 rotatestrategy 参数见配置篇 5.5 节)。

5.5 module 族:模块加载管理

(1)按名字过滤查看。

asterisk -rx "module show like pjsip"

实测回显(输出节选,实测尾段):

res_pjsip_transport_websocket.so PJSIP WebSocket Transport Support        0          Running              core
res_pjsip_xpidf_body_generator.so PJSIP Extension State PIDF Provider      0          Running              core
50 modules loaded
asterisk -rx "module show like res_hep"

实测回显(modules.conf 黑名单排除后的空态):

Module                         Description                              Use Count  Status      Support Level
0 modules loaded

(2)全量清单。

asterisk -rx "module show"

实测回显(输出节选,实测尾段):

udptl                          UDPTL                                    2          Running              core
316 modules loaded

说明:like 子串过滤 + 末行计数是核对 modules.conf 生效与否的标准动作(黑名单参数详解见配置篇 5.6 节);Use Count 非 0 说明有资源在引用该模块,此时 module unload 会被拒绝,属保护机制。

5.6 database 族:内置 AstDB 键值库

AstDB 是 Asterisk 自带的 Berkeley DB 键值库(落盘 /var/lib/asterisk/astdb),存少量运行状态(如黑名单、动态路由标记),拨号计划用 DB() 函数读、DB() 写。CLI 四件套实测闭环:

写入(database put <族> <键> <值>):

asterisk -rx "database put demo extension 6001"

实测回显:

Updated database successfully

读取(database get <族> <键>):

asterisk -rx "database get demo extension"

实测回显:

Value: 6001

全览(database show [前缀]):

asterisk -rx "database show"

实测回显:

/demo/extension                                   : 6001
/pbx/UUID                                         : d0267c20-84e6-4ff8-96cd-75b22c2dbc60
2 results found.

删除(database del <族> <键>)并复核:

asterisk -rx "database del demo extension"

实测回显:

Database entry removed.
asterisk -rx "database show"

实测回显:

/pbx/UUID                                         : d0267c20-84e6-4ff8-96cd-75b22c2dbc60
1 results found.

说明:键以 /族/键 两级组织;/pbx/UUID 是系统内置项(实例唯一标识)勿动。AstDB 持久化于 astdb 文件,重启不丢;排查「拨号计划里 DB 读不到值」时,先 database show 确认键真的存在。

六、注意事项

  • -rx 与交互控制台的取舍:单发 -rx 每次新建连接,适合脚本与巡检;盯实时日志(如 pjsip set logger on 期间的报文流)用 asterisk -r 或 -R(断线重连)交互进控制台,exit 退出。
  • 重启类命令先看话务:core restart now/gracefully/when convenient 三个档位分别对应「立即断话重启/等通话结束重启/空闲才重启」。执行前先 core show channels 确认活跃通话,生产默认选 gracefully 或 when convenient。
  • 诊断开关用完即关:pjsip set logger on、core set verbose 5、core set debug 这类加量开关都会成倍放大日志量,取证完成立即关回基线。
  • 无输出 ≠ 失败:core reload、logger reload、logger rotate、core restart gracefully 成功时都不回显,必须用配套查询命令(uptime/logger show channels/ls 落盘)确认效果——本文各节已给出对应验证命令。
  • 帮助优先于记忆:命令拼写拿不准时 core show help 全量查、core show help <命令> 细看子用法;本文覆盖的是高频子集,7 大族之外还有 bridge/ari/voicemail/parking 等族按需自查。

七、常见问题(FAQ)

Q1:core show globals 报 No such command? 22.x 已移除该命令,全局变量改由 dialplan 族管理。实测报错与正确命令:

No such command 'core show globals' (type 'core show help core show globals' for other possible commands)

改用 dialplan show globals(实测回显见 5.3 节)。旧版文档/脚本里的 core show globals 需同步替换。

Q2:dialplan show contexts 报 There is no existence of 'contexts' context? dialplan show 后面跟的是 context 名字,没有 contexts 子命令。实测报错:

There is no existence of 'contexts' context
Command 'dialplan show contexts' failed.

正确用法:dialplan show from-internal 看单个(见 5.3 节);不带参数的 dialplan show 输出全部 context(量大,建议管道 grep 过滤 context 名)。

Q3:asterisk -rx 报 Unable to connect to remote asterisk? CLI 通道连不上运行中的进程。实测复现(服务停止时执行):

Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)

按序排查:① systemctl is-active asterisk 确认服务真的在跑(实测停止态即复现上面报错,systemctl start asterisk 恢复后 -rx 正常返回版本);② 服务在跑仍报错,查套接字文件与权限——ls -l /var/run/asterisk/asterisk.ctl,属主应为 asterisk 且当前用户在其组内(systemd 单元 RuntimeDirectory=asterisk 负责建目录,见部署篇 4.8 节);③ -s <socket> 指向了自定义套接字的实例时需显式带上。

Q4:pjsip show endpoints 端点一直 Unavailable? Unavailable 只表示「没有已注册的 contact」,不是配置错误(空环境实测即如此,见 5.2 节回显)。判断流程:pjsip show contacts 为空 + 端点 Unavailable → 话机还没注册成功,去终端侧核对服务器地址/账号口令(auth 段),服务器侧开 pjsip set logger on 看 REGISTER 是否到达、响应是 401 还是 200;Contact 出现且 Status 为 Avail → 注册链路已通。

Q5:core restart gracefully 敲完没任何输出,怎么知道执行了没有? 该命令设计即无回显。用 core show uptime 复核——实测执行后十余秒 System uptime: 11 seconds 归零即重启完成(见 5.1 节闭环);若uptime 持续不归零,说明有 busy 通道在等 gracefully 排空,core show channels 看谁还挂着,紧急时用 core restart now(会断话)。

八、参考链接