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