Желая запустить сценарий в определенное время в MacOS, вместо этого возвращается «задание 4 в среду» 12 июня, 16:55:00, 2019 г. - PullRequest
0 голосов
/ 11 июня 2019

Я хочу создать bash-скрипт, который будет выполнять одноразовую команду громкости в определенное время, однако, когда я следую приведенным инструкциям, я просто получаю немедленную распечатку:

job 4 at Wed Jun 12 16:55:00 2019

Моя проблема похожа на этот вопрос: Как запустить скрипт в определенное время в Linux?

Однако пользователь там прокомментировал ту же проблему, что и у меня, и на этот вопрос не было дано ответа, поэтому я хотел узнать, есть ли у кого-нибудь еще решение этой проблемы. Из моего ограниченного понимания команды в mac должны быть похожи, если не идентичны linux, поэтому дайте мне знать, если я что-то упускаю.

Мой исполняемый файл выглядит так:

#!/bin/bash

osascript -e "set Volume 0" | at 16:55

Вместо того, чтобы изменять громкость в указанное время, он немедленно отключает компьютер и распечатывает текст, приведенный выше.

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Используйте heredoc, чтобы избежать эха

at 16:55 <<!
    osascript -e "set Volume 0"
!

, затем убедитесь, что ваше задание запланировано с помощью

at -l

, в котором перечислены все задания.

0 голосов
/ 11 июня 2019

Для этого вам потребуется Python 3 и установка зависимостей вверху файла, но это работает.

#!/usr/bin/env python3

import datetime as dt
import osascript
import sys
from threading import Timer 


def do_the_biz():
    osascript.osascript("set volume output volume 0")
    print("Happy birthday.")
today = dt.datetime.now()
dateString = today.strftime('%d-%m-%Y') + " " + sys.argv[1]
newDate = today.strptime(dateString,'%d-%m-%Y %H:%M')
delay = (newDate - dt.datetime.now()).total_seconds()
Timer(delay,do_the_biz,()).start()

Как только вы сделали: $ pip install osascript... и все остальное, используйте это так:

$ ~/filename 16:55

Выше предполагается, что он находится в вашей домашней папке, но это может быть где угодно, если вы введете путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...