On Thu, 7 Nov 2002, Justin M Kuntz wrote:

> rsync -vazP /vservers/0001/ machine-b:/vservers/0001

I'm assuming you didn't recursively copy /proc across?

> pidof: can't read sid from /proc/638/stat

The reason for wanting the session ID is given here:

] * kilall5.c    Kill all processes except processes that have the
] *              same session id, so that the shell that called us
] *              won't be killed. Typically used in shutdown scripts.

The code that throws this error is:

] /* Open the status file. */
] snprintf(path, sizeof(path), "/proc/%s/stat", d->d_name);
] [...]
] /* This could be replaced by getsid(pid) */
] if (sscanf(q, "%*c %*d %*d %d", &p->sid) != 1) {
]         p->sid = 0;
]         nsyslog(LOG_ERR, "can't read sid from %s\n",
]                 path);
]         free(p);
]         continue;
] }

It is expecting to find a line like:
            v-----------v
  638 (ssh) S 123 638 456 42 [...]
            v----------------------------------v
  pid (cmd) state parent-pid group-id session-id tty

What happens if you do these:

  cat /proc/638/stat
  chcontext --ctx 1 cat /proc/638/stat

(replace `638' by the process number it is complaining about)

The strange thing is that it is not complaining that it cannot *read* the
file in the first place (eg. because it's in another context), only that the
data in it, does not match the scanf() statement above.

        -Paul
-- 
Nottingham, GB

Reply via email to