Linux.org.ru
Новости - Галерея - Форум - Трекер - Wiki - Поиск
[#]  
doctorx (фотография)

Как сбросить uptime?

сабж без ребута

doctorx * (10.02.2010 19:59:57)

[#]  

echo 0.0 0.0 > /proc/uptime

anonymous (10.02.2010 20:03:21)
[#] Ответ на: комментарий от anonymous 10.02.2010 20:03:21  

root@valdos-desk fat-troll]# echo 0.0 0.0 > /proc/uptime
bash: echo: ошибка записи: Ошибка ввода/вывода
[root@valdos-desk fat-troll]#

DoctorSinus *** (10.02.2010 20:12:09)
[#]  

Зачем?

Cancellor ** (10.02.2010 20:13:25)
[#] Ответ на: комментарий от DoctorSinus 10.02.2010 20:12:09  

chmod 0666 /proc/uptime

anonymous (10.02.2010 20:17:13)
[#]  
azure (фотография)

Да незачем его сбрасывать. он и сам обнулится.. после ~68 лет аптайма

azure * (10.02.2010 20:22:17)
[#] Ответ на: комментарий от azure 10.02.2010 20:22:17  

Точно, пускай ТС часы переведет.

anonymous (10.02.2010 20:24:33)
[#] Ответ на: комментарий от anonymous 10.02.2010 20:17:13  

root@valdos-desk fat-troll]# chmod 0666 /proc/uptime
[root@valdos-desk fat-troll]# echo 0.0 0.0 > /proc/uptime
bash: echo: ошибка записи: Ошибка ввода/вывода
[root@valdos-desk fat-troll]# chmod 777 /proc/uptime
[root@valdos-desk fat-troll]# echo 0.0 0.0 > /proc/uptime
bash: echo: ошибка записи: Ошибка ввода/вывода
[root@valdos-desk fat-troll]#

DoctorSinus *** (10.02.2010 21:07:36)
[#] Ответ на: комментарий от DoctorSinus 10.02.2010 21:07:36  

блин в кавычки зсовывать не пробовал?

wlan (10.02.2010 21:08:56)
[#] Ответ на: комментарий от wlan 10.02.2010 21:08:56  
doctorx (фотография)

Что засунуть?

Аптайм мне нужно сбросить, чтобы после входа ждущего режима отсчет времени заново шел, чтобы я мог просто знать насколько я увеличил уровень красноглазия сижу за компом

doctorx * (10.02.2010 21:16:01)
[#] Ответ на: комментарий от DoctorSinus 10.02.2010 20:12:09  
xscrew (фотография)

ты идиот? echo "DoctorSinus идиот таки" >> куда-надо

xscrew * (10.02.2010 21:17:55)
[#] Ответ на: комментарий от xscrew 10.02.2010 21:17:55  
doctorx (фотография)

Насколько я понял из троллинга надо сделать "echo 0.0 0.0" > /proc/uptime , но все равно не получается

doctorx * (10.02.2010 22:35:13)
[#] Ответ на: комментарий от doctorx 10.02.2010 22:35:13  
staseg (фотография)

Вам предлагали сделать

echo "0.0 0.0" > /proc/uptime

Но не работает, это виртуальная хрень только для чтения. Как сбросить - хз.

staseg * (10.02.2010 22:46:45)
[#]  
nnz (фотография)

KERNV=`uname -r` 
kexec -l /boot/vmlinuz-$KERNV --initrd=/boot/initrd.img-$KERNV --command-line=`cat /proc/cmdline` 
kexec -e 

nnz **** (10.02.2010 23:13:08)
[#] Ответ на: комментарий от doctorx 10.02.2010 21:16:01  

> Аптайм мне нужно сбросить, чтобы после входа ждущего режима отсчет времени заново шел, чтобы я мог просто знать насколько я увеличил уровень красноглазия сижу за компом

Верх маразма. Поищи какую-н прогу будильник или напиши 2-3 строчки на Питоне.

Divius * (11.02.2010 0:20:52)
[#] Ответ на: комментарий от Divius 11.02.2010 0:20:52  
xorik (фотография)

sleep 6h && notify-send -t 0 'Хватит красноглазить, ёпт!'

xorik ** (11.02.2010 0:33:15)
[#] Ответ на: комментарий от xorik 11.02.2010 0:33:15  
roman77 (фотография)

roman@linux:~$ notify-send -t 0 'Хватит красноглазить, ёпт!'

Программа 'notify-send' на данный момент не установлена. Вы можете установить ее, напечатав:

sudo apt-get install libnotify-bin

bash: notify-send: команда не найдена

Кашмааааааар....

roman77 * (11.02.2010 0:53:04)
[#] Ответ на: комментарий от roman77 11.02.2010 0:53:04  
xorik (фотография)

Ну я не знаю, чем там в вас в убунтах принято нотификации делать

xorik ** (11.02.2010 0:56:24)
[#]  
ttnl2 (фотография)

Пробег скручиваешь? :)

Готов за пару бутылок хорошего пива нависать тебе системный вызов,
который будет это делать.

Учитесь, как надо на свободном софте зарабатывать!

ttnl2 ** (11.02.2010 1:48:11)
[#] Ответ на: комментарий от doctorx 10.02.2010 21:16:01  

Почитай про hamster-applet. Может подойдет под твою задачу

aydar **** (11.02.2010 6:36:57)
[#]  
mironov_ivan (фотография)

Злой хак.

Очень злой хак =).

mironov_ivan **** (11.02.2010 7:52:40)
[#] Ответ на: Злой хак. от mironov_ivan 11.02.2010 7:52:40  

за такой код вам нужно выколоть глаза и отрезать пальцы по плечи

google linux mem/kmem

anonymous (11.02.2010 9:11:59)
[#]  
Eddy_Em (фотография)

echo "0 0" > /proc/uptime не поможет?

Eddy_Em ** (11.02.2010 9:23:28)
[#] Ответ на: Злой хак. от mironov_ivan 11.02.2010 7:52:40  

Прикол)

Цитата

Это соединение является недоверенным

Вы попросили Firefox установить защищённое соединение с ivan-mironov.net, но мы не можем гарантировать, что это соединение является защищённым.

Обычно, когда вы пытаетесь установить защищённое соединение, сайты предъявляют проверенный идентификатор, служащий доказательством того, что вы направляетесь в нужное место. Однако идентификатор этого сайта не может быть проверен. Что мне делать?

Если вы обычно без проблем соединяетесь с данным сайтом, эта ошибка может означать, что кто-то пытается подменить этот сайт другим. В этом случае вам не следует продолжать соединение.

aydar **** (11.02.2010 9:25:12)
mironov_ivan (фотография)

Цитата

google linux mem/kmem

В курсе. Но у меня с ходу не вышло, то-ли на новых ядрах, то-ли только в федоре что-то с ними поменяли. С /dev/mem лишние заморочки, а в /dev/kmem система не давала ничего записать. Возможно это федоровский селинукс не давал, я не стал разбираться - быстрее было заменить одну строчку в "hello world kernel module" =).

mironov_ivan **** (11.02.2010 9:26:50)
[#] Ответ на: Прикол) от aydar 11.02.2010 9:25:12  
mironov_ivan (фотография)

s,https,http, =)

mironov_ivan **** (11.02.2010 9:38:30)
[#] Ответ на: комментарий от mironov_ivan 11.02.2010 9:26:50  

Ядро какое?

У меня на 2.6.31-r6 read из /dev/kmem не работает.

У тебя вот такое работает?

dd if=/dev/kmem seek=$((`grep total_sleep_time /lib/modules/`uname -r`/build/System.map | cut -d ' ' -f 1`)) bs=1 count=8 | od -l

anonymous (11.02.2010 11:01:32)
[#] Ответ на: комментарий от anonymous 11.02.2010 11:01:32  

dd if=/dev/kmem seek=$((`grep total_sleep_time /lib/modules/$(uname -r)/build/System.map | cut -d ' ' -f 1`)) bs=1 count=8 | od -l

anonymous (11.02.2010 11:04:08)
[#] Ответ на: комментарий от anonymous 11.02.2010 11:04:08  
mironov_ivan (фотография)

Вместо

 
seek=$((`grep total_sleep_time /lib/modules/$(uname -r)/build/System.map | cut -d ' ' -f 1`)) 

нужно что-то вроде

 
skip=$( ( printf 'ibase=16; '; sed -n 's,^\([^ ]*\) . total_sleep_time$,\1,p' /lib/modules/$(uname -r)/build/System.map | tr 'abcdef' 'ABCDEF' ) | bc ) 

Встроенными средствами шелла не получается переводить адрес из hex'а на 64х-разрядной системе, так как похоже там используется int и адрес попросту не влазит =).

На Fedora 12:

 
$ sudo dd if=/dev/kmem skip=$( ( printf 'ibase=16; '; sed -n 's,^\([^ ]*\) . total_sleep_time$,\1,p' /lib/modules/$(uname -r)/build/System.map | tr 'abcdef' 'ABCDEF' ) | bc ) bs=1 count=8 | od -l 
dd: открытие `/dev/kmem': Нет такого файла или каталога 
0000000 
 
$ sudo mknod -m 640 /dev/kmem c 1 2 
 
$ sudo dd if=/dev/kmem skip=$( ( printf 'ibase=16; '; sed -n 's,^\([^ ]*\) . total_sleep_time$,\1,p' /lib/modules/$(uname -r)/build/System.map | tr 'abcdef' 'ABCDEF' ) | bc ) bs=1 count=8 | od -l 
dd: открытие `/dev/kmem': Нет такого устройства или адреса 
0000000 

А на gentoo с ядром 2.6.31-gentoo-r6 работает нормально.

mironov_ivan **** (11.02.2010 11:30:50)
[#] Ответ на: комментарий от mironov_ivan 11.02.2010 11:30:50  

> нужно что-то вроде

Посмотрел на лог dd под strace - что seek=, что skip= выливаются в lseek(fd,0,SEEK_CUR) + lseek(fd, ADDR, SEEK_CUR)

> Встроенными средствами шелла не получается переводить адрес из hex'а на 64х-разрядной системе, так как похоже там используется int и адрес попросту не влазит =).

bash 4.0.35(2), гента на x86_64 - перевод работает:

echo $((0x123456789ABCDE)) - выводит 5124...430

Вообше странно, у меня на генте 2.6.31-r6 чтение с /dev/kmem - не работает

anonymous (11.02.2010 11:41:27)
[#] Ответ на: комментарий от anonymous 11.02.2010 11:41:27  

$(()) - работает по дефолту со знаковыми числами, и в случае с асдресами из ядра в амд64 получается -что-то там.

Кстати, заместо `tr abcdef ABCDEF` можно и нужно писать `dd conv=ucase` ;)

anonymous (11.02.2010 11:44:59)
[#] Ответ на: комментарий от anonymous 11.02.2010 11:41:27  
mironov_ivan (фотография)

Цитата

Посмотрел на лог dd под strace - что seek=, что skip= выливаются в lseek(fd,0,SEEK_CUR) + lseek(fd, ADDR, SEEK_CUR)

skip делает lseek на читаемом файле (то, что нам нужно), а seek - на записываемом файле (нам это не нужно, да и просто бессмысленно, ведь этот файл - stdout).

Цитата

bash 4.0.35(2), гента на x86_64 - перевод работает:

echo $((0x123456789ABCDE)) - выводит 5124...430

Тьфу ты, я ошибся, там не int, а int64_t. То есть шелл конвертирует со знаком, а нам нужно без:

 
$ echo $(( 0xEEEEEEEEEEEEEEEE )) 
-1229782938247303442 
 
$ echo 'ibase=16; EEEEEEEEEEEEEEEE' | bc 
17216961135462248174 

Цитата

Вообше странно, у меня на генте 2.6.31-r6 чтение с /dev/kmem - не работает

А какую ошибку выдаёт?

mironov_ivan **** (11.02.2010 11:50:18)
[#] Ответ на: комментарий от mironov_ivan 11.02.2010 11:50:18  

> skip делает lseek на читаемом файле

Ага, я затупил.

> Тьфу ты, я ошибся, там не int, а int64_t. То есть шелл конвертирует со знаком, а нам нужно без:

Да, я про написал

> А какую ошибку выдаёт?

dd if=/dev/kmem of=- skip=$(printf "%lu" 0x$(grep total_sleep_time /lib/modules/$(uname -r)/build/System.map | cut -d ' ' -f 1)) bs=1 count=8 | od -l

dd: reading `/dev/kmem': Bad address

Я так понимаю, у тебя ядро 32-х битное?

anonymous (11.02.2010 12:03:32)
[#] Ответ на: комментарий от anonymous 11.02.2010 12:03:32  
mironov_ivan (фотография)

Цитата

Я так понимаю, у тебя ядро 32-х битное?

На Fedora 12 (где не читает) - 64х-разрядное, на Gentoo (где читает) - 32х-разрядное.

Вот федора:

 
$ uname -a 
Linux ivan-laptop 2.6.31.12-174.2.3.fc12.x86_64 #1 SMP Mon Jan 18 19:52:07 UTC 2010 x86_64 x86_64 x86_64 GNU/Linux 

И соответственно джента:

 
$ uname -a 
Linux homeserver 2.6.31-gentoo-r6 #8 SMP Sun Dec 20 01:19:58 YEKT 2009 i686 Intel(R) Pentium(R) 4 CPU 2.40GHz GenuineIntel GNU/Linux 

mironov_ivan **** (11.02.2010 12:17:55)
[#] Ответ на: комментарий от mironov_ivan 11.02.2010 12:17:55  
mironov_ivan (фотография)

Проверил на другой дженте (с 64х-разрядным ядром) - не работает:

 
$ sudo dd if=/dev/kmem skip=$( ( printf 'ibase=16; '; sed -n 's,^\([^ ]*\) . total_sleep_time$,\1,p' /boot/System.map-genkernel-x86_64-2.6.30-gentoo-r5 | tr 'abcdef' 'ABCDEF' ) | bc ) bs=1 count=8 | od -l 
dd: reading `/dev/kmem': Bad address 
0000000 
0+0 records in 
0+0 records out 
0 bytes (0 B) copied, 0.000597387 s, 0.0 kB/s 
 
$ uname -a 
Linux xff 2.6.30-gentoo-r5 #1 SMP Fri Oct 9 21:27:35 YEKST 2009 x86_64 Intel(R) Celeron(R) CPU 440 @ 2.00GHz GenuineIntel GNU/Linux 

mironov_ivan **** (11.02.2010 12:22:00)
[#] Ответ на: комментарий от mironov_ivan 11.02.2010 12:17:55  
mironov_ivan (фотография)

Понял по какой причине не работает не федоре:

 
$ grep CONFIG_DEVKMEM /boot/config-2.6.31.12-174.2.3.fc12.x86_64  
# CONFIG_DEVKMEM is not set 

=)

Про gentoo amd64 вопрос открыт.

mironov_ivan **** (11.02.2010 12:31:49)
[#] Ответ на: комментарий от mironov_ivan 11.02.2010 12:31:49  

Ну так тебе ж dd в логе писал:

> dd: открытие `/dev/kmem': Нет такого устройства или адреса

;)

Ответ на открытый вопрос - оно не работает. Всё. Даже такая простая функциональность, как чтение/запись виртуальной памяти ядра и модуль в 100-строк не работает. Долбанный линукс :(

anonymous (11.02.2010 12:35:48)
[#] Ответ на: комментарий от anonymous 11.02.2010 12:35:48  
mironov_ivan (фотография)

Цитата

Ну так тебе ж dd в логе писал:

> dd: открытие `/dev/kmem': Нет такого устройства или адреса

;)

Это на федоре писало. Там причина ясна - /dev/kmem выпилен в конфиге ядра, видимо для усиления безопасности.

Цитата

Ответ на открытый вопрос - оно не работает. Всё. Даже такая простая функциональность, как чтение/запись виртуальной памяти ядра и модуль в 100-строк не работает. Долбанный линукс :(

Походу проблема в том, что на amd64 чтение из /dev/kmem работает только через mmap. Сейчас проверю...

mironov_ivan **** (11.02.2010 12:46:30)
[#] Ответ на: комментарий от mironov_ivan 11.02.2010 12:46:30  

> Походу проблема в том, что на amd64 чтение из /dev/kmem работает только через mmap. Сейчас проверю...

Проблема в том, что обычное чтение не работает. mmap то же не работает:

 
#define _POSIX_MAPPED_FILES 
#define _LARGEFILE64_SOURCE 
 
 
#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <fcntl.h> 
#include <unistd.h> 
#include <sys/mman.h> 
 
 
int 
main() 
{ 
    int fd; 
    void* kmem; 
    unsigned long kaddr; 
 
    fd = open("/dev/kmem", O_RDONLY); 
 
    if( fd == -1 ) { 
        perror("open()"); 
        exit(1); 
    } 
 
    if( scanf("%lx", &kaddr) != 1 ) { 
        exit(1); 
    } 
 
    fprintf(stderr, "reading long from %lx\n", kaddr); 
 
    kmem = mmap(NULL, sizeof(long), PROT_READ, MAP_SHARED, fd, kaddr); 
 
    if(kmem == MAP_FAILED) { 
        perror("map()"); 
        exit(1); 
    } 
 
    printf("%lx\n", *(unsigned long*)kmem); 
 
    return 0; 
} 

anonymous (11.02.2010 14:53:29)
[#] Ответ на: комментарий от xorik 11.02.2010 0:33:15  
Hetor (фотография)

>sleep 6h && notify-send -t 0 'Хватит красноглазить, ёпт!'

sleep 6h && halt

Hetor * (11.02.2010 14:55:40)

О Сервере - Правила форума
http://www.linux.org.ru/

Rambler's Top100 TopList