Анализ выходных данных w
, вероятно, лучше, чем кто
. Вот некоторые репрезентативные данные, которые показывают время входа в систему:
$ who
tom pts/1 2015-11-15 06:39 (michener:S.0)
$ w
06:40:10 up 1:04, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
tom pts/1 michener:S.0 06:39 2.00s 0.03s 0.00s w
Они более доступны, чем палец
. Поскольку это упражнение является классным упражнением, анализ данных оставлен на усмотрение OP. В качестве подсказки, awk может сделать больше, чем напечатать свои поля в одной строке:
w
, в скрипте awk имеется раздел BEGIN
(для установки номера строки или состояния). USER
. awk
выйдет, когда больше нет данных; для этого необязательно знать количество пользователей. Если OP получает команду использовать who
, это имеет опции для перечисления дополнительной информации, например,
$ who -l -u
LOGIN tty5 2015-11-15 05:36 3670 id=5
LOGIN tty6 2015-11-15 05:36 3671 id=6
LOGIN tty4 2015-11-15 05:36 3669 id=4
LOGIN tty3 2015-11-15 05:36 3668 id=3
LOGIN tty2 2015-11-15 05:36 3667 id=2
LOGIN tty1 2015-11-15 05:36 3666 id=1
tom pts/1 2015-11-15 06:39 00:06 5780 (michener:S.0)
tom pts/2 2015-11-15 06:52 . 6078 (michener:S.1)
снова, с указанием имени терминала и времени входа в систему.
-121--138835-
Итак, вот решение, которое сработало:
iptables -I FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -s 192.168.43.51 ! -d 192.168.43.1 -j DROP
-121--216744-
#!/bin/ksh
# KSH function to read one character from standard input
# without requiring a carriage return. To be used in KSH
# script to detect a key press.
#
# Source this getch function into your script by using:
#
# . /path/to/getch.ksh
# or
# source /path/to/getch.ksh
#
# To use the getch command in your script use:
# getch [quiet]
#
# Using getch [quiet] yields no output.
getch()
{
STAT_GETCH="0"
stty raw
TMP_GETCH=`dd bs=1 count=1 2> /dev/null`
STAT_GETCH="${?}"
stty -raw
if [[ "_${1}" != "_quiet" ]]
then
print "${TMP_GETCH}"
fi
return ${STAT_GETCH}
}
Устройство на IRQ 51, вероятно, не поддерживает IO -APIC. Вы можете проверить это, запустив:
cat /proc/interrupts
Я предоставил (отредактированный )образец вывода ниже:
CPU0 CPU1 CPU2 CPU3
0: 31 0 0 0 IO-APIC-edge timer
6: 0 0 0 2 IO-APIC-edge floppy
51: 0 0 0 0 PCI-MSI-edge PCIe PME, pciehp
В примере системы я могу изменить привязку smp _к IRQ 6, но не к IRQ 51. (Хотя IRQ 0 перечисляет границу IO -APIC -, соответствие smp _этому IRQ. Я не уверен, почему.)
Without an IO-APIC, interrupts from hardware will be delivered only to the CPU which boots the operating system (usually CPU#0).
Другой полезной ссылкой является SMP IRQ Affinity .