Executar o comando na inicialização / login (Mac OS X)

48

Eu queria saber qual arquivo devo colocar este comando bash para que ele seja executado na inicialização.

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

Eu tenho vasculhado a rede e acho que está entre ~/.bashrc , ~/profile , /etc/bashrc , /etc/profile ou ~/.bash_profile . Embora eu tenha tentado estes e eles parecem rodar em inicialização do terminal não inicialização do Mac . Estou perdendo um arquivo?

    
por Wolfy87 06.01.2011 / 12:24

8 respostas

29

Oficialmente, nada disso. A maneira sugerida pela Apple é usar launchd . Guis para configurar isso inclui lingon e Iniciar o controle

Quanto aos arquivos que você menciona, os que estão no diretório inicial ~ / .bashrc, ~ / profile, ~ / .bash_profile são iniciados somente quando você faz o login via terminal. Os que estão em / etc são executados pelo shell, começando por todos os usuários antes dos que estão no diretório home, mas somente quando um login de usuário é feito. manual do bash

O script de inicialização do Unix envolveu o / etc / rc * mas para o OSX é só usar o material do launchd

    
por 06.01.2011 / 12:37
53

Para executar um comando na inicialização do OS X, você precisa usar launchd .

Se você não quiser usar o Lingon , precisará criar uma launchd Property List. Este é um arquivo XML, portanto, você pode fazê-lo com seu editor de texto favorito ou, como alternativa, pode usar o Editor de lista de propriedades instalado com o Mac OS X Dev Tools. 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>

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

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

Isso fará com que o launchd carregue o item que fará com que ele inicie o MongoDB na inicialização. Como bônus, launchd irá monitorá-lo e, se sair por qualquer motivo, será reiniciado. Para se livrar do item, simplesmente substitua load no comando acima com unload.

    
por 06.01.2011 / 13:50
43

Outra solução simples do Stack Overflow : Você pode:

  • Iniciar o Automator.app;
  • Selecione "Aplicativo";
  • Clique em "Mostrar biblioteca" na barra de ferramentas (se estiver oculto);
  • Adicione "Executar script shell" (das ações / utilitários);
  • Copie e cole seu script na janela;
  • Teste;
  • Salve-o em algum lugar: um arquivo chamado your_name.app será criado);
  • Dependendo da sua versão do MacOSX:
    • Versões Antigas : Vá para Preferências do Sistema → Contas → Itens de Login, ou
    • Nova versão: Vá para Preferências do Sistema → Usuários e Grupos → Itens de login (canto superior direito);
  • Adicione este aplicativo recém-criado;

Faça logoff, faça o login novamente e você deve terminar. ;)

    
por 23.08.2012 / 20:09
25

Para iniciar comandos ao efetuar login, você pode fazer isso:

  • Crie um arquivo de texto contendo seus comandos (script bash):

    #!/bin/bash
    
    # Start the MongoDB server
    /Applications/MongoDB/bin/mongod --dbpath /usr/local/mongo/data --fork --logpath /usr/local/mongo/log
    
  • Salve este arquivo em ~/Library/Startup.cmd

  • Você pode testá-lo clicando duas vezes no arquivo no Finder
  • Torne-o executável: chmod +x ~/Library/Startup.cmd
  • Adicione este arquivo às Preferências do Sistema > Contas > Itens de login
por 03.11.2015 / 18:53
3

Você terá que ver como launchd e launchctl funcionam no MacOS. Você poderia começar lendo as man pages para ambos os comandos. Você poderia, então, olhar dentro de /Library/LaunchAgents/ e /Library/LaunchDaemons/ para exemplos de como configurar aplicativos para carregar em momentos diferentes por meio da interface launchctl .

Veja um exemplo que encontrei no Stack Overflow que pode ajudá-lo.

    
por 06.01.2011 / 12:32
3

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

@reboot /path/to/script

(créditos: link )

    
por 24.03.2016 / 20:58
0

Eu estava interessado em uma resposta unix muito simples para esse problema e encontrei em outro site . Aqui está um resumo da solução.

O padrão para shells de login é sempre procurar os arquivos de configuração bash com "profile" no nome, nesta ordem: / etc / profile, ~ / .bash_profile, depois ~ / .bash_login e last ~ ~ .profile . Quando os shells de login saem, eles lêem ~ / .bash_logout.

No meu caso, acabei de criar o ~ / .bash_profile e depois abri as preferências para o aplicativo Mac Terminal e alterei a opção "Shell abre com" do padrão para / bin / bash. É isso aí. Limpo e simples.

    
por 22.05.2018 / 18:37
-3

terminal aberto, digite

nano ~/.bash_profile

adicione este texto ao arquivo:

/Applications/MongoDB/bin/mongod --dbpath /usr/local/mongo/data --fork logpath /usr/local/mongo/log
    
por 11.03.2017 / 08:25

Tags