Когда cron выполняет ваш скрипт, текущим рабочим каталогом является домашний каталог пользователя таблицы cron (, по-видимому, /root ), а ваш скрипт с его файлами находится в /backup. Вот почему скрипт не может найти table.txt, а цикл таблицы не имеет итераций.
Вы должны сначала перейти в каталог скрипта, а затем выполнить его, например:
58 16 * * * root cd /backup && /bin/sh -x call_backup.sh > backup.log
Если вы написали программу и хотите увидеть ее карту памяти во время ее работы, вы можете запустить ее в отладчике, таком как gdb
, затем запустить ее и посмотреть карту памяти с помощью команды info proc mappings
, вывод будет примерно таким:
(gdb) info proc mappings
process 6520
Mapped address spaces:
Start Addr End Addr Size Offset objfile
0x10000 0x15000 0x5000 0x0 /bin/true
0x24000 0x25000 0x1000 0x4000 /bin/true
0x25000 0x26000 0x1000 0x5000 /bin/true
0x76e6e000 0x76f98000 0x12a000 0x0 /lib/arm-linux-gnueabihf/libc-2.24.so
... etc...
0x7efdf000 0x7f000000 0x21000 0x0 [stack]
0xffff0000 0xffff1000 0x1000 0x0 [vectors]
Если вместо этого вы хотите увидеть сопоставления уже запущенного процесса, вы можете, предполагая, что у вас есть соответствующие разрешения, выполнить cat /proc/<pid>/maps
. В качестве альтернативы вы можете подключиться к процессу с помощью gdb -p <pid>
и сделать то, что я объяснил выше.