Configurei o NUT em um sistema Ubuntu e no meu upssched-cmd
eu quero executar alguns scripts para desligar o equipamento. Eu configurei upsmon.conf
para executar upssched-cmd
como um usuário, atualmente, root
mas eu quero ser capaz de mudar isso se necessário.
O que descobri é que, quando upssched-cmd
executado, algumas das variáveis de ambiente normais relacionadas ao usuário não são definidas. Não consigo usar $HOME
para recuperar ou salvar arquivos ou usar $LOGNAME
para registrar o que aconteceu se algo deu errado.
Existe algum motivo para upssched-cmd
não defini-los? É porque não é um processo interativo em execução em um terminal e eles são usados apenas em sessões de terminal?
Considerando que isso $HOME
não está definido, existe uma maneira diferente de recuperar o diretório inicial do usuário atual em um caso como esse?
Quando upssched-cmd
é chamado, este é o env:
MEMORY_PRESSURE_WRITE=c29tZSAyMDAwMDAgMjAwMDAwMAA=
PIDFILE=/run/nut/upsmon.pid
PWD=/
SYSTEMD_EXEC_PID=1331
NOTIFYTYPE=ONBATT
LANG=C.UTF-8
MEMORY_PRESSURE_WATCH=/sys/fs/cgroup/system.slice/nut-monitor.service/memory.pressure
MODE=netserver
INVOCATION_ID=f025fd10826a4bac950193c70322fba0
USER=root
SHLVL=0
UPSNAME=ophiuchia@localhost
JOURNAL_STREAM=8:16568
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/snap/bin
_=/usr/bin/env
Quais variáveis de ambiente são definidas?
env | sort
será mostrado.O que impede você de escolher um ID de usuário e usar:
no começo do seu roteiro?