Skip to content

Commit b6c8d56

Browse files
committed
Allow LimitNOFILE in service units
1 parent ef07d72 commit b6c8d56

2 files changed

Lines changed: 5 additions & 4 deletions

File tree

lib/systemd/unit_file/validator.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ defmodule Systemd.UnitFile.Validator do
2929
),
3030
"Service" =>
3131
MapSet.new(
32-
~w(Type ExecStart ExecStartPre ExecStartPost ExecReload ExecStop ExecStopPost Restart RestartSec User Group WorkingDirectory Environment EnvironmentFile TimeoutStartSec TimeoutStopSec KillSignal KillMode RemainAfterExit PIDFile RuntimeDirectory StateDirectory CacheDirectory LogsDirectory StandardOutput StandardError)
32+
~w(Type ExecStart ExecStartPre ExecStartPost ExecReload ExecStop ExecStopPost Restart RestartSec User Group WorkingDirectory Environment EnvironmentFile TimeoutStartSec TimeoutStopSec KillSignal KillMode RemainAfterExit PIDFile RuntimeDirectory StateDirectory CacheDirectory LogsDirectory StandardOutput StandardError LimitNOFILE)
3333
),
3434
"Install" => MapSet.new(~w(WantedBy RequiredBy Also Alias DefaultInstance)),
3535
"Socket" =>

test/systemd/unit_file_test.exs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,17 +84,18 @@ defmodule Systemd.UnitFileTest do
8484
unit_file =
8585
UnitFile.service(
8686
unit: [description: "My app", after: ["network.target", "postgresql.service"]],
87-
service: [exec_start: "/opt/app/bin/app start", restart: :always],
87+
service: [exec_start: "/opt/app/bin/app start", restart: :always, LimitNOFILE: 1_048_576],
8888
install: [wanted_by: "multi-user.target"]
8989
)
9090

9191
assert UnitFile.to_string(unit_file) ==
92-
"[Unit]\nDescription=My app\nAfter=network.target\nAfter=postgresql.service\n[Service]\nExecStart=/opt/app/bin/app start\nRestart=always\n[Install]\nWantedBy=multi-user.target\n"
92+
"[Unit]\nDescription=My app\nAfter=network.target\nAfter=postgresql.service\n[Service]\nExecStart=/opt/app/bin/app start\nRestart=always\nLimitNOFILE=1048576\n[Install]\nWantedBy=multi-user.target\n"
9393
end
9494

9595
test "validates unit file sections and directives" do
9696
assert :ok =
97-
UnitFile.parse!("[Service]\nExecStart=/bin/true\n") |> UnitFile.validate(:service)
97+
UnitFile.parse!("[Service]\nExecStart=/bin/true\nLimitNOFILE=1048576\n")
98+
|> UnitFile.validate(:service)
9899

99100
assert {:error, [%Systemd.UnitFile.ValidationError{reason: :missing_section}]} =
100101
UnitFile.parse!("[Unit]\nDescription=Only metadata\n") |> UnitFile.validate(:service)

0 commit comments

Comments
 (0)