как запустить CLI из root с пользователем hdfs

Вот небольшой сценарий, который решает проблему, когда 10 минут назад - предыдущий день. Я уверен, что это можно было бы сделать более элегантно:

#!/bin/bash

DAY=`date --date='-10 min' +"%a"`
SEC=`date --date='-10 min' +"%s"`

if [[ "$DAY" == "Mon" ]]; then
    DDIF="7"
elif [[ "$DAY" == "Tue" ]]; then
    DDIF="1"
elif [[ "$DAY" == "Wed" ]]; then
    DDIF="2"
elif [[ "$DAY" == "Thu" ]]; then
    DDIF="3"
elif [[ "$DAY" == "Fri" ]]; then
    DDIF="4"
elif [[ "$DAY" == "Sat" ]]; then
    DDIF="5"
elif [[ "$DAY" == "Sun" ]]; then
    DDIF="6"
fi

EPOCH=$(awk "BEGIN {print $SEC-(86400*$DDIF); exit}")
date -d@"$EPOCH"

Это позволяет узнать, на какой день 10 минут назад выпадает. Узнает, сколько дней удалено с понедельника. Затем умножает это количество дней на 86400 (количество секунд в одном дне) и вычитает его из Эпохи, рассчитанной 10 минут назад. Наконец, он преобразует значение эпохи обратно в стандартный формат.

Как я уже сказал, не обязательно простой, однолинейный или элегантный.

0
05.03.2019, 18:13
1 ответ

Команда, которую необходимо выполнить как hdfs, короче. Твое что-то вроде:

su -l hdfs -c "hadoop fs -du -s /home/test/*" | awk '{ sum += $1 } END { print sum }' 

И лучше использовать sudoдля этой цели:

sudo -u hdfs "hadoop fs -du -s /home/test/*" | awk '{ sum += $1 } END { print sum }' 
1
28.01.2020, 02:40

Теги

Похожие вопросы