Корректное использование из командной строки для того, чтобы закрыть Mac OS после 60 минут:
sudo shutdown -h +60
Это не метод, который Apple рекомендует использовать, хотя это - вероятно, лучший способ на бездисплейном сервере. (Обновление: См. комментарий и ссылку от @radius - использование завершения работы рекомендуется сервером Apple администраторское руководство CLI). От Руководства Наркоманов Командной строки по Mac OS X (сайт устарел, но ссылка на использование osascript является текущей):
Перезагрузка и закрытие
Хотя можно перезагрузить или закрыть системы Mac OS X через традиционный останов, перезагрузку и завершить работу команд, рекомендуемый Apple способ выключить компьютер удаленно состоит в том, чтобы отправить Средству поиска Событие Apple. Это может быть выполнено с помощью команды osascript для выполнения AppleScript:
osascript -e 'tell application "Finder" to shut down'
или
osascript -e 'tell application "Finder" to restart'
Конечно, это будет только работать, если будет зарегистрированный пользователь, который не будет обычно иметь место с, скажем, бездисплейными серверами, в этом случае необходимо смочь использовать традиционные команды UNIX без негативных последствий.
Похоже, вы уже пробовали это, это наиболее очевидный ответ (как указал Понча), и он, вероятно, наиболее вероятно появится в руководстве / руководстве по mod_rewrite. Исключив каталог с помощью RewriteCond
, отметив, что условие соответствует % {REQUEST_URI}
, которое начинается с /
":
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/sub_dir
RewriteCond %{REQUEST_FILENAME} .*\.(jpeg|jpg|gif|png)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /public/404.php [L]
RewriteCond %{REQUEST_URI} !^/sub_dir
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
РЕДАКТИРОВАТЬ:
Глядя на то, что вы пробовали, это тоже неправильно. Вам не нужна ведущая косая черта в совпадении с RewriteRule
, когда оно находится в файле htaccess:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteRule ^sub_dir - [L]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} .*\.(jpeg|jpg|gif|png)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /public/404.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Это правило перенаправляет на домашнюю страницу, если запрошенный путь не является существующим файлом и не существующим каталогом.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Очевидно, поскольку вас перенаправляют на домашнюю страницу,
Как насчет того, чтобы вы попробовали просто сделать это в своем sub_dir
.htaccess, чтобы запретить распространение modrewrite в ваш sub_dir
:
## turn off rewrite engine
RewriteEngine Off
## now do your auth stuff
AuthUserFile "/home/[user]/public_html/.htpasswd"
AuthType Basic
AuthName "subdir"
require valid-user
и если вы действительно нужны правила перезаписи для работы внутри sub_dir, а затем выполняйте их специально в этом файле .htaccess, чтобы не возникало путаницы. Как только вы запускаете RewriteEngine On / Off, правила из родительской папки не применяются напрямую. Сначала они считываются из этой папки, а затем из корня.
Первое замечание:
AuthUserFile "/home/[user]/public_html/.htpasswd"
Похоже, ваш файл .htpasswd находится в общедоступном месте (public_html). Это проблема безопасности, вы должны поместить этот файл туда, где пользователь apache может его прочитать (проверьте права на каталог и файлы), но, конечно, не в место под DocumentRoot. Никто не может напрямую запрашивать файл .htpasswd, это файл только на стороне сервера. Но это не связано с вашей проблемой .
Ваша основная проблема в том, что вы не ответили на вопросы @Jon Lin и @mootinator. Какие файлы вы пытаетесь запросить в sub_dir, есть ли там какие-то файлы html, другой файл index.php? Следует ли разрешить список каталогов в этом каталоге? Как вы проводите тесты.
Когда запрос к sub_dir делается родительским. htaccess применяется по умолчанию (пытается перенаправить каждый запрос, который вы можете себе представить, на boostrapper index.php, за исключением отсутствующих файлов изображений и за исключением существующих каталогов или файлов). Таким образом, запрашивая реальный файл в sub_dir, у вас не должно возникнуть проблем с этими правилами . Хороший способ проверить это - прокомментировать Rules в корневом файле .htaccess.
Вы сказали, что сделали несколько тестов без корневого файла .htaccess, и это сработало. Так что, возможно, удаление Options -MultiViews
сделало ваши тесты нормальными. MultiViews является частью переговоров по содержанию и представляет собой очень волшебное слово с очень странным поведением, поэтому допустим, например, вы запрашиваете subd_dir / foo
в ваших тестах, MultiViews может найти файл sub_dir / FoO.html
и обслужить его. Удалите MultiViews, и ваши тесты больше не будут работать (возможно). Предложения @Mootinator по проблемам с символическими ссылками также могут быть действительными, и у вас также может быть что-то в протестированных файлах, перенаправляющее на URL-адрес, пойманный первым правилом, странным вещам нет конца. Но наверняка «не работает» недостаточно, что «это»?
Как я уже сказал, вам необходимо предоставить нам больше информации. И дайте всем остальным читателям (даже в будущем) достаточно элементов, чтобы увидеть, может ли ваша проблема быть связана с их проблемами. Цель состоит не в том, чтобы нанять некоторых экспертов для работы непосредственно на вашем сервере, а в том, чтобы получить достоверные ответы на достоверные и подробные проблемы.
и у вас также может быть что-то в протестированных файлах, перенаправляющее на URL-адрес, захваченный первым правилом, странным вещам нет конца. Но наверняка «не работает» недостаточно, что «это»?Как я уже сказал, вам необходимо предоставить нам больше информации. И дайте всем остальным читателям (даже в будущем) достаточно элементов, чтобы увидеть, может ли ваша проблема быть связана с их проблемами. Цель состоит не в том, чтобы нанять некоторых экспертов для работы непосредственно над вашим сервером, а в том, чтобы получить достоверные ответы на действительные и подробные проблемы.
и у вас также может быть что-то в протестированных файлах, перенаправляющее на URL-адрес, захваченный первым правилом, странным вещам нет конца. Но наверняка «не работает» недостаточно, что «это»?Как я уже сказал, вам нужно предоставить нам больше информации. И дайте всем остальным читателям (даже в будущем) достаточно элементов, чтобы увидеть, может ли ваша проблема быть связана с их проблемами. Цель состоит не в том, чтобы нанять некоторых экспертов для работы непосредственно над вашим сервером, а в том, чтобы получить достоверные ответы на действительные и подробные проблемы.
Добавьте еще один RewriteCond
, чтобы исключить желаемый sub_dir
(в оба правила):
RewriteCond %{REQUEST_URI} !^sub_dir
Это довольно просто. Соберите все идентификаторы процессов и потоков, затем вызовите программу набор задач
. Например,
taskset -cp 2
taskset -cp 4
…
набор задач
имеет необязательный аргумент - all-tasks
taskset --all-tasks -p $(pgrep java)
Для некоторых процессов - all-tasks
] не печатает все дочерние процессы (в моем тестировании дочерние процессы для kthreadd
не выводились, я не уверен, почему это так).
Вот короткий сценарий оболочки Linux для вывода сведений о сопоставлении ЦП для процесса по имени и всем его дочерним потокам.
#!/usr/bin/env bash
set -eu
pname=${1:-kthreadd} # default to 'kthreadd'
for pid in $(pgrep "${pname}"); do
echo "PID: ${pid} (${pname})"
for tid in $(pgrep -P "${pid}" | tr '\n' ' '); do
taskset -cp "${tid}"
done
done
Выводы
PID: 2 (kthreadd)
pid 4's current affinity list: 0
pid 6's current affinity list: 0
pid 7's current affinity list: 0
pid 8's current affinity list: 0
…
Протестировано на Ubuntu 12, bash 4.
Чтобы решить эту проблему, нам нужно предоставить «фиктивный» файл, к которому клиент может быть направлен, если первоначальная попытка доступа не удалась.ErrorDocument 401 /failed_auth.html
RewriteCond %{REQUEST_URI} ^/pwd-protected-sub-folder/(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^/failed_auth.html$
RewriteRule ^.*$ - [L]
Добавляем это в надежде, что это поможет кому-то другому. Я думаю, что @Mike L был на правильном пути. У меня была аналогичная ситуация (подкаталог htaccess, защищенный паролем с правилами перезаписи в корневом htaccess, который мне все еще нужен для основного сайта). В конце концов, решением для меня было просто добавить это в корневой файл .htaccess.
ErrorDocument 401 "Unauthorised"
Вам все равно нужно будет добавить соответствующие правила, чтобы разрешить доступ к подкаталогу, конечно, но запрос пароля не отображался. исправлено с использованием вышеуказанного. Надеюсь, это поможет!
Для сайта, использующего обычный общий хостинг на основе cPanel (Apache 2.2), я решил, похоже, ту же проблему, добавив файл с именем «401.shtml» в корень документа ( public_html). Простое существование файла, даже без директивы ErrorDocument 401 в .htaccess, решило проблему.