Чи можна створити програму Automator для запуску Tomcat, коли мені це потрібно?


4

Я можу запустити Apache Tomcat (встановлений через HomeBrew) у терміналі, використовуючи

$ catalina run

Але він не працює в сценарії оболонки програми Automator з використанням bash

Я спробував налаштувати a bash Скрипт оболонки в Automator, як це:

catalina run

Коли я запускаю програму Automator, вона не працюватиме та показуватиметься -: catalina: command not found.

Який правильний спосіб створити програму Automator, або мені потрібно використовувати AppleScript?

Відповіді:


2

Щоб відповісти на запитання:

  • Чи можна створити програму Automator для запуску та зупинки Tomcat, коли мені це потрібно?

    Так

  • Який правильний спосіб це зробити, або мені потрібен AppleScript?

  • І чи можна зробити обидва запуску і зупинки в одному програмі Automator?
  • Який правильний спосіб створити програму Automator, або мені потрібно використовувати AppleScript?

Оскільки зазвичай існує більше одного способу досягти чогось, ми можемо утримуватися від використання "... правильного шляху до ..." і показувати вам деякі варіанти.

Якщо ви просто хочете бути в змозі перемикання стану з Apache Tomcat , тобто початок або Стоп це, то наступний командний рядок може бути використаний в a Автоматизатор Робочий процес програми за допомогою a Запустіть сценарій оболонки дії :

  • В Автоматизатор , створіть нове Робочий процес програми .
  • Додати a Запустіть сценарій оболонки дії .
    • Налаштування : Оболонка: / bin / bash і Прохідний вхід: до stdin

Замінити код за замовчуванням з наступним рядком код :

[[ $(/bin/ps aux | /usr/bin/grep [t]omcat) == "" ]] && /usr/local/bin/catalina start || /usr/local/bin/catalina stop
  • Збережіть Автоматизатор Робочий процес програми .

Ця команда перевірки щоб побачити, якщо Apache Tomcat є працює і якщо ні , потім починається це, і якщо так , потім зупиняється це. Це просто перемикає стан з Apache Tomcat . Це рішення без надмірностей.


Більш надійним рішенням було б використовувати a Запустіть AppleScript дії замість цього.

  • В Автоматизатор , створіть нове Робочий процес програми .
  • Додати a Запустіть AppleScript дії .

Використовуйте наступне наприклад AppleScript код на місці код за замовчуванням :

try
    set isRunning to (do shell script "/bin/ps aux | /usr/bin/grep [t]omcat")
on error number 1
    set isRunning to missing value
end try

if isRunning contains missing value then
    display dialog "                Click the Start button to start Apache Tomcat." buttons {"Cancel", "Start"} ¬
        default button 2 with title "Start Apache Tomcat"
    do shell script "/usr/local/bin/catalina start"
else
    display dialog "                Click the Stop button to stop Apache Tomcat." buttons {"Cancel", "Stop"} ¬
        default button 2 with title "Stop Apache Tomcat"
    do shell script "/usr/local/bin/catalina stop"
end if
  • Збережіть Автоматизатор Робочий процес програми .

Це також можна використовувати в AppleScript Застосування , створені в Росії Редактор сценаріїв , само собою без необхідності Автоматизатор . У будь-якому випадку, коли запуститься, ви будете представлені одним або іншим діалогові вікна .

Start Apache Tomcat Stop Apache Tomcat

Це дає вам можливість побачити, чи є це чи ні працює і скасувати замість цього.


Примітка: За винятком використання a try заяву і a on error number 1 заяву іншого немає обробка помилок представлені в наприклад AppleScript код . За додаткову плату обробка помилок як це може бути доречним / необхідним / бажаним, на користувача покладається додати відповідні додаткові обробка помилок для будь-якого приклад коду представлені.

Також, приклад коду представлені тут були перевірені під чистою установкою macOS 10.12.6 за допомогою інструментів командного рядка (macOS Sierra, версія 10.12) для Xcode-9.1, Homebrew, JDK 9.0.1 і apache-tomcat-8.5.23.tar.gz. Я не бачу причин, чому це не буде працювати в MacOS 10.13, а також.


Дуже дякую!!! Коди, наведені вище, працюють в 10.13! Я помітив, що діалогове вікно фактично не приймає значення кнопок. (Скрипт запуску / зупинки нижче лінії діалогового вікна буде працювати, якщо я натиснув start * / * зупинка або скасувати ) Замість цього я використав системне сповіщення: display notification "Tomcat has started/stopped." with title "Tomcat".
jackxujh

І я любив, що AppleScript все ще працює в 10.13, в той час як легкий і інтуїтивно зрозумілий, він також здатний відправляти повідомлення або виривати діалогові вікна!
jackxujh

@jackxujh, Щоб вирішити те, що ви сказали у вашому першому коментарі ... Ви розумієте, що є два окремих підходи тут і обидва не в тому ж Automator додаток? 1. Додаток Automator з діями сценарію Run Shell і єдиним рядком коду, який перевіряє стан і перемикається відповідно. 2. Automator додаток з запуску AppleScript дій, які використовують приклад коду AppleScript. Кожен підхід використовує один з методів, але не обидва в одному й тому ж додатку. Продовжується в наступному коментарі ...
user3439894

@jackxujh, Якщо AppleScript в MacOS 10.13 функціонує належним чином, то мені важко повірити, мій приклад код AppleScript не працює, як зазначено. Sans trapping error "User canceled." number -128 коли це відбувається, в прикладі коду AppleScript, який повинен оброблятися, немає іншого коду. Як закодований, невикористаний error "User canceled." number -128 слід зупинити щось інше, що відбувається в цьому прикладі коду AppleScript. Я перевірив всі можливі комбінації, одночасно перевіряючи в Терміналі, і це працює для мене, як зазначено. Пізніше я буду будувати систему macOS 10.13.1 і перевіряти її.
user3439894

Так, я розумію, що протягом кожного запуску або виконання програми Automator він може перемикати лише один раз статус Tomcat. Але я виявив, що під час кожного запускаю, чи то я натискаю скасувати або старт / стоп , він все одно переключатиме Tomcat. Це працює, як і очікувалося, чи не так?
jackxujh

3

Коли ви запускаєте команду оболонки або сценарій в Automator, передається ваша PATH за замовчуванням, а не ваша у профілі bash. Ось чому bash не може знайти catalina команду.

Ви завжди повинні вказувати повний шлях до команди у скриптах оболонки. Якщо він був встановлений через HomeBrew, це, ймовірно /usr/local/bin/catalina але ви можете підтвердити це, запустивши which catalina в термінальній сесії.


Я перевірив розташування за допомогою which, та це було у місці ви згадали.
jackxujh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.