mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Remove --daemon and --pid-file option from __main__.py (#64345)
* Remove --pid-file option from __main__.py * Remove --daemon option from __main__.py
This commit is contained in:
parent
45313e3f7a
commit
319d4d64dc
@ -90,12 +90,6 @@ def get_arguments() -> argparse.Namespace:
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-v", "--verbose", action="store_true", help="Enable verbose logging to file."
|
"-v", "--verbose", action="store_true", help="Enable verbose logging to file."
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
|
||||||
"--pid-file",
|
|
||||||
metavar="path_to_pid_file",
|
|
||||||
default=None,
|
|
||||||
help="Path to PID file useful for running as daemon",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--log-rotate-days",
|
"--log-rotate-days",
|
||||||
type=int,
|
type=int,
|
||||||
@ -119,76 +113,12 @@ def get_arguments() -> argparse.Namespace:
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--script", nargs=argparse.REMAINDER, help="Run one of the embedded scripts"
|
"--script", nargs=argparse.REMAINDER, help="Run one of the embedded scripts"
|
||||||
)
|
)
|
||||||
if os.name == "posix":
|
|
||||||
parser.add_argument(
|
|
||||||
"--daemon", action="store_true", help="Run Home Assistant as daemon"
|
|
||||||
)
|
|
||||||
|
|
||||||
arguments = parser.parse_args()
|
arguments = parser.parse_args()
|
||||||
if os.name != "posix" or arguments.debug or arguments.runner:
|
|
||||||
setattr(arguments, "daemon", False)
|
|
||||||
|
|
||||||
return arguments
|
return arguments
|
||||||
|
|
||||||
|
|
||||||
def daemonize() -> None:
|
|
||||||
"""Move current process to daemon process."""
|
|
||||||
# Create first fork
|
|
||||||
if os.fork() > 0:
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
# Decouple fork
|
|
||||||
os.setsid()
|
|
||||||
|
|
||||||
# Create second fork
|
|
||||||
if os.fork() > 0:
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
# redirect standard file descriptors to devnull
|
|
||||||
# pylint: disable=consider-using-with
|
|
||||||
infd = open(os.devnull, encoding="utf8")
|
|
||||||
outfd = open(os.devnull, "a+", encoding="utf8")
|
|
||||||
sys.stdout.flush()
|
|
||||||
sys.stderr.flush()
|
|
||||||
os.dup2(infd.fileno(), sys.stdin.fileno())
|
|
||||||
os.dup2(outfd.fileno(), sys.stdout.fileno())
|
|
||||||
os.dup2(outfd.fileno(), sys.stderr.fileno())
|
|
||||||
|
|
||||||
|
|
||||||
def check_pid(pid_file: str) -> None:
|
|
||||||
"""Check that Home Assistant is not already running."""
|
|
||||||
# Check pid file
|
|
||||||
try:
|
|
||||||
with open(pid_file, encoding="utf8") as file:
|
|
||||||
pid = int(file.readline())
|
|
||||||
except OSError:
|
|
||||||
# PID File does not exist
|
|
||||||
return
|
|
||||||
|
|
||||||
# If we just restarted, we just found our own pidfile.
|
|
||||||
if pid == os.getpid():
|
|
||||||
return
|
|
||||||
|
|
||||||
try:
|
|
||||||
os.kill(pid, 0)
|
|
||||||
except OSError:
|
|
||||||
# PID does not exist
|
|
||||||
return
|
|
||||||
print("Fatal Error: Home Assistant is already running.")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
|
|
||||||
def write_pid(pid_file: str) -> None:
|
|
||||||
"""Create a PID File."""
|
|
||||||
pid = os.getpid()
|
|
||||||
try:
|
|
||||||
with open(pid_file, "w", encoding="utf8") as file:
|
|
||||||
file.write(str(pid))
|
|
||||||
except OSError:
|
|
||||||
print(f"Fatal Error: Unable to write pid file {pid_file}")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
|
|
||||||
def closefds_osx(min_fd: int, max_fd: int) -> None:
|
def closefds_osx(min_fd: int, max_fd: int) -> None:
|
||||||
"""Make sure file descriptors get closed when we restart.
|
"""Make sure file descriptors get closed when we restart.
|
||||||
|
|
||||||
@ -213,11 +143,9 @@ def cmdline() -> list[str]:
|
|||||||
if os.path.basename(sys.argv[0]) == "__main__.py":
|
if os.path.basename(sys.argv[0]) == "__main__.py":
|
||||||
modulepath = os.path.dirname(sys.argv[0])
|
modulepath = os.path.dirname(sys.argv[0])
|
||||||
os.environ["PYTHONPATH"] = os.path.dirname(modulepath)
|
os.environ["PYTHONPATH"] = os.path.dirname(modulepath)
|
||||||
return [sys.executable, "-m", "homeassistant"] + [
|
return [sys.executable, "-m", "homeassistant"] + list(sys.argv[1:])
|
||||||
arg for arg in sys.argv[1:] if arg != "--daemon"
|
|
||||||
]
|
|
||||||
|
|
||||||
return [arg for arg in sys.argv if arg != "--daemon"]
|
return sys.argv
|
||||||
|
|
||||||
|
|
||||||
def try_to_restart() -> None:
|
def try_to_restart() -> None:
|
||||||
@ -277,14 +205,6 @@ def main() -> int:
|
|||||||
config_dir = os.path.abspath(os.path.join(os.getcwd(), args.config))
|
config_dir = os.path.abspath(os.path.join(os.getcwd(), args.config))
|
||||||
ensure_config_path(config_dir)
|
ensure_config_path(config_dir)
|
||||||
|
|
||||||
# Daemon functions
|
|
||||||
if args.pid_file:
|
|
||||||
check_pid(args.pid_file)
|
|
||||||
if args.daemon:
|
|
||||||
daemonize()
|
|
||||||
if args.pid_file:
|
|
||||||
write_pid(args.pid_file)
|
|
||||||
|
|
||||||
# pylint: disable=import-outside-toplevel
|
# pylint: disable=import-outside-toplevel
|
||||||
from . import runner
|
from . import runner
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user