detectando a execução do script cli e não a execução do script do cronjob

1

Existe uma maneira de detectar se eu executo um script de shell manualmente no console ou se o cron inicia o script (por exemplo, usando o crontab)?

Editar: Exemplo de uso: manualy eu quero mostrar uma barra de progresso, por exemplo, que o cron não deve mostrar.

    
por f b 24.09.2018 / 10:24

1 resposta

0

Parece que você realmente quer detectar se um terminal (TTY) está ou não disponível para o aplicativo. (Isso permitirá que você exiba uma barra de progresso ao executar em um terminal, mas não se incomode se estiver executando sob crontab .)

#!/bin/bash
#
[[ -t 2 ]] && echo "This is a status update for the terminal" >&2
echo "This is a normal line of results"

A operação test -t verifica se o descritor de arquivo numerado está ou não conectado a um terminal. 0 é stdin , 1 é stdout e 2 é stderr .

Geralmente, as informações de progresso seriam gravadas em stderr com resultados reais gravados em stdout . Dessa forma, o usuário pode descartar a saída de progresso / status se não quiser vê-la, e as atualizações de status e os resultados podem ser separados de maneira útil:

yourprogram arg1 arg2 ... > results.txt
    
por 24.09.2018 / 11:52