если $n
содержит номер удаляемой строки
для удаления одной строки используйте
printf "\$-%d+1,\$-%d+1d\nwq\n" $n $n| ed -s file
удалить n последних строк
printf "\$-%d,\$d\nwq\n" $n | ed -s file
где
\$%d,\$d
приказано удалить n последних строк (printf вставит n)wq
написать и выйти -s
в ed -s
будет хранить молчание.
обратите внимание, что не предусмотрена проверка наличия достаточного количества строк для удаления.
к сожалению, диапазон от конца не может быть указан в sed
...
Ваше задание cron должно сначала cd
перейти в нужный каталог.
например, иметь что-то подобное в качестве «командной» части записи crontab
.
( cd /path/to/php/script/directory ; php myscript.php )