Abych problém vyřešil v https://unix.stackexchange.com/a/446428/674, sledoval jsem https://stackoverflow.com/a/17483998/156458, ale nenastavuje limit velikosti souboru jádra?
$ sudo sh -c "ulimit -c 1024 && exec su t"
$ ulimit -c
0
-
Změní tento způsob limitní velikost souboru jádra dočasně pouze pro aktuální shell, nebo trvale pro všechny shelly všech uživatelů nebo aktuálního uživatele?
-
Aktualizace: Původní příspěvek https://stackoverflow.com/a/17483998/156458 a https://unix.stackexchange.com/a/238413/674 a https://unix.stackexchange.com/a/169035/674 vše doporučeno pomocí
sudo sh -c "ulimit -c 1024 && exec su $LOGNAME". Ale obaulimit -c 1024aexec su $LOGNAME"ovlivňuje pouze shell vytvořený pomocísudo, tak jaký je účel příkazu?exec su $LOGNAME"také nedělá nic smysluplného pro využití změněného limitu.
Poznámka: Zaměřuji se na to, proč výše uvedený způsob nefunguje, i když existují jiné způsoby, jak problém obejít:
-
Měl bych vložit příkaz, který používá novou limitní hodnotu, do
shellu provedeného sudonapř.
$ sudo sh -c "ulimit -c 1024 && sleep 100" ^Quit $ ls core - Mohl bych také zkusit upravit
/etc/security/limits.conf.
Přijatá odpověď:
Podle manuálové stránky ulimit „poskytuje kontrolu nad zdroji dostupnými pro shell a procesy, které spouští“. Tedy ulimit hodnota je platná pro aktuální shell.
Vyvoláváte ulimit v subshell, a když se ukončí, vrátíte se zpět na výchozí ulimit hodnotu.
[[email protected] ~]# ulimit -c
0
[[email protected] ~]# ulimit -c 1024
[[email protected] ~]# ulimit -c
1024