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 [EMAIL PROTECTED] 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!) -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/listinfo/samba