У меня был бы соблазн достучаться до рубина здесь:
echo "a c a c a c a a a a a a a a c c c a c 0 0 a c 0 a" |
ruby -e '
max = STDIN.gets # read the line
.split # split on whitespace
.group_by {|elem| elem} # create a hash grouping the words
.to_a # convert has to array of [key,value] pairs
.map {|key, val| [key, val.length]} # convert to array of [key, count] pairs
.sort_by {|key, count| count} # sort numerically
.reverse # in descending order
puts "max: " + max[0][0]
puts "2nd max: " + max[1][0]
'
-121--174044-
Сообщение об ошибке говорит не о crontab
, а о httpd
(Apache).
Начать расследование, временно выключив SELinux:
setenforce 0
(который будет адресован большинство , но не все блокировки). Проблема обычно может быть исправлена с помощью одной из настроек SELinux через semanage
(если файлы Drupal хранятся в том месте, которое SELinux не ожидает), или с помощью restorecon
(для восстановления метаинформации для файловой системы).
В крайнем случае можно использовать audit2allow .
Для справки:
семанжа
) -121--228482-
Отсутствуют "рекомендации". Только вещи, которые имеют смысл и облегчают ситуацию.
Извлечение общих частей и параметризация остальных является одной из таких вещей:
lines="`gunzip -c /var/log/cisco/cisco.log-$(date +%Y%m%d).gz`"
#gunzip would always output the same thing on the same day, so
#just run it once and store the results in a variable
grepAndLog(){
local regex="$1" file="$2" msg="$3" filter="${4:-cat}"
#^names for positional parameters
printf "%s\n" "$lines" | grep "$regex" | cut -d' ' -f4 | sort | uniq -c | eval "$filter" > "/tmp/$file"
local count=`wc -l < "/tmp/$file"`
echo "There are $count "" $msg" >> "/tmp/$file"
}
grepAndLog ath_bstuck_tasklet netgear_bacon.txt \
'Stuck beacon; resetting'
grepAndLog netgear_buffer_queue netgear_buffer_queue.txt \
"routers with 'Virtual device ath0 asks to queue packet' errors"
grepAndLog CMS_MSG_DNSPROXY_RELOAD netgear_dns.txt \
" routers with 'DNS Proxy Issue' errors"
grepAndLog ath_bstuck_tasklet netgear_bacon.txt \
" routers with beacon frame errors"
grepAndLog ACK netgear_ACK.txt \
" routers with more than 50 ACK" 'awk -v x=50 "\$1 >= x"'
Это все еще решение в основном оболочки. Но ИМО более читаема и более чем на 40% короче.
Я использую grep "$ regex" | cut -d '' -f4
вместо выражения awk.
Кроме того, функция grepAndLog
является обобщением того, что вы делаете в каждой строке сценария:
У вас есть некоторые входные данные (выходные данные gunzip), для выражения (параметр $ regex
), и вы выводите результирующие строки, отсортированные и с префиксом count в файл $
. Затем добавляется число строк
(Я делаю wc -l вместо
wc -l "$ file" | awk...
), заключенное в сообщение, начало которого является постоянным и конец которого изменяется ( $ msg
).
В своей последней строке вы не просто греп, но вы используете другой фильтр поверх этого.
Вместо создания ветви if
для этой функции, я просто использую cat
в качестве неявного дополнительного фильтра по умолчанию в обычных случаях, когда четвёртого параметра не существует ( local filter = "$ {4: -cat}"
означает создание фильтра функциональных локальных переменных, содержимое которого является четвертым параметром, заданным функции, или cat
, если четвёртый параметр не предоставлен cat
переопределяется, если четвертый параметр задан как grepAndLog
.
QinHeng Electronics CH340S — это адаптер последовательного/параллельного порта, а не сам принтер. И похоже, что в Linux есть драйвер для этого чипа адаптера (, имя модуля должно быть ch341
), но только для его режима адаптера последовательного порта. И использование последовательного порта с таким принтером было бы мучительно медленным.
Для поддерживаемого адаптера USB -> параллельного порта выберите «Параллельный порт (LPT )» в окне «Обнаружение устройства», а затем, при необходимости, введите имя устройства. Это может быть что-то вроде /dev/usb/lp0
; У меня не было возможности использовать адаптер параллельного порта USB -> с Linux, поэтому я не знаю наверняка.
Но если используется принтер HP LaserJet 4050, он должен иметь сетевой интерфейс в стандартной комплектации. Подключите его к своей сети, а затем выберите «Сеть/Ethernet/Беспроводная связь» в этом окне обнаружения устройств, и он может даже автоматически -обнаружить принтер, если он присутствует в сегменте локальной сети. Если он не определяет автоматически -, получите распечатку настроек конфигурации сети с помощью панели управления принтера и проверьте настройки сети. Если у него старые настройки из того места, где он ранее использовался, погуглите «холодный сброс LaserJet 4050».