Я просто попросил себя найти и изменить значение в памяти, используя scanmem, и написал этот скрипт, чтобы увеличивать простое значение каждые 5 секунд.
#!/bin/bash
i=88 #start counting from..
printf "Variable increments every 5s\n"
while [ 1 ]
do
printf "Variable is %d\n" $i
sleep 5s
if [ $i -eq 300 ]; then
printf "Variable is now 300! WELL DONE!!\n"
exit 1
else
i=$(( $i + 1))
if [ $i -gt 299 ]; then
printf "Time is up!\n"
exit 0
fi
fi
done
Отвратительный сценарий (держу пари, что это доставляет мне неприятности!); Я могу найти значение (всегда 4 результата) в 2 сканированиях в scanmem, прикрепленной к PID (из ps ax | grep bash), но переменная отказывается от SET до 300. Я подтвердил, что они верны, используя UPDATE и LIST. Это на самом деле будет SET, но всегда возвращается к следующему приращению.
Итак, почему значение отказывается быть измененным? Сценарий запускается от имени пользователя, Scanmem sudoed