Как запустить командный файл (например, *.sh) в отдельной утилите взаимодействия с оболочкой (например, iTerm2) при входе моего пользователя в систему?

Как запустить командный файл (например, *.sh) в отдельной утилите взаимодействия с оболочкой (например, iTerm2) при входе моего пользователя в систему?

iTerm2 — это потрясающая утилита, которая значительно упрощает мое взаимодействие с командной строкой. Я запускаю множество команд обновления каждый день и подумал, что было бы здорово, если бы они могли запускаться при входе пользователя в систему. Я знаю, что для запуска скрипта при входе пользователя в систему необходимо создать каталог в /System/Library/StartupItems со скриптом, который должен быть запущен, с тем же именем, что и каталог (например, update_sys/update_sys.sh). Две основные проблемы, с которыми я столкнулся после этого, заключаются в том, что 1) при выполнении команд нет окна терминала для отображения какого-либо вывода, и 2) я не знаю, как назначить iTerm2 (или любую другую утилиту) в качестве основной утилиты терминала для запуска скриптов. У меня iTerm2 установлена ​​как утилита терминала по умолчанию, однако некоторые выполняемые скрипты все равно будут запускаться в терминале.

Любая помощь будет высоко оценена!

(Если мои представления о том, как добавлять команды в событие входа пользователя, неверны или существует более простой способ сделать это, пожалуйста, дайте мне знать!)

решение1

Я никогда не использовал iTerm (или Mac OS); но поскольку iTerm — это эмулятор терминала, он, вероятно, не подходит для планирования задач. В системах *nixiod скрипты входа обычно выполняются из файлов типа ~/.profile, /etc/profile, и в файлах, специфичных для оболочки типа ~/.bashrcи /etc/bash.bashrc. Вы можете прочитать о них на странице руководства вашей оболочки (например,man 1 bash).

решение2

iTerm позволяет вам запускать эти скрипты в интерактивном режиме, и по мере того, как интерактивные сеансы отправляют вывод на экран, вы видите результаты.

Многие программы также могут выполняться как фоновые процессы.

Лучший способ увидеть вывод — это вручную добавить его в журнал. При необходимости используйте операторы echo, чтобы показать, где и какая команда выполняется. Для потока вывода, который исходит от встроенной команды.

Я думаю, то, что вам, вероятно, нужно, подробно описано здесь:https://unix.stackexchange.com/questions/74520/можно-перенаправить-вывод-в-файл-журнала-и-фон-процесса-в-одно-время

т.е. some_cmd > some_file 2>&1 &который перенаправит стандартный вывод в файл журнала.

Связанный контент