7

на моей рабочей станции мне часто приходится запускать одни и те же команды каждое утро.

zeus start , zeus server (загрузка рельсов через Zeus), redis-server , и как 3 других.

Я знаю, что многие люди сказали бы, что они работают постоянно, но я много работаю над своими собственными вещами, и мне кажется, что все они работают, пока я работаю над отдельными проектами rails.

Есть ли какой-то расширенный псевдоним, который я могу сделать, который запускает все это из одной команды, в идеале путем программного разделения окна (например, ⌘-D).

Я использую iTerm2 с oh-my-zsh.

Я бы не возражал, если бы все они находились в одном и том же окне (как-то работающем как фоновые процессы), однако мне иногда нужно смотреть на вывод и работать с выводом каждой команды, так что я не уверен, как это будет работать ,

Спасибо!

2 ответа2

5

Вы можете легко вызвать это из iTerm2 напрямую для симуляции нажатия D:

osascript -e 'tell application "System Events" to key code 2 using command down'

Чтобы это работало, вы хотите запускать программы в фоновом режиме, так как в противном случае вы не сможете запустить osascript:

some-command &
osascript -e '…'

Оттуда вы попадете в новое окно iTerm2, поэтому вам нужно использовать опцию write text в AppleScript для запуска других команд оболочки. См. Здесь для получения дополнительной информации: Как настроить AppleScript, чтобы открыть новую вкладку iTerm2 и изменить каталог?

0

ответ здесь немного устарел .. вот пример сценария, который делает нечто похожее:

tell application "iTerm"
    tell current window
        -- create a tab for background db stuff
        create tab with default profile
        tell current session
            write text "mongod &"
            write text "redis-server &"
        end tell
        close current tab

        -- create tab to run aioc server
        create tab with default profile
        tell current session
            write text "title server"
            write text "aactivate"
            write text "arunserver"
            -- split tab vertically to run scheduler
            split vertically with default profile
        end tell

        -- run scheduler
        tell last session of last tab
            write text "title scheduler"
            write text "aactivate"
            write text "ascheduler"
            -- split tab vertically to run main controller
            split vertically with default profile
        end tell

        -- run main_controller
        tell last session of last tab
            write text "title main_controller"
            write text "aactivate"
            write text "amain_controller"
            -- split tab vertically to run aggregator
            split vertically with default profile
        end tell

        tell last session of last tab
            write text "title aggregator"
            write text "aactivate"
            write text "aggregator"
        end tell




    end tell
end tell

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .