Имя: Пароль:
IT
 
Помогите с вопросом по Linux
0 Rizhij_Nikitos
 
08.12.11
13:04
Пусть у меня есть скрипт который строит отчет, нужно чтобы он строил этот отчет и сохранял в файл usr/prog/otchet/yyyy_mm_dd-ddn.log
При этом название должно само генериться из текущей даты и дня недели
yyyy год
mm месяц
dd день
ddn день недели.

Подскажите чем и как это можно сделать или про что хотябы почитать.
1 Rizhij_Nikitos
 
08.12.11
13:29
Уважаемые, выручайте!
2 pumbaEO
 
08.12.11
13:38
Скрипт на чем?
3 ДенисЧ
 
08.12.11
13:39
(2) Ту что, тупой? На линуксе!
4 V_V_V
 
08.12.11
13:46
Как-то так

DateLog=$(date +%Y.%m.%d-%T)
Чего-то там >> usr/prog/otchet/$DateLog.txt

Это в скрипте. Пробуй. Я не силен в скриптах...
5 pumbaEO
 
08.12.11
13:48
Ой, точно.
x = Формат(Дата, "ДФ=yyyy_MM_dd")+".log"; Тебя спасет.
6 V_V_V
 
08.12.11
13:53
(3) -А приемник на транзисторах или на лампах?
-Для тупых, он на бронетранспортере...

Ты не поверишь, в Линуксе скрипты разные бывают...
7 Rizhij_Nikitos
 
08.12.11
13:58
DateLog=$(date +%Y/%m.%d-%T)
prog>>usr/prog/otchet/$DateLog.txt

Prog - выполняемая прога так?
8 pumbaEO
 
08.12.11
14:00
да, только твоя прога должна писать в stdout
9 Rizhij_Nikitos
 
08.12.11
14:02
Эм... Всмысле результат выполнения записываться в файл? ">>" не это делают?
10 ДенисЧ
 
08.12.11
14:02
(6) Я не поверю? Почему? Я вообще очень доверчивый...
11 pumbaEO
 
08.12.11
14:04
mysqldump -uLOGIN -PPORT -hHOST -pPASS DBNAME  > `date "+%Y-%m-%d"`.log
Вот тебе пример.
Твоя программа условно говоря должна писать сообщения в консоль, не в файл: >> этим ты перенаправляешь сообщения из консоли в файл.
12 Rizhij_Nikitos
 
08.12.11
14:09
(2) Скрипт должен быть на bash или sh
(11) mysqldump -uLOGIN -PPORT -hHOST -pPASS DBNAME  > `date "+%Y-%m-%d"`.log  можешь расшифровать?
mysqldump -uLOGIN -PPORT -hHOST -pPASS DBNAME - команда которая пишется в файл с датой?
13 pumbaEO
 
08.12.11
14:18
сделай
ls / > `date "+%Y-%m-%d"`.log
ls / >> `date "+%Y-%m-%d"`.log

и это в linux СП это man, или в гугл.
`date "+%Y-%m-%d"`.log = формирует 2011-12-08.log
14 Rizhij_Nikitos
 
08.12.11
14:20
(13) Спасибо сейчас попробую
15 Rizhij_Nikitos
 
08.12.11
14:46
Вот еще вопрос такой как можно написать скрипт который будет останавливать и запускать на продолжение нужный процесс?
Я нашел как остановить по PID и запустить по JID процесс, но как мне конкретный процесс скриптом останавливать/продолжать?
То есть получить список процессов с PID, найти в нем нужный и применить к нему stop а потом полуить список JID и к нужному процессу применить функцию bg?
16 pumbaEO
 
08.12.11
14:50
17 Rizhij_Nikitos
 
08.12.11
14:54
какой ты оригинал. Я уже нашел функции которыми стопать и ранать стопнутые процессы мне надо сделать это одним скриптом для нужного процесса. я не знаю как объединить все в одно и получение PID и стоп
18 Asmody
 
08.12.11
14:59
pmysqld=`ps -C mysqld -opid=`
echo $pmysqld
19 Rizhij_Nikitos
 
08.12.11
15:02
(18) расшифруй если не трудно
20 Asmody
 
08.12.11
15:09
1 строка — получение PID процесса mysqld и сохранение его в переменной pmysqld
2 строка — вывод значения переменной

чтобы аккуратно прибить процесс, надо послать ему сигнал завершения:
kill -15 $pmysqld

ну или проще:

pkill -TERM mysqld
21 Rizhij_Nikitos
 
08.12.11
15:19
А мне его стопнуть надо - stop - 15 $pmysqld
15 это что?
22 Asmody
 
08.12.11
15:21
(21) 15 — это сигнал TERM. Говорит процессу, что надо аккуратно завершиться.
23 Rizhij_Nikitos
 
08.12.11
15:23
Тоесть если я только стопаю мне достаточно сделать stop - $pmysqld так?
24 Asmody
 
08.12.11
15:32
(23) если ты хочешь работать с процессами, как с job'ами, то там немного другой синтаксис. job'ы существуют только в рамках данной сессии bash.

Можно запускать jobы в рамках init через initctl, тогда ими можно управлять, как ты говоришь
25 Rizhij_Nikitos
 
08.12.11
15:34
(24) Ага) я почти все понял :)
Я Вас в аське добавил можно туда задать пару вопросов?
26 Asmody
 
08.12.11
15:38
кстати, можно стопить и обычные процессы:
kill -SIGSTOP $PID
стартануть обратно:
kill -SIGCONT $PID
27 Rizhij_Nikitos
 
08.12.11
15:43
В общем вот так я запускаю прогу которая формирует отчет и пишет его в файл сегодняшней датой:

prog>>'date"+%Y-%m-%d-%T"'.log

Дальше я стопаю процесс:

processId='ps -C prog -opid='

Как мне теперь запустить обратно его же? Надо вроде получить JID сначала?
28 ansh15
 
08.12.11
16:06
(27) Кавычки только такие нужны ``, а не ''
в processId номер процесса есть, потом нужно как в (26)
29 Rizhij_Nikitos
 
08.12.11
16:10
Там килл мне стоп надо.
30 Rizhij_Nikitos
 
08.12.11
16:34
Все вопрос решен. Всем огромное спасибо - сдал зачет по спецкусу языков прогарммирования :)))
31 smaharbA
 
08.12.11
22:58
в современных системах есть понятие сервис
32 smaharbA
 
08.12.11
22:59
для логов в системе есть логротатор в нем все реализовано
33 Asmody
 
08.12.11
23:00
(32) так-так-так. и чем оно отличается от понятия "демон" в несовременных системах?
34 smaharbA
 
08.12.11
23:09
(33) с какой целью интересуетесь ?

а понятие демон изживется, уже ушли от систем5
35 Asmody
 
08.12.11
23:11
(34) "сервис" понятие слыышком широкое. а "демон" применительно к *nix (как и "служба" применительно к windows) — и сразу понятно о чём речь
36 smaharbA
 
08.12.11
23:12
(35) ответ в (31) не об определениях
37 smaharbA
 
08.12.11
23:12
+ а по сути вопроса
38 Asmody
 
08.12.11
23:17
(36) так ТС и не сервис нужен был. реализовывать это через апстарт или системд можно, конечно, но овчинка выделки не стоит
39 IVIuXa
 
09.12.11
13:14
(0)
пипец ветка ни  о чем ....
хватит 1 поста

> /usr/prog/otchet/`date +%F`.log
Независимо от того, куда вы едете — это в гору и против ветра!