![有没有办法知道传输守护进程当前是否处于活动状态?](https://linux22.com/image/1168524/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E7%9F%A5%E9%81%93%E4%BC%A0%E8%BE%93%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B%E5%BD%93%E5%89%8D%E6%98%AF%E5%90%A6%E5%A4%84%E4%BA%8E%E6%B4%BB%E5%8A%A8%E7%8A%B6%E6%80%81%EF%BC%9F.png)
我有一台笔记本电脑,用作连接到电视的媒体站,偶尔我会睡着了却忘记关闭笔记本电脑,这是不想要的行为。所以我每天早上 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()