Как найти файлы, содержащие строку?

Вы проверили, что файл настроен как исполняемый? Вот пример пометки скрипта как исполняемого:

$ ls -l test.sh
-rw-r--r-- 1 ahill ahill 0 Mar 23 19:30 test.sh
$ chmod +x test.sh
$ ls -l test.sh
-rwxr-xr-x 1 ahill ahill 0 Mar 23 19:30 test.sh

Следующее, что нужно проверить, — это окружение. Задания cron по умолчанию не наследуют среду. «Исправление» обсуждается здесь:
Как запустить команду cron с существующими переменными окружения?

Одной из причин того, что среда имеет большое значение, является то, что cron может даже не найти bash! см.:https://www.digitalocean.com/community/questions/why-is-cron-not-running-my-sh-script

Если вы все еще не можете понять это, я бы провел тест. :Измените задание cron с:

0 5 * * * /home/me/projects/execute-backup-from-container.sh

-:

0 5 * * * /home/me/projects/execute-backup-from-container.sh >> ~/script_errors.log 2>&1 

Что произойдет :при следующем запуске cron задания, созданные сообщения об ошибках будут выгружены в текстовый файл script _errors.log. (измените путь к файлу сценария _errors.log на любой, который кажется подходящим, но убедитесь, что путь существует, хотя файл и не требуется.)

Я также заметил в ОП кое-что, что может быть настоящей проблемой :слово «контейнер». Если скрипт находится внутри контейнера Docker, то, скорее всего, это решение :
.https://www.ekito.fr/people/run-a-cron-job-with-docker/

0
12.03.2020, 11:45
1 ответ

Вам не хватает -rдля соответствия "всем файлам" и, вероятно, следует использовать одинарные -кавычки:

grep -r -l -F '$1-2400000' /media/linux/DATADISK/flashka/

С помощью -lgrep покажет вам только имена файлов, а не совпадения в файле. -Fgreps для фиксированной строки вместо регулярного выражения.

Если ваши имена файлов содержат пробелы или другие специальные символы, вы можете вместо этого использовать find:

find /media/linux/DATADISK/flashka/ -type f -exec grep -l -F '$1-2400000' {} \;
0
28.04.2021, 23:20

Теги

Похожие вопросы