31 января 2025, 22:50:27

Новости:

Ловим зимой, весной, летом и осенью



IT-курилка

Автор GhOsT_MZ, 25 мая 2012, 11:48:17

0 Пользователи и 1 гость просматривают эту тему.

GhOsT_MZ

Всем привет!
Уже давно были предложения о создании специальной темы IT-специалистов и специалистов около IT-индустрии, но они не увенчались успехом. В связи с жесточайшим оффтопом в "кампутерной" теме, в котором и я участвовал, решил собрать нас, оффтоперов, приближенных к IT-сфере, в одной теме - этой.
В принципе, назначение темы - не предоставление возможности облить друг друга грязью, а обмен опытом, обсуждение новостей, обмен ссылками на интересные статьи и другие материалы. Хотелось бы, чтобы тема была популярна, что вполне вероятно, ибо людей, интересующихся данной сферой, на этом форуме не мало, и их количество постоянно растет, судя по тому, что пишут в теме "Профессии".
Собственно, начну обмен полезными ссылками ссылкой, полезной для пользователей/администраторов *nix-like систем:
http://cb.vu/unixtoolbox.xhtml

bottica

Даже страшно как-то заходить. :o
Да не был он "жесточайшим", почирикали немного, придерживаясь темы. За ссылку спасибо, добавил в букмарки.

GhOsT_MZ

Куда страшно заходить?)
Ага, "легкий оффтоп" - криков на 2-3 странице с полным игнором топикстартера)) Страшно представить, что такое "жесткий оффтоп")

Чисто для поржать можно почитать комментарии:
http://www.linux.org.ru/news/bsd/7669861

bottica

Цитата: GhOsT_MZ от 25 мая 2012, 14:35:56
Куда страшно заходить?)
В тему/АйТи-курилку.

nubrik

25 мая 2012, 23:51:50 #4 Последнее редактирование: 26 мая 2012, 00:00:17 от nubrik
 :offtopic:
[size=10pt]С Уважением, Сергей.

GhOsT_MZ

Добрался таки до книжки CCNA. Читаю про serial-интерфейсы. Не могу понять одного - какая скорость работы возможна? Пытался порыться в википедии, и что-то не увидел подобной информации... Может кто в курсе, какая максимальная скорость достижима на этом интерфейсе? И хотелось бы узнать природу опций clock rate, bandwidth в настройках этих интерфейсов на маршрутизаторах cisco...

YaLazarev

Стоим. Курим.  :smoke: Специализируюсь на юзабилити и рекламе. Есть чо?  ;D

GhOsT_MZ

