Хотя этому вопросу уже семь лет, я удивлен, что никто не предложил решение, обслуживающее файл через веб-сервер. Это достигается с помощью следующего компактного скрипта Python3. Сохраните его как исполняемый файл, например,browse.py:
#!/usr/bin/env python3
import sys, os, time, platform, signal
from subprocess import Popen
from http.server import HTTPServer, BaseHTTPRequestHandler
sys.stderr = open(os.devnull, 'w')
def timeoutHandler(signum, frame):
sys.exit("")
signal.signal(signal.SIGALRM, timeoutHandler)
signal.alarm(2)
html = sys.stdin.read()
port = int(sys.argv[1]) if len(sys.argv) > 1 else 8000
class Handler(BaseHTTPRequestHandler):
def _set_headers(self):
self.send_response(200)
self.send_header("content-type", "text/html")
self.end_headers()
def do_GET(self):
self._set_headers()
self.wfile.write(b = bytes(html, "utf-8"))
platform = platform.system().lower()
if platform.find("win") >= 0: command = "start"
elif platform.find("mac") >= 0 or platform.find("darwin") >= 0: command = "open"
else: command = "xdg-open"
p = Popen([command, "http://localhost:" + str(port) + "/"])
httpd = HTTPServer(("localhost", port), Handler)
httpd.serve_forever()
Затем вы можете перенаправить стандартный ввод в браузер по умолчанию:
./browser.py < somewebpage.html
echo "<html><body><h1>Hello</h1></body></html>" | browse.py
По умолчанию сервер работает на порту 8000, но это поведение можно изменить с помощью аргумента командной строки:
./browser.py 9000 < website.html
Я тестировал этот скрипт на Linux. Он должен работать с другими системами UNIX, включая MacOS, из коробки. Он в принципе даже подготовлен для Windows (У меня нет для тестирования ), но там может быть нужно реализовать функционал таймаута по-другому.
Вам понадобится pvmove
для перемещения экстентов. Поскольку источник и место назначения находятся на одном диске, вам понадобится опция --alloc anywhere
:
pvmove --alloc anywhere /dev/sda2:18818-23937 /dev/sda2:2006-7125 # lv_root
pvmove --alloc anywhere /dev/sda2:23938-25217 /dev/sda2:7126-8405 # lv_home
Вы можете сделать это, когда тома LV смонтированы и используются, просто постарайтесь не делать этого, когда система находится под большой нагрузкой дискового ввода-вывода.
После этих команд первый свободный физический экстент должен иметь номер 8406, и все, начиная с него и до конца PV, должно быть свободно, поэтому теперь PV можно сжать.