Help Odświeżenie mount w Rclone dla Plex

Damian

Network Architect
Q's Professional
Jan 22, 2016
405
67
28
QNAP
TVS-x71
Ethernet
802.11ad
Mam zadanie w cron:
Code:
0 1 * * * /bin/bash /share/CACHEDEV1_DATA/.qpkg/RClone/rclone_cron.sh
które uruchamia:
Code:
#!/bin/bash
export PIDF=/var/run/rclone_cron.pid
start_msg="Synchronization with drive start"
end_msg="Synchronization with drive stop"
dir_path=/share/CACHEDEV2_DATA/Rdownload/medialibrary

#exit if running
if [ -f "$PIDF" ]; then
        /sbin/log_tool -t 2 -a "Unable to start synchronization with drive. Process already running"
        exit 1
fi

# Move older local files to the cloud
/sbin/log_tool -t 0 -a "$start_msg"
/sbin/notice_log_tool -t 5 -a "$start_msg"

touch "$PIDF"
/usr/bin/rclone move --config=/share/CACHEDEV1_DATA/.qpkg/RClone/rclone.conf /share/CACHEDEV2_DATA/Rdownload/medialibrary/ gcrypt:/ --log-file /share/CACHEDEV2_DATA/Rdownload/logs/rclone_upload.log -v --delete-empty-src-dirs --fast-list --max-transfer 700G
rm -f "$PIDF"

# Remove empty dirs
find $dir_path -type d -empty -delete

# Recreate stucture - problem with union if not exists:
mkdir -p $dir_path/4K
mkdir -p $dir_path/Kids
mkdir -p $dir_path/Movies
mkdir -p $dir_path/Music
mkdir -p $dir_path/TV\ Shows
mkdir -p $dir_path/Book
mkdir -p $dir_path/Audiobook

# Remove cache:
#rm -rf /share/CACHEDEV1_DATA/.rclone/rclone/vfs/union/*
#rm -rf /share/CACHEDEV1_DATA/.rclone/rclone/vfsMeta/union/*

# Refresh Plex library
sleep 20
/bin/kill -1 "$(ps -w | grep '[r]clone mount' | awk '{print $1}')"

# Sleep
sleep 10

/sbin/log_tool -t 0 -a "$end_msg"
/sbin/notice_log_tool -t 5 -a "$end_msg"

exit 0

Działa to tak, że dane które się ściągnęły lokalnie trafiają do: /share/CACHEDEV2_DATA/Rdownload/medialibrary/. W nocy uruchamiany jest powyższy skrypt przenosi na drive. Jeśli mam dane lokalnie i odświeżę bibliotekę w Plex mogę je odtworzyć. Jeśli w nocy dane trafią do google i znowu próbuje odtworzyć dane to mam błąd odtwarzania.
Żeby można było normalnie odtworzyć trzeba wykonać: kill -1 <pid_z_mount_rclone>. Próbowałem to dodać do skryptu powyżej jako:
Code:
# Refresh Plex library
sleep 20
/bin/kill -1 "$(ps -w | grep '[r]clone mount' | awk '{print $1}')"
nie wiem jednak dlaczego to polecenie nie działa/nie wykonuje się. Jak zaloguje się do terminala i wykonam je ręcznie zadziała i Plex zaczyna działać.
Jakieś pomysły?
 

Silas Mariusz

SysOp
Administrator
Apr 5, 2008
9,144
7
1,803
153
37
www.devspark.pl
QNAP
TS-x77
Ethernet
1 GbE
Hey @Damian

Wszystko jest zle zaczynając od polecenia ps -w.
W systmie ps nie ma takiego argumentu -w.

Bash:
#!/bin/sh

# po co to?
#sleep 20

DEBUG=1
LOG=/share/Public/kill.log

function DEBUG()
{
        [ "$_DEBUG" == "1" ] && $@
}

echo -e "\n\n$(date) $0"

# command -v cmd aby sprawdzic lokalizacje
CMD_PS=/bin/ps
CMD_AWK=/bin/awk
CMD_GREP=/bin/grep
CMD_TEE=/usr/bin/tee
CMD_KILL=kill

echo -e "\n\n$(date) $0" | $CMD_TEE -a $LOG

# ps -w -- zle, ps nie ma takiego argumentu, uzywaj ps ax
PIDS_RCLONE=( $($CMD_PS -A | $CMD_GREP '[r]clone mount]' | $CMD_GREP -v grep | $CMD_AWK '{print $1}' 2>/dev/null) )

if [ $PIDS_RCLONE -gt 0 2>/dev/null ]
then
    for PID in "${PIDS_RCLONE[@]}"
    do
        echo "Sending SIGHUP to $PID" | $CMD_TEE -a $LOG
        kill -1 $PID
    done
else
    echo No PIDS found | $CMD_TEE -a $LOG
fi

tak się bashuje ;)
 
  • Like
Reactions: Damian

Damian

Network Architect
Q's Professional
Jan 22, 2016
405
67
28
QNAP
TVS-x71
Ethernet
802.11ad
Code:
rclone_cron.sh: line 64: syntax error: unexpected "("
Coś nie tak w linii:
Code:
PIDS_RCLONE=( $($CMD_PS -A | $CMD_GREP '[r]clone mount' | $CMD_GREP -v grep | $CMD_AWK '{print $1}' 2>/dev/null) )
 

Attachments

  • 1642013475066.gif
    1642013475066.gif
    42 bytes · Views: 7
  • 1642013475044.gif
    1642013475044.gif
    42 bytes · Views: 8

Damian

Network Architect
Q's Professional
Jan 22, 2016
405
67
28
QNAP
TVS-x71
Ethernet
802.11ad
Po pomocy Silasa u mnie też zaczął działać. Dzięki. Temat do zamknięcia.