Есть ли тут народ, знающий Си? Есть вопрос, по идее простой, но самому разобраться не удается...(

BRE

Цитата: GhOsT_MZ от 02 апреля 2013, 21:35:50
Есть ли тут народ, знающий Си? Есть вопрос, по идее простой, но самому разобраться не удается...(
Давай. :)

GhOsT_MZ

Оке. Расклад такой. Есть фря. У нее есть несколько утилит для выключения/перезагрузки системы: fastboot, fasthalt, reboot, halt, poweroff, shutdown.
Первые 4 - это одно и тоже, собираются из одного исходника, но в Makefile есть параметр LINKS, который "тиражирует" этот файлик. MD5-хзши само собой совпадают.
Аналогичная ситуация и с poweroff/shutdown - они тоже идентичны.
А теперь самое интересное. В shutdown.c есть такой код:
Цитировать
126              if ((p = rindex(argv[0], '/')) == NULL)
127                   p = argv[0];
128           else
129                   ++p;
130           if (strcmp(p, "poweroff") == 0) {
131                   if (getopt(argc, argv, "") != -1)
132                           usage((char *)NULL);
133                   argc -= optind;
134                   argv += optind;
135                   if (argc != 0)
136                           usage((char *)NULL);
137                   dopower = 1;
138                   offset = 0;
139                   (void)time(&shuttime);
140                   goto poweroff;
141           }
Тут понятно, смотрим какой экземпляр запустили и выполняем действие. Своего рода "эмуляция" наличия ключей командной строки.
А вот как оно работает для reboot?
Есть такая штука:
Цитировать
74           if (strstr((p = rindex(*argv, '/')) ? p + 1 : *argv, "halt")) {
75                   dohalt = 1;
76                   howto = RB_HALT;
77           } else
78                   howto = 0;
79           lflag = nflag = qflag = 0;
80           while ((ch = getopt(argc, argv, "dk:lnpq")) != -1)
81                   switch(ch) {
82                   case 'd':
83                           howto |= RB_DUMP;
84                           break;
85                   case 'k':
86                           kernel = optarg;
87                           break;
88                   case 'l':
89                           lflag = 1;
90                           break;
91                   case 'n':
92                           nflag = 1;
93                           howto |= RB_NOSYNC;
94                           break;
95                   case 'p':
96                           howto |= RB_POWEROFF;
97                           break;
98                   case 'q':
99                           qflag = 1;
100                           break;
101                   case '?':
102                   default:
103                           usage();
104                   }
105           argc -= optind;
106           argv += optind;
То есть, мы проверили halt ли мы и все, а дальше перебираем параметры командной строки, как ни в чем ни бывало.
Более того, функция usage выглядит так:
Цитировать223   usage(void)
224   {
225   
226           (void)fprintf(stderr, dohalt ?
227               "usage: halt [-lnpq] [-k kernel]\n" :
228               "usage: reboot [-dlnpq] [-k kernel]\n");
229           exit(1);
230   }
То есть, кроме halt и reboot ничего не предусмотрено. Но, как же fast*? Дань наследия труЪ-юникс или я что-то не досмотрел? Да и смотрел начиная с первых версий фрей (1994 год), нету там fasthalt/fastboot.
Собственно, сорсы тут:
http://svnweb.freebsd.org/base/release/9.1.0/sbin/reboot/reboot.c?revision=243808&view=markup

BRE

Так ты сделай fastboot -? и посмотри что он выведет.
Если
usage: reboot [-dlnpq] [-k kernel

то и вопросы все отпадут. :)

P.S. По твоим кускам кода, проверяется только halt, все остальное будет расцениваться как reboot.
А вот что такое во фре fastboot и fasthalt не знаю.


GhOsT_MZ

Цитата: BRE от 02 апреля 2013, 22:01:03
Так ты сделай fastboot -? и посмотри что он выведет.
Если
usage: reboot [-dlnpq] [-k kernel

то и вопросы все отпадут. :)

P.S. По твоим кускам кода, проверяется только halt, все остальное будет расцениваться как reboot.
А вот что такое во фре fastboot и fasthalt не знаю.
Ну как я и предполагал, да и уже нашел что это) Это оказывается такая забавная штука, как alias) Надо было ман внимательней читать) Хотя, по поводу манов вопрос далеко не однозначный, сейчас сопоставляю ман по reboot с исходниками, что-то оно там не сходится...

BRE

Цитата: GhOsT_MZ от 02 апреля 2013, 22:04:30
Ну как я и предполагал, да и уже нашел что это) Это оказывается такая забавная штука, как alias) Надо было ман внимательней читать) Хотя, по поводу манов вопрос далеко не однозначный, сейчас сопоставляю ман по reboot с исходниками, что-то оно там не сходится...
man'ы часто далеко отстают от софта. :)

GhOsT_MZ

Цитата: BRE от 02 апреля 2013, 22:11:25
man'ы часто далеко отстают от софта. :)
Ну не настолько же))
Цитировать-n      The file system cache is not flushed.  This option should proba-
        bly not be used.


     -q      The system is halted or restarted quickly and ungracefully, and
        only the flushing of the file system cache is performed (if the
        -n option is not specified).  This option should probably not be
        used.
То есть, -q быстро завершает работу, но делает вызов sync(). -n - не дает делать sync().
По коду:
Цитировать108           if ((howto & (RB_DUMP | RB_HALT)) == (RB_DUMP | RB_HALT))
109                   errx(1, "cannot dump (-d) when halting; must reboot instead");
110           if (geteuid()) {
111                   errno = EPERM;
112                   err(1, NULL);
113           }
114   
115           if (qflag) {
116                   reboot(howto);
117                   err(1, NULL);
118           }
.....
154           if (!nflag)
155                   sync();
.....
212           reboot(howto);
То есть, если -q - мы сразу же после определения параметров выполним системный вызов reboot(), который потом убъет наш процесс и мы так и не дойдем до вызова sync(), который так обещали... То есть, мы надеемся, что не проипем инфу на винте, сделав reboot -q, а тут на тебе, синка нету, и мы получаем фарш вместо последних записанных данных)

BRE

Цитата: GhOsT_MZ от 02 апреля 2013, 22:17:32
То есть, мы надеемся, что не проипем инфу на винте, сделав reboot -q, а тут на тебе, синка нету, и мы получаем фарш вместо последних записанных данных)
Ну а кто не ошибается... :)



Базы отдыха в Ростовской области YouTube Odnoklassniki Vkontakte Twitter