Depende de qual versão de cron
você tem e de como ela está configurada, mas geralmente é /bin/sh
. Muitas vezes, isso é um link simbólico para outra coisa, mas é fácil encontrá-lo, já que você pode simplesmente executar ls -l /bin/sh
.
Você pode adicionar uma entrada do cron como:
* * * * * ps -p $$ > /tmp/shelltest
ou (se editar /etc/crontab
em vez de adicionar uma entrada a um crontab por usuário como feito via crontab -e
):
* * * * * username ps -p $$ > /tmp/shelltest
, que informará via saída para /tmp/shelltest
o nome do arquivo do shell. Se o seu cron
estiver configurado corretamente para enviar a saída para você, você poderá pular o >/tmp/shelltest
para obter as informações por e-mail, em vez de elas serem colocadas em um arquivo.
Para ser um pouco mais trixy algo como:
* * * * * ls -l /proc/'ps -p $$ | tail -n 1 | xargs | cut -f 1 -d \ '/exe > /tmp/shelltest
deve informar o arquivo exato usado. Em um sistema Debian típico, isso resultará em algo como:
lrwxrwxrwx 1 dspillett dspillett 0 Mar 14 16:17 /proc/1356/exe -> /bin/dash
mostrando que o cron está usando dash
como o shell padrão nesta instância.
Para anular esse comando:
-
ps -p $$
exibe detalhes do processo atual (bem,% processo pai ps
) que será o shell neste caso.
-
tail -n 1
retira a linha do cabeçalho que ps
inclui
- percorrer
xargs
é um truque para aparar os espaços iniciais da linha
- a invocação de
cut
pega o primeiro campo do like onde o delimitador é espaços (é absolutamente vital incluir o espaço entre o \ e o backtick)
- agrupar isso nos backticks inclui a saída (que deve ser um ID do processo) na linha de comandos externa que se torna ...
-
ls -l /proc/9999/exe
em que "9999" é a ID do processo lida de ps
, que lista o arquivo usado para criar o processo, porque no sistema de arquivos '/ proc' /proc/<pid>/exe
é um link para o executável do processo identificado por < pid & gt .
- (pode haver uma maneira mais concisa de fazer a mesma coisa, que foi digitada da memória, sugestões bem-vindas via comentários!)