2011-01-06 11:24:35 +0000 2011-01-06 11:24:35 +0000
56
56

Executar comando no arranque / login (Mac OS X)

Estava a pensar em que ficheiro deveria colocar este comando bash para que seja executado no arranque.

# Start the MongoDB server
/Applications/MongoDB/bin/mongod --dbpath /usr/local/mongo/data --fork --logpath /usr/local/mongo/log

Tenho andado a vasculhar a rede e penso que está entre ~/.bashrc, ~/profile, /etc/bashrc, /etc/profile ou ~/.bash_profile. Embora tenha experimentado estes e pareçam funcionar em início de terminal não* início de MAC. Falta-me um ficheiro?

Respostas (8)

60
60
60
2011-01-06 12:50:04 +0000

Para executar um comando no arranque no OS X, é necessário usar launchd.

Se não quiser usar Lingon , precisa de criar uma lista de propriedades launchd. Este é um ficheiro XML, por isso pode fazê-lo com o seu editor de texto preferido ou, em alternativa, pode usar o Editor de Lista de Propriedades que está instalado com as Ferramentas de Desenvolvimento Mac OS X. Crie o seguinte:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>some.meaningful.name</string> <!-- org.mongodb.mongodb perhaps? -->

    <key>OnDemand</key>
    <false/>

    <key>UserName</key>
    <string>anAppropriateUser</string>

    <key>GroupName</key>
    <string>anAppropriateGroup</string>

    <key>ProgramArguments</key>
    <array>
            <string>/Applications/MongoDB/bin/mongod</string>
            <string>--dbpath</string>
            <string>/usr/local/mongo/data</string>
            <string>--fork</string>
            <string>--logpath</string>
            <string>/usr/local/mongo/log</string>
    </array>
</dict>
</plist>

Guarde isto em /Library/LaunchAgents/some.meaningful.name.plist (precisará de uma conta de administrador e/ou sudo), depois abra um terminal e faça:

sudo launchctl load /Library/LaunchAgents/some.meaningful.name.plist

Isto fará com que o lançamento carregue o item que o levará a iniciar o MongoDB no arranque. Como bónus, launchd irá monitorizá-lo e, se sair por qualquer razão, será reiniciado. Para se livrar do item, basta substituir a carga no comando acima por descarga.

51
51
51
2012-08-23 18:09:02 +0000

Outra solução simples de Stack Overflow : Pode:

& - Iniciar Automator.app; & - Seleccionar “Aplicação”; & - Clicar em “Mostrar biblioteca” na barra de ferramentas (se oculta); & - Adicionar “Run shell script” (das Acções/Utilitários); - Copiar e colar o seu script na janela; & - Testar; & - Guardar algures: um ficheiro chamado your_name.app será criado); & - Dependendo da sua versão MacOSX: - Versões antigas: Vá a System Preferences → Accounts → Login items, ou - New version: Vá a System Preferences → Users and Groups → Login items (top right); - Adicione esta aplicação recém-criada;

Log off, log in back in, e deverá estar pronto;)

35
35
35
2011-01-06 11:37:23 +0000

Oficialmente, nenhuma destas. A forma sugerida pela Apple é utilizar lançamentod . Guis para configurar isto incluem lingon e Launch Control

Quanto aos ficheiros que menciona no directório home ~/.bashrc, ~/profile, ~/.bash_profile só são iniciados quando faz o login através de um terminal. Os de /etc são executados pela shell começando por todos os utilizadores antes dos do directório home, mas apenas quando é feito um login de utilizador… bash manual

O script de arranque Unix envolvia /etc/rc* mas para OSX basta usar o material de lançamento

30
30
30
2015-11-03 17:53:47 +0000

Para lançar comandos ao iniciar a sessão, pode fazer isto:

  • Criar um ficheiro de texto contendo os seus comandos (bash script):

  • Guardar este ficheiro em ~/Library/Startup.cmd

  • Pode testá-lo fazendo duplo clique no ficheiro no Finder

  • Torná-lo executável: chmod +x ~/Library/Startup.cmd & - Adicione este ficheiro em Preferências do Sistema \i1> Contas \i1> Itens de Login

3
3
3
2016-03-24 19:58:03 +0000

Se quiser uma abordagem que funcione em Linux & Mac OS X, uma tarefa cron deve ser suficiente (edite as suas tarefas cron executando crontab -e):

@reboot /path/to/script

(créditos): https://unix.stackexchange.com/questions/49207/how-do-i-set-a-script-that-it-will-run-on-start-up-in-freebsd )

3
3
3
2011-01-06 11:32:48 +0000

Terá de ver como launchd e launchctl funcionam no MacOS. Poderá começar por ler as páginas man para ambos os comandos. Poderá então olhar dentro de /Library/LaunchAgents/ e /Library/LaunchDaemons/ para exemplos de como configurar aplicações para carregar em alturas diferentes através da interface launchctl. Aqui está um exemplo encontrei no Stack Overflow que o pode ajudar mais.

0
0
0
2018-05-22 16:37:28 +0000

Estava interessado numa resposta unix muito simples a este problema e encontrei-a noutro site . Aqui está um resumo da solução.

O padrão para as conchas de login é procurar sempre os ficheiros de configuração bash com “perfil” no nome, por esta ordem: /etc/profile, ~/.bash_profile, depois ~/.bash_login e por último ~/.profile. Quando as shells de login saem, lêem ~/.bash_logout.

No meu caso, acabei de criar o ~/.bash_profile e depois abri as preferências para a aplicação Mac Terminal e alterei a opção “Shell opens with” de padrão para /bin/bash. É isso mesmo. Limpo e simples.

-3
-3
-3
2017-03-11 07:25:05 +0000

terminal aberto, digite

nano ~/.bash_profile

depois adicione este texto ao ficheiro:

/Applications/MongoDB/bin/mongod --dbpath /usr/local/mongo/data --fork logpath /usr/local/mongo/log