pazravy program
Alexandr Malusek
malusek na hroch.ujf.cas.cz
Sobota Prosinec 12 21:53:05 CET 1998
satko na quanto.uniag.sk (Jan Satko) writes:
> ono to asi aj bude v tom -v , lenze ako ho zmenim ?
> ...
> a ked dam: ulimit -v 30000
> ulimit: cannot raise limit: Invalid argument
V bash-1.14.7-11 z RH 5.1 "-v" skutecne nefunguje. Dival jsem se na to
pres strace a chova se to divne. Nasledujici priklad je OK:
$ strace bash -c "ulimit -m 10000"
...
getrlimit(RLIMIT_RSS, {rlim_cur=RLIM_INFINITY, rlim_max=RLIM_INFINITY}) = 0
setrlimit(RLIMIT_RSS, {rlim_cur=10000*1024, rlim_max=RLIM_INFINITY}) = 0
V pripade "-v" se ale novy limit ani nepokusi nastavit. Mozna pomuze
zminovany novy bash. Pripadne muzete zkusit experimentovat s
nasledujicim bastlem:
$ cat limasbash.c
#include <stdlib.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/resource.h>
struct rlimit rlim;
int
main(int argc, char *argv[])
{
char **newargv = argv+2;
rlim.rlim_cur = atoi(argv[1]);
rlim.rlim_max = atoi(argv[2]);
newargv[0] = "/bin/bash";
setrlimit (RLIMIT_AS, &rlim);
execv("/bin/bash", newargv);
return 0;
}
Limit RLIMIT_AS (adress space limit) v man page k setrlimit zminovan
neni, ale v /usr/include/asm/resource.h uveden je.
Program by mel fungovat tak, ze nastavi RLIMIT_AS podle 1. a
2. argumentu prikazove radky, a pak zavola bash, kteremu preda
zbyvajici argumenty, pricemz bash zdedi nastaveni RLIMIT_AS. Priklad:
$ ./limasbash 1500000 1500000 -i # spusti limitovany interaktivni shell
$ ./limasbash 1500000 1500000 -c "echo hello" # provede prikaz
Za spravnost nerucim, k dokonalosti to ma velmi daleko.
--
A. Malusek (malusek na ujf.cas.cz)
UJF AV CR
Další informace o konferenci Linux