查看 systemd 服务内的命令日志?

查看 systemd 服务内的命令日志?

我有一个运行 ngrok 的 systemd 服务。

[Unit]
Description=Ngrok
After=network.service

[Service]
type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu
ExecStart=/snap/bin/ngrok http 4000 --host-header="localhost:4000"
Restart=on-failure

[Install]
WantedBy=multi-user.target

该服务的状态:

● ngrok.service - Ngrok
     Loaded: loaded (/etc/systemd/system/ngrok.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-04-23 14:30:57 UTC; 7min ago
   Main PID: 24333 (ngrok)
      Tasks: 0 (limit: 4435)
     CGroup: /system.slice/ngrok.service
             ‣ 24333 /snap/ngrok/56/ngrok http 3000 --host-header=localhost:4000

Apr 23 14:30:57 pi-ubuntu systemd[1]: Started Ngrok.

但是,我必须查看 ngrok 的输出才能获取 url。我怎样才能看到输出恩格罗克来自 systemd 服务的命令如下。

~> ngrok http 4000 --host-header="localhost:4000"
    ngrok                                                                                                                                       (Ctrl+C to quit)                                                                                                                                                            Session Status                online
    Account                       Amod Amatya (Plan: Free)
    Version                       3.0.2
    Region                        Europe (eu)
    Latency                       27.47694ms
    Web Interface                 http://127.0.0.1:4040
    Forwarding                    https://xyz-testing.ngrok.io -> http://localhost:4000                                                                                                                                                                                                    Connections                   ttl     opn     rt1     rt5     p50     p90
                                  0       0       0.00    0.00    0.00    0.00

附言。 Journalctl 也不显示命令的完整日志。

答案1

我必须查看 ngrok 的输出才能获取 url。

一定有更好的方法!这是一个重要的操作属性,不应该仅仅通过标准输出可见。我确信Ngrok有某种方法可以从正在运行的服务中读取该内容。我从未使用过 ngrok,但我知道它是某种端口转发服务,你可以查询您的活动端点相当容易使用

curl \
    -H "Authorization: Bearer {API_KEY}" \
    -H "Ngrok-Version: 2" \
    https://api.ngrok.com/endpoints

Journalctl 也不显示命令的完整日志。

那么你的 ngrok 不会记录你想要的内容。就这么简单:从服务文件启动的命令的标准输出就是您在journalct -u ngrok.service.如果其中没有,则表示尚未打印。

相关内容