Como executar um script de shell de qualquer lugar no meu servidor?

0

Então, basicamente, eu tenho um aplicativo JS que está dentro de um diretório em /var/lib/app/ . Para iniciar este aplicativo do nó, eu executo um script de início startapp.sh dentro do diretório. Agora eu preciso que ele comece no momento da inicialização, então criei um trabalho inicial no meu servidor Ubuntu dentro de /etc/init e dei o caminho absoluto do startapp.sh , para ser acionado no momento da inicialização.

Mas sempre que eu tento executar qualquer script que acione startup.sh , ele falha ao iniciar, pois depende de um arquivo ativador para iniciar, que está dentro do diretório /var/lib/app/ . Eu exportei o caminho em .bashrc , mas ainda assim não consigo executar o trabalho de qualquer lugar no servidor Ubuntu, exceto o diretório /var/lib/app/ .

Como posso executar um script de shell de qualquer lugar no meu servidor?

    
por the_Strider 21.07.2016 / 21:21

2 respostas

1

Você precisa adicionar o diretório /var/lib/app/ ao seu PATH, não /var/lib/app/startapp.sh .

Para fazer isso permanentemente , primeiro observe sua variável de ambiente PATH inserindo este comando:

echo $PATH

A saída que você terá, será algo como:

/usr/local/bin:/bin:/usr/bin/:usr/local/sbin:/usr/sbin/ ...

Você não deve alterar o pedido, portanto, ao exportar, use PATH="$PATH:/..." para anexar seu novo caminho ao caminho original anterior que acabou de ser exibido.

Abra seu .bashrc (assumindo que ele é chamado de ~/.profile no OSX) via vi ou qualquer editor que você goste e adicione esta linha:

export PATH="$PATH:/your/absolute/path"

Você deve adicionar seu caminho absoluto , ou seja, o diretório no qual seus aplicativos são colocados, assim, quando você digita os nomes de arquivos dos aplicativos, ele é executado. Por exemplo, quando você digita pwd , ele é executado a partir do diretório /bin/ - o que você pode ver na sua variável de ambiente PATH -, portanto, o script é /bin/pwd . Para vê-lo, digite which pwd no seu bash. Eu acho que seu caminho absoluto é /var/lib/app/ se não houver um diretório sob ele e seus aplicativos estiverem lá.

Isso funcionará se você fizer isso corretamente, mas se isso não ocorrer, o mais fácil é mover seus aplicativos escritos de /var/lib/app/ para /bin/ .

$ cd /var/lib/app/
$ mv * /bin
    
por 22.07.2016 / 00:09
0

Para ler dados do arquivo em que um executável está armazenado:

#!/bin/bash

old_dir="$(pwd)"
cd "$(dirname "$0")"
this_dir="$(pwd)"
cd "${old_dir}"
unset old_dir

# read from where executable is stored
echo "${this_dir}/data"
# read for present working directory
echo "$(pwd)"
    
por 22.07.2016 / 00:52