LinuxForum.Fans
Тема

Не удается запустить крон

Автор: Faydaen 19 сообщений 5506 просмотров
#379997

Я никогда раньше не пользовался кроном (и вообще я только осваиваю линкус)
У меня есть файл testcron.sh который пишет в файл test.txt некую информацию

text
[a_ectb@AppServ f]$ cat testcron.sh
#! /bin/bash
now=$(date +"%T")
echo "$now проверка" >> test.txt

если его запустить, то он сработает (тут видно что сначала test.txt пустой а потом содержит строку)

text

[a_ectb@AppServ f]$ cat test.txt
[a_ectb@AppServ f]$ ./testcron.sh
[a_ectb@AppServ f]$ cat test.txt
19:19:05 проверка
[a_ectb@AppServ f]$

скрипт лежит в папке /home/a_ectb/f

теперь пытаюсь запустить его через крон (чтобы он работал каждую минут)

добавил через команду crontab -e путь к своему скрипту
и теперь файл для крона для моего пользоваться стал выглядеть вот так

text
[a_ectb@AppServ f]$ cat /var/spool/cron/a_ectb
0-59 * * * * ~/f/testcron.sh

но вот я подождал несколько минут и по прежнему файл test.txt содержит только одну строчку
(ту которая добавилась при тестовом запуске скрипта )

text
[a_ectb@AppServ f]$ cat ~/f/test.txt
19:19:05 проверка
[a_ectb@AppServ f]$

Вопрос, что я делаю не так?

#379998

1. пробел лишний в sha-bang, нужно #!/bin/bash
2. в crontab не нужно 0-59, просто * * * * *, это значит "каждую минуту.
3. путь указывайте полностью, а не через ~. Т.е. /home/user/f/testcron.sh (используйте текстовый редактор вроде vim, который умеет имена файлов вставлять в текст, что-бы не ошибиться)

#380000

Я поменял кронтаб

text
[a_ectb@AppServ f]$ crontab -l
* * * * * /home/a_ectb/f/testcron.sh

и testcron.sh

text
[a_ectb@AppServ f]$ cat testcron.sh
#/bin/bash
now=$(date +"%T")
echo "$now проверка" >> test.txt

Подождал пару минут но все равно ничего не произошло

text
[a_ectb@AppServ f]$ cat test.txt
19:19:05 проверка
#380002
drBatty написал:
используйте текстовый редактор вроде vim, который умеет имена файлов вставлять в текст, что-бы не ошибиться

я параллельно пытаюсь освоить vi пока что использую шпаргалку (но надеюсь что скоро она мне не понабиться) подскажите пожалуйста комбинацию клавишей чтобы в vi вставлять путь к файлу

#380003

"Faydaen" написал:
подскажите пожалуйста комбинацию клавишей чтобы в vi вставлять путь к файлу
в vi нету
в vim есть CTRL+X F
#380005

окей, попробую vim, а что с кроном то делать, ну хотя бы в какую сторону копать?

#380006
"Faydaen" написал:
#/bin/bash

теперь восклицательный знак пропустил...

и chmod +x testcron.sh не забудь...

#380008

восклицательный знак добавил

text
#!/bin/bash
now=$(date +"%T")
echo "$now проверка" >> test.txt

chmod +x тоже не забыл

text
[a_ectb@AppServ f]$ ls -l testcron.sh
-rwxrwxr-x 1 a_ectb a_ectb 71 May 14 21:20 testcron.sh
#380009

все равно не работает

#380010

может быть у меня крон не запущен?

text
top - 21:30:13 up 219 days,  9:58,  2 users,  load average: 0.13, 0.05, 0.01
Tasks:  93 total,   2 running,  91 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   2058764k total,  1927092k used,   131672k free,   228596k buffers
Swap:  1048568k total,    85152k used,   963416k free,  1023240k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 15 0 10372 580 548 S 0.0 0.0 0:11.33 init 2 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0 3 root 34 19 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/0 4 root 10 -5 0 0 0 S 0.0 0.0 0:01.65 events/0 5 root 10 -5 0 0 0 S 0.0 0.0 0:03.11 khelper 22 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kthread 26 root 10 -5 0 0 0 S 0.0 0.0 0:00.61 kblockd/0 27 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid 185 root 18 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/0 188 root 18 -5 0 0 0 S 0.0 0.0 0:00.00 khubd 190 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kseriod 260 root 15 0 0 0 0 S 0.0 0.0 0:00.01 khungtaskd 263 root 10 -5 0 0 0 S 0.0 0.0 0:23.29 kswapd0 264 root 18 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0 469 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kpsmoused 500 root 10 -5 0 0 0 S 0.0 0.0 0:00.13 mpt_poll_0 501 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 mpt/0 502 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_0 505 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 ata/0 506 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 ata_aux 511 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kstriped

Я нигде его в процессах не вижу

#380011
"Faydaen" написал:
может быть у меня крон не запущен?

ps aux | grep cron

#380013
text
[a_ectb@AppServ f]$ ps aux | grep cron
root      3184  0.0  0.0  74836  1088 ?        Ss    2013   0:11 crond
a_ectb   24596  0.0  0.0  61200   744 pts/1    R+   21:34   0:00 grep cron
#380014

Запущен у вас cron, запущен.

text
$ chmod u+rwx,go+rx ~/testcron.sh

Это было сделано?

#380015
text
[a_ectb@AppServ f]$ chmod u+rwx,go+rx ~/testcron.sh
chmod: cannot access `/home/a_ectb/testcron.sh': No such file or directory
[a_ectb@AppServ f]$ chmod u+rwx,go+rx ~/f/testcron.sh
[a_ectb@AppServ f]$ date +%T
21:41:09
[a_ectb@AppServ f]$ date +%T
21:41:11
[a_ectb@AppServ f]$ date +%T
21:41:12
[a_ectb@AppServ f]$ date +%T
21:42:02
[a_ectb@AppServ f]$ cat test.txt
19:19:05 проверка
[a_ectb@AppServ f]$
#380016

по прежнему одна строчка, которую я в самом начале была записанна когда я тестировал скрипт

#380017

может быть я как-то коряво в кронтаб процесс ввел?

text
[a_ectb@AppServ f]$ crontab -l
* * * * * /home/a_ectb/f/testcron.sh
#380019

Faydaen, ну так не выполняйте бездумно данную мной команду. Тем более, мне откуда знать, где этот ваш testcron.sh лежит, внесите соответствующие коррективы, попробуйте еще раз. Ок, сделано, но после успешного выполнения команды вы второй раз ваш скрипт не запускали, вот и ничего нет нового в текстовом файле, до которого, кстати, тоже надо указать абсолютный путь в скрипте. Что говорит crontab -l?
И почитайте вот это.

#380700
"Faydaen" написал:
echo "$now проверка" >> test.txt

тут забыли _полный_ путь, например /tmp/test.txt
а то оно же в корень писать будет, а туда нельзя.

"Faydaen" написал:
* * * * * /home/a_ectb/f/testcron.sh
правильно, если работает(от ююзера, НЕ от рута!)
[console]cd /
/home/a_ectb/f/testcron.sh[/console]


а вообще смените строку на
text
* * * * * /home/a_ectb/f/testcron.sh >>/tmp/cron.log 2>&1

подождите 2 минуты, и читайте /tmp/cron.log

#381755

"drBatty" написал:
тут забыли _полный_ путь, например /tmp/test.txt
Спасибо, именно в этом и была причина.. только не в корень, а в домашнюю папку...
Войдите или зарегистрируйтесь, чтобы ответить.