小编pgc*_*ahy的帖子

向 systemd 发送特定信号以关闭服务

我有一个远程服务器,并通过浏览器连接到那里托管的Jupyter笔记本。jupyter 服务通过 运行systemd。问题是 jupyter 期望两个 ctrl-c命令在 5 秒内完全关闭。systemd只发送一个信号来停止进程,然后等待超时,当它看到 jupyter 没有停止时,最后发送一个终止信号。当我想停止或重新启动服务时,这会导致长时间的延迟和不干净的退出。我知道 systemd 有一个ExecStop参数,但找不到任何有关如何实际使用它的示例,以及如何ctrl-c通过此机制发送相当于两次击键的示例。

我当前的服务文件是:

[Unit]
    Description=Jupyter notebook

[Service]
    Type=simple
    PIDFile=/var/run/jupyter-notebook.pid
    ExecStart=/home/linuxbrew/.linuxbrew/bin/jupyter notebook --no-browser
    User=pgcudahy
    Group=pgcudahy
    WorkingDirectory=/home/pgcudahy
    Environment=PATH=/home/linuxbrew/.linuxbrew/opt/python/libexec/bin:/home/linuxbrew/.linuxbrew/opt/cython/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/home/pgcudahy/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

[Install]
    WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

systemd

7
推荐指数
1
解决办法
1万
查看次数

使用 byobu 连接到远程服务器并运行命令

我有一个远程服务器,我通常使用 ssh 连接到它,连接后 byobu 会自动启动(通过 .profile 中使用脚本设置的一行byobu-enable)。现在,我想在连接到同一服务器以使用远程 jupyter 笔记本时设置不同的工作流程。我希望远程服务器启动 jupyter,然后让 ssh 将jupyter端口转发到我的客户端计算机。我将其添加到本地 .ssh/config 中

Host remote-server-jupyter
    HostName      123.45.6.789
    User          pgcudahy
    LocalForward  8889 localhost:8889
    ServerAliveInterval 30
    ServerAliveCountMax 3
    RemoteCommand cd ~/Projects && jupyter notebook --no-browser --port=8889
Run Code Online (Sandbox Code Playgroud)

问题是“RemoteCommand”会干扰 byobu 启动,因此在连接并运行该命令后,我留下的是纯文本 shell,而不是漂亮的多路复用屏幕。如何在连接时同时获取 byobu 和远程命令?

重要的是,我不希望这些命令在每个连接上运行,除非我指定需要特定的工作流程。显然,我可以连接到 byobu,然后在服务器上运行脚本来设置我的工作区,但我想将这一切包装到来自客户端的一个自动命令中。更好的是拥有单独的配置文件,不仅运行自定义命令,还设置一个具有多个窗口和每个窗口中不同命令的自定义 byobu 工作区。

ssh tmux byobu

4
推荐指数
1
解决办法
3151
查看次数

标签 统计

byobu ×1

ssh ×1

systemd ×1

tmux ×1