Perhaps I can ask a slightly different question? Is there some kind of
test I can do on a hung process so I can determine whether it's active
or not, in a script? The output of strace is below but it doesn't mean
much to me I'm afraid. Is there a straight forward difference between
strace for a "real" connection and one of my hung ones that I can use
to
manually kill them?
Many thanks,
Steve Rippl
Woodland School District
> -----Original Message-----
> From: Rippl, Steve
> Sent: Tuesday, October 21, 2008 10:26 PM
> To: 'Jeremy Allison'
> Cc: samba@lists.samba.org
> Subject: RE: [Samba] Closing sessions and smbstatus
>
> > On Mon, Oct 20, 2008 at 12:52:57PM -0700, Steve Rippl wrote:
> >
> > > But checking our server I find that the processes DO still exist!
So> > > I'm getting a user session in smbstatus with a specific PID
and
when I> > > ps -ef | grep PID there is the smbd process still running, yet
the
> user
> > > has long since logged out (days ago)?! It's not just that
the
.tbd> file
> > > hasn't been updated, it's that the /usr/local/bin/smbd
process is
> still
> > > running. A restart of Samba clears them all up immediately, but
why> are
> > > they hanging around when the client is gone? Is this just
happening> to
> > > me on our particular setup or is this normal behavior?
> >
> > No, that's not normal behavior, but it does explain why
> > the session id's are hanging around. Once the client
> > terminates the TCP session the smbd should die (and
> > clean up all resources such as session id's etc.).
> >
> > When you find a process in this state attach using
> > strace -p <pid> (on Linux) to see what it's up to.
> >
> > Jeremy.
>
> So after one day I have ~50 left-over sessions. Running strace as
above I> seem to usually get...
>
> select(32, [5 23 31], [], NULL, {43, 450000}) = 0 (Timeout)
> gettimeofday({1224652458, 61107}, NULL) = 0
> geteuid() = 0
> getegid() = 0
> setgroups(0, []) = 0
> setresgid(4294967295, 0, 4294967295) = 0
> getegid() = 0
> setresuid(0, 0, 4294967295) = 0
> geteuid() = 0
> write(23, "\205\0\0\0", 4) = 4
> gettimeofday({1224652458, 61549}, NULL) = 0
> geteuid() = 0
> fstat(25, {st_mode=S_IFREG|0644, st_size=894111, ...}) = 0
> gettimeofday({1224652458, 61698}, NULL) = 0
> select(32, [5 23 31], [], NULL, {60, 0} <unfinished ...>
>
> although a couple of time I got more go by...
>
> ...[cut-off]...
> getegid() = 0
> setgroups(0, []) = 0
> setresgid(4294967295, 0, 4294967295) = 0
> getegid() = 0
> setresuid(0, 0, 4294967295) = 0
> geteuid() = 0
> fcntl(8, F_SETLKW, {type=F_RDLCK, whence=SEEK_SET, start=244, len=1})
= 0> fcntl(8, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=244, len=1})
= 0> stat("/etc/pam.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> open("/etc/pam.d/samba", O_RDONLY) = 25
> fstat(25, {st_mode=S_IFREG|0644, st_size=69, ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) > 0x7f2f8db98000> read(25, "@include common-auth\n@include co"..., 4096) = 69
> stat("/etc/pam.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> open("/etc/pam.d/common-auth", O_RDONLY) = 29
> fstat(29, {st_mode=S_IFREG|0644, st_size=484, ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) > 0x7f2f8db97000> read(29, "#\n# /etc/pam.d/common-auth - aut"..., 4096) = 484
> open("/lib/security/pam_unix.so", O_RDONLY) = 30
> read(30,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260*\0\0"...,
> 832) = 832
> fstat(30, {st_mode=S_IFREG|0644, st_size=50568, ...}) = 0
> mmap(NULL, 2195080, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,
30, 0)> = 0x7f2f892fd000
> mprotect(0x7f2f89309000, 2093056, PROT_NONE) = 0
> mmap(0x7f2f89508000, 4096, PROT_READ|PROT_WRITE,
> MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 30, 0xb000) = 0x7f2f89508000
> mmap(0x7f2f89509000, 48776, PROT_READ|PROT_WRITE,
> MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2f89509000
> close(30) = 0
> open("/etc/ld.so.cache", O_RDONLY) = 30
> fstat(30, {st_mode=S_IFREG|0644, st_size=45774, ...}) = 0
> mmap(NULL, 45774, PROT_READ, MAP_PRIVATE, 30, 0) = 0x7f2f8db8b000
> close(30) = 0
> access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file
or
> directory)
> open("/lib/libselinux.so.1", O_RDONLY) = 30
> read(30,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240Q\0\0"...,
> 832) = 832
> fstat(30, {st_mode=S_IFREG|0644, st_size=109368, ...}) = 0
> mmap(NULL, 2209176, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,
30, 0)> = 0x7f2f888d4000
> mprotect(0x7f2f888ed000, 2097152, PROT_NONE) = 0
> mmap(0x7f2f88aed000, 8192, PROT_READ|PROT_WRITE,
> MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 30, 0x19000) = 0x7f2f88aed000
> mmap(0x7f2f88aef000, 1432, PROT_READ|PROT_WRITE,
> MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2f88aef000
> close(30) = 0
> open("/etc/selinux/config", O_RDONLY) = -1 ENOENT (No such file
or
> directory)
> statfs("/selinux", 0x7fff960e0250) = -1 ENOENT (No such file
or
> directory)
> open("/proc/mounts", O_RDONLY) = 30
> fstat(30, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) > 0x7f2f8db8a000> read(30, "rootfs / rootfs rw 0 0\nnone /sys"..., 1024) = 1024
> read(30, "dered 0 0\n/dev/mapper/group-mate"..., 1024) = 649
> read(30, "", 1024) = 0
> close(30) = 0
> munmap(0x7f2f8db8a000, 4096) = 0
> munmap(0x7f2f8db8b000, 45774) = 0
> open("/lib/security/pam_smbpass.so", O_RDONLY) = -1 ENOENT (No
such
file> or directory)
> read(29, "", 4096) = 0
> close(29) = 0
> munmap(0x7f2f8db97000, 4096) = 0
> stat("/etc/pam.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> open("/etc/pam.d/common-account", O_RDONLY) = 29
> fstat(29, {st_mode=S_IFREG|0644, st_size=392, ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) > 0x7f2f8db97000> read(29, "#\n# /etc/pam.d/common-account - "..., 4096) = 392
> read(29, "", 4096) = 0
> close(29) = 0
> munmap(0x7f2f8db97000, 4096) = 0
> stat("/etc/pam.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> open("/etc/pam.d/common-session", O_RDONLY) = 29
> fstat(29, {st_mode=S_IFREG|0644, st_size=372, ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) > 0x7f2f8db97000> read(29, "#\n# /etc/pam.d/common-session - "..., 4096) = 372
> read(29, "", 4096) = 0
> close(29) = 0
> munmap(0x7f2f8db97000, 4096) = 0
> read(25, "", 4096) = 0
> close(25) = 0
> munmap(0x7f2f8db98000, 4096) = 0
> open("/etc/pam.d/other", O_RDONLY) = 25
> fstat(25, {st_mode=S_IFREG|0644, st_size=520, ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) > 0x7f2f8db98000> read(25, "#\n# /etc/pam.d/other - specify t"..., 4096) = 520
> stat("/etc/pam.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> open("/etc/pam.d/common-auth", O_RDONLY) = 29
> fstat(29, {st_mode=S_IFREG|0644, st_size=484, ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) > 0x7f2f8db97000> read(29, "#\n# /etc/pam.d/common-auth - aut"..., 4096) = 484
> read(29, "", 4096) = 0
> close(29) = 0
> munmap(0x7f2f8db97000, 4096) = 0
> stat("/etc/pam.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> open("/etc/pam.d/common-account", O_RDONLY) = 29
> fstat(29, {st_mode=S_IFREG|0644, st_size=392, ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) > 0x7f2f8db97000> read(29, "#\n# /etc/pam.d/common-account - "..., 4096) = 392
> read(29, "", 4096) = 0
> close(29) = 0
> munmap(0x7f2f8db97000, 4096) = 0
> stat("/etc/pam.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> open("/etc/pam.d/common-password", O_RDONLY) = 29
> fstat(29, {st_mode=S_IFREG|0644, st_size=1571, ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) > 0x7f2f8db97000> read(29, "#\n# /etc/pam.d/common-password -"..., 4096) = 1571
> read(29, "", 4096) = 0
> close(29) = 0
> munmap(0x7f2f8db97000, 4096) = 0
> stat("/etc/pam.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> open("/etc/pam.d/common-session", O_RDONLY) = 29
> fstat(29, {st_mode=S_IFREG|0644, st_size=372, ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) > 0x7f2f8db97000> read(29, "#\n# /etc/pam.d/common-session - "..., 4096) = 372
> read(29, "", 4096) = 0
> close(29) = 0
> munmap(0x7f2f8db97000, 4096) = 0
> read(25, "", 4096) = 0
> close(25) = 0
> munmap(0x7f2f8db98000, 4096) = 0
> getuid() = 0
> gettimeofday({1224651679, 698762}, NULL) = 0
> stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...})
= 0
> sendto(19, "<86>Oct 21 22:01:19 smbd: pam_un"..., 84,
MSG_NOSIGNAL,
NULL,> 0) = 84
> munmap(0x7f2f892fd000, 2195080) = 0
> munmap(0x7f2f888d4000, 2209176) = 0
> fcntl(8, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=244, len=1})
= 0> fcntl(8, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=119392,
len=1}) > 0> fcntl(8, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=119392,
len=1}) > 0> fcntl(8, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=164, len=1})
= 0> fcntl(8, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=164, len=1})
= 0> fcntl(8, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=244, len=1})
= 0> write(23,
"\0\0\0\'\377SMBt\0\0\0\0\210\1\310\0\0\0\0\0\0\0\0\0\0"...,
43)> = 43
> gettimeofday({1224651679, 699806}, NULL) = 0
> select(32, [5 23 31], [], NULL, {60, 0}) = 1 (in [23], left {60, 0})
> read(23, "\0\0\0#", 4) = 4
> read(23,
"\377SMBq\0\0\0\0\30\7\310\0\0\0\0\0\0\0\0\0\0\0\0\3\0\377"...,> 35) = 35
> geteuid() = 0
> getegid() = 0
> setgroups(0, []) = 0
> setresgid(4294967295, 0, 4294967295) = 0
> getegid() = 0
> setresuid(0, 0, 4294967295) = 0
> geteuid() = 0
> chdir("/srv/materials") = 0
> geteuid() = 0
> getegid() = 0
> setgroups(0, []) = 0
> setresgid(4294967295, 0, 4294967295) = 0
> getegid() = 0
> setresuid(0, 0, 4294967295) = 0
> geteuid() = 0
> gettimeofday({1224651679, 700334}, NULL) = 0
> stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...})
= 0
> stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...})
= 0
> geteuid() = 0
> write(26, "[2008/10/21 22:01:19, 1] smbd/se"..., 57) = 57
> geteuid() = 0
> write(26, " 10.42.70.34 (10.42.70.34) clos"..., 67) = 67
> fcntl(9, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=300, len=1})
= 0> fcntl(9, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=992424,
len=1}) > 0> fcntl(9, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=992424,
len=1}) > 0> fcntl(9, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=164, len=1})
= 0> fcntl(9, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=164, len=1})
= 0> fcntl(9, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=300, len=1})
= 0> chdir("/") = 0
> geteuid() = 0
> getegid() = 0
> setgroups(0, []) = 0
> setresgid(4294967295, 0, 4294967295) = 0
> getegid() = 0
> setresuid(0, 0, 4294967295) = 0
> geteuid() = 0
> write(23,
"\0\0\0#\377SMBq\0\0\0\0\210\1\310\0\0\0\0\0\0\0\0\0\0\0"...,> 39) = 39
> gettimeofday({1224651679, 701084}, NULL) = 0
> select(32, [5 23 31], [], NULL, {60, 0} <unfinished ...>
> Process 7683 detached
>
>
> Any help would be much appreciated as I'm relying on accurate sessions
in> order to be able to have accurate records of who's on where and when
> (student accountability!)