Como lanço um arquivo de comando (por exemplo, *.sh) em um utilitário de interação de shell separado (por exemplo, iTerm2) no login do meu usuário?

Como lanço um arquivo de comando (por exemplo, *.sh) em um utilitário de interação de shell separado (por exemplo, iTerm2) no login do meu usuário?

iTerm2 é um utilitário incrível e torna minha interação com a linha de comando muito mais fácil. Há muitos comandos de atualização que executo diariamente e pensei que seria incrível se eles pudessem ser iniciados no login do meu usuário. Eu sei que para executar um script em um evento de login de usuário, um diretório deve ser criado em /System/Library/StartupItems com o script que deseja ser executado com o mesmo nome do diretório (por exemplo, update_sys/update_sys. eh). Os dois principais problemas que tenho depois disso são que 1) quando os comandos são executados, não há janela de terminal para mostrar qualquer saída e 2) não sei como designar o iTerm2 (ou qualquer outro utilitário) como o utilitário de terminal principal para executar scripts. Eu tenho o iTerm2 definido como utilitário de terminal padrão, mas alguns scripts executados ainda serão iniciados no Terminal.

Qualquer ajuda é muito apreciada!

(Se minhas concepções sobre como adicionar comandos a um evento de login de usuário estiverem incorretas ou se houver uma maneira mais fácil de fazer isso, por favor me avise!)

Responder1

Nunca usei o iTerm (ou Mac OS); mas como o iTerm é um emulador de terminal, provavelmente não é adequado para agendar tarefas. Em sistemas *nixiod, os scripts de login geralmente são executados a partir de arquivos como ~/.profile, /etc/profile, e em arquivos específicos do shell como ~/.bashrce /etc/bash.bashrc. Você pode ler sobre eles na página de manual do seu shell (por exemploman 1 bash).

Responder2

O iTerm permite que você execute esses scripts de forma interativa e, à medida que as sessões interativas enviam a saída para a tela, você vê os resultados.

Muitos programas também podem ser executados como processos em segundo plano.

A melhor maneira de ver a saída geralmente é anexá-la manualmente a um log. Se necessário, use instruções echo para mostrar onde e qual comando está sendo executado. Para o fluxo de saída que vem do comando interno.

Acho que o que você provavelmente deseja está detalhado aqui:https://unix.stackexchange.com/questions/74520/can-i-redirect-output-to-a-log-file-and-background-a-process-at-the-same-time

ou seja some_cmd > some_file 2>&1 &, que redirecionará a saída padrão para o arquivo de log.

informação relacionada