При автоматизации смены обоев имею некоторые регулярно выполняющиеся скрипты. Эти скрипты свою функцию выполняют, но, по завершении своей работы, не исчезают из диспетчера задач, и killall на них не действует. То есть, в процессе работы, запустив эти скрипты некоторое количество раз, в диспетчере имею неубиваемую пачку экземпляров этих скриптов. Что я делаю не так?
Выкладываю lwallpaper.sh:
#!/bin/bash
if [ $((`xdotool getmouselocation | grep 'x:' | awk -F' ' '{print $1}' | awk -F':' '{print $2}'`)) -lt 1280 ]
then
wname=`cat /home/$USER/tmp/wallname | head -n 1 | awk -F' ' '{print $2}'`
else
wname=`cat /home/$USER/tmp/wallname | head -n 1 | awk -F' ' '{print $1}'`
fi
if [[ $1 != "-r" ]]
then
if [[ $wname != "/home/$USER/Pictures/wallpapers/favorities"* ]]
then
mv $wname /home/$USER/Pictures/wallpapers/favorities
echo $wname >> /home/$USER/Pictures/wallpapers/remove.txt
fi
else
rm $wname
if [[ $wname != "/home/$USER/Pictures/wallpapers/favorities"* ]]
then
echo $wname >> /home/$USER/Pictures/wallpapers/remove.txt
fi
fi
/home/$USER/myscripts/wallpaper.sh &
И вызываемый из-под него wallpaper.sh (он ежеминутно выполняется по cron, но в этом случае в процессах не виснет, виснут только экземпляры, запускаемые из lwallpaper.sh):
#!/bin/bash
wallname1=$(find /home/piyavking/Pictures/wallpapers -type f -name '*.jpg' -o -name '*.jpeg' -o -name '*.png' | shuf -n 1)
wallname2=$(find /home/piyavking/Pictures/wallpapers -type f -name '*.jpg' -o -name '*.jpeg' -o -name '*.png' | shuf -n 1)
feh --bg-fill $wallname1 $wallname2 &
echo $wallname1' '$wallname2 > ~/tmp/wallname &
Также стоит отметить, что одновременно с возникновением проблемы в каталоге с этими скриптами стали болтаться файлы '.wallpaper.sh.swp' и '.lwallpaper.sh.swp'. Они, как понимаю, сигнализирут о занятости моих скриптов какими-то процессами. Но вот какими, и что с этим делать, я уже не понимаю.
Спасибо за внимание.