【问题标题】:How to end a process in another linux terminal如何在另一个 linux 终端中结束进程
【发布时间】:2016-04-08 20:16:23
【问题描述】:

背景信息:

  • 我正在尝试使用树莓派设置远程显示。
  • 目前我正在使用 fbi(帧缓冲区图像查看器)来显示图像。
  • 设备将通过 ssh 或 Web 界面进行控制 - 不确定是哪个,但绝对不是来自实际设备。

问题是我似乎找不到一种简单的方法来“清理”远程退出进程、清除屏幕并不产生错误。如果按下 q 按钮,fbi 程序将退出,但这似乎对 ssh 没有好处。理想情况下,我更喜欢一个不那么混乱的解决方案,然后每次都必须在杀死它之前查找 pid。我对使用另一个程序的想法持开放态度,但是我无法在 Xorg 中运行它。

我试过了:

  • grep-ing pid 并发送 kill -sigterm 但它要么不退出要么不清除屏幕
  • echo "q" > /proc/[pid]/fd/0 - 我尝试的所有迭代要么被拒绝访问,要么什么也没发生

有什么想法吗?

【问题讨论】:

  • 建议:我会编写一个 shell 脚本,它 1) 执行“kill -9 fbi”,然后 2) 调用“clear”

标签: linux process kill framebuffer sigterm


【解决方案1】:

如何在没有消息的情况下终止进程?
在一个终端中,我启动了一个进程:

# sleep 100

现在终止进程,没有消息并且不知道 pid:

# kill -13 (pgrep sleep)

如何远程清屏?
首先,获取要清除的终端的tty#:

# tty
/dev/pts/1

现在来自不同的终端:

# printf '\033c' > /dev/pts/1

【讨论】:

    【解决方案2】:

    在没有看到您的代码的情况下,解决方案可能是使用 fbi 从另一个终端仅在 fb0 上显示图像:

    fbi -T 1 -noverbose -d /dev/fb0 image.png
    

    然后只需清除整个帧缓冲区(fb0):

    dd if=/dev/zero of=/dev/fb0
    

    或者更好的是,只需将“空白”图像写入 fb0 以“清除”它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-08
      • 2021-05-09
      • 2011-12-30
      • 2020-09-21
      • 2020-03-04
      • 2011-03-27
      • 2014-05-31
      • 1970-01-01
      相关资源
      最近更新 更多