有没有办法知道传输守护进程当前是否处于活动状态?

有没有办法知道传输守护进程当前是否处于活动状态?

我有一台笔记本电脑,用作连接到电视的媒体站,偶尔我会睡着了却忘记关闭笔记本电脑,这是不想要的行为。所以我每天早上 7 点使用 crontabs 关闭我的笔记本电脑,因为我确定那时我要么在睡觉,要么不在家。

但是有时我实际上正在使用 transmission-daemon 下载某些内容,并且希望笔记本电脑此时不要关闭。有没有办法检查 transmission daemon 是否正在下载?比如 transmission-daemon 的文件标志?我考虑扫描 transmission-daemon 使用的活动端口,但我认为可能存在更优雅的解决方案。

答案1

当然。第一个是传动装置未激活,第二个是激活。

rinzwind@schijfwereld:~$ ps -ef | grep transmission | grep -v grep

rinzwind@schijfwereld:~$ ps -ef | grep transmission | grep -v grep
rinzwind 10490     1 11 22:04 ?        00:00:00 transmission-gtk

有没有办法检查传输守护进程是否正在下载?

是的。API这是一个旧脚本从 2013 年开始关闭 MAC。需要进行 1 项更改:

subprocess.call(['osascript', '-e','tell application "Finder" to shut down'])

需要像这样:

subprocess.call(['shutdown', '--now','turn off'])

假设你在端口 9091 上设置了 Web 界面


先决条件:

cd ~
virtualenv .transmission_env
source .transmission_env/bin/activate
pip install transmissionrpc
deactivate

脚本如下:

#!/Users/fots/.transmission_env/bin/python

import subprocess

import transmissionrpc
from transmissionrpc.error import TransmissionError


def main():
    all_done = True
    try:
        tc = transmissionrpc.Client('localhost', port=9091)
        for torrent in tc.get_torrents():
            if torrent.status == 'downloading':
                all_done = False
                break
        if all_done:
            subprocess.call(['osascript', '-e',
                             'tell application "Finder" to shut down'])
    except TransmissionError:
        pass

if __name__ == "__main__":
    main()

相关内容