Вероятно, лучше всего отправить запрос в службу поддержки с предоставленным хостингом. Они могли сделать все возможное, чтобы ваша среда отличалась от стандартной среды Red Hat. Тем не менее, вот некоторые вещи, которые вы могли бы попробовать.
Возможно, каталог yum
не является вашим PATH
. Поскольку yum
предназначен для использования системным администратором, может иметь смысл указать его в пути для пользователя root
, а не для обычного пользователя. Итак, первое, что нужно попробовать, это запустить yum
от имени пользователя root, например.:
sudo yum
Если это не сработает, попробуйте перечислить каталоги в вашемPATH
:
(IFS=:; for d in ${PATH}; do echo $d; done)
Для обычного пользователя я получаю что-то вроде этого:
/usr/local/bin
/bin
/usr/bin
/usr/local/sbin
/usr/sbin
/home/username/.local/bin
/home/username/bin
А также для root
пути пользователя:
sudo bash -c 'IFS=:; for d in ${PATH}; do echo $d; done'
А вот что я получаю для своего пользователя root
:
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
Вы можете сравнить свой вывод с ними, чтобы увидеть, отсутствуют ли какие-либо каталоги.
Существует также несколько команд, которые можно использовать для поиска в файловой -системе. Если у вас установлен locate
, вы можете использовать этот:
updatedb
locate yum
В противном случае, и если файловая -система не слишком велика, вы могли бы использовать find
и ничего не делать, (это, вероятно, излишне):
sudo find / -name yum
То же самое относится и к команде rpm
.
Вот пути для моих команд yum
и rpm
:
user@host:~$ type -a yum
yum is /bin/yum
yum is /usr/bin/yum
user@host:~$ type -a rpm
rpm is /bin/rpm
rpm is /usr/bin/rpm
Если ничего из этого не выявит, то вполне вероятно, что ваш хостинг-провайдер просто не установил его.
Вот связанная ссылка, которую вы можете просмотреть:
Можно попробовать задействовать второй grep
вот так:
grep -irn "404" /var/log/httpd/www.abc.com.access_log|grep -v ema8ketpl4ace9dmin > abc-404.txt
Я не уверен, почему вы используете опцию -r
(по крайней мере в вашем первом примере ), так как вы применяете вызов grep
только к одному файлу.
Для решения второй проблемы я бы предложил использовать awk
вместоgrep
:
awk '$0 ~ /404/ && $0 !~ /ema8ketpl4ace9dmin/ {print}' /var/log/httpd/www.abc.com.access_log > abc-404.txt
Это даст команду awk
напечатать все строки, в которых встречается выражение "404", но не(!~
)выражение "ema8ketpl4ace9dmin".
Обратите внимание, что «печать» — это стандартное действие для любой строки, к которой применяются правила, поэтому вы можете опустить его и просто сказать
awk '$0 ~ /404/ && $0 !~ /ema8ketpl4ace9dmin/' /var/log/httpd/www.abc.com.access_log > abc-404.txt