|
Помогите с вопросом по 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 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |