summaryrefslogtreecommitdiff
path: root/examples/cgroup.py
diff options
context:
space:
mode:
authorHelmut Grohne <helmut@subdivi.de>2024-02-21 11:20:44 +0100
committerHelmut Grohne <helmut@subdivi.de>2024-02-21 11:20:44 +0100
commit1de72653e0b9dcf41576b75bda7d08f76c525847 (patch)
tree7b523d8acaf0a3b98cae02ab2c8153db7d7d5085 /examples/cgroup.py
parentb64313d313723c62f173f750f2d699ebf169e01f (diff)
downloadpython-linuxnamespaces-1de72653e0b9dcf41576b75bda7d08f76c525847.tar.gz
add function linuxnamespaces.populate_sys
Diffstat (limited to 'examples/cgroup.py')
-rwxr-xr-xexamples/cgroup.py27
1 files changed, 5 insertions, 22 deletions
diff --git a/examples/cgroup.py b/examples/cgroup.py
index 0c52efb..baacf35 100755
--- a/examples/cgroup.py
+++ b/examples/cgroup.py
@@ -78,17 +78,16 @@ def start_transient_unit_with_ravel(pid: int) -> None:
def main() -> None:
mycgroup = get_cgroup()
- mycgroupdir = pathlib.Path("/sys/fs/cgroup") / mycgroup.relative_to("/")
- if not os.access(mycgroupdir, os.W_OK):
+ if not os.access(
+ pathlib.Path("/sys/fs/cgroup") / mycgroup.relative_to("/"),
+ os.W_OK,
+ ):
# For some shells - notably from graphical desktop environments, the
# hiearchy is immediatly writeable. For others, we may create a scope
# unit.
if ravel is not None:
start_transient_unit_with_ravel(os.getpid())
mycgroup = get_cgroup()
- mycgroupdir = pathlib.Path(
- "/sys/fs/cgroup"
- ) / mycgroup.relative_to("/")
else:
# Re-execute ourselves via systemd-run.
if (
@@ -111,23 +110,7 @@ def main() -> None:
| linuxnamespaces.CloneFlags.NEWNS
| linuxnamespaces.CloneFlags.NEWCGROUP,
)
- cgroupfd = linuxnamespaces.open_tree(
- mycgroupdir,
- linuxnamespaces.OpenTreeFlags.OPEN_TREE_CLONE
- | linuxnamespaces.OpenTreeFlags.AT_RECURSIVE,
- )
- linuxnamespaces.mount("tmpfs", "/sys", "tmpfs", data="mode=0755")
- os.mkdir("/sys/fs")
- os.mkdir("/sys/fs/cgroup")
- linuxnamespaces.mount(
- "tmpfs",
- "/sys",
- "tmpfs",
- linuxnamespaces.MountFlags.fromstr("remount,ro,noexec,nosuid,nodev"),
- "mode=0755",
- )
- linuxnamespaces.move_mount(cgroupfd, "/sys/fs/cgroup")
- cgroupfd.close()
+ linuxnamespaces.populate_sys("/", "/", mycgroup)
os.execlp(os.environ["SHELL"], os.environ["SHELL"])