Skip to main content

Problem:

'fuser' is a standard UNIX command which displays the PIDs of processes using the specified files or file  systems.   In the default display mode, each file name is followed by a  letter denoting the type of access:

              c      current directory.

              e      executable being run.

              f      open file. f is omitted in default display mode.

              r      root directory.

              m      mmap'ed file or shared library.

There are various options which can be set to return desired results:

       -a     Show  all  files specified on the command line. By default, only

              files that are accessed by at least one process are shown.

       -c     Same as -m option, used for POSIX compatibility.

       -f     Silently ignored, used for POSIX compatibility.

       -k     Kill processes accessing the file. Unless changed with  -signal,

              SIGKILL  is  sent.  An fuser process never kills itself, but may

              kill other fuser processes. The effective user ID of the process

              executing  fuser is set to its real user ID before attempting to

              kill.

       -i     Ask the user for confirmation before  killing  a  process.  This

              option is silently ignored if -k is not present too.

       -l     List all known signal names.

       -m     name specifies a file on a mounted file system or a block device

              that is mounted. All processes accessing files on that file sys-

              tem  are  listed.  If a directory file is specified, it is auto-

              matically changed to name/. to use any file system that might be

              mounted on that directory.

       -n space

              Select a different name space. The name spaces file (file names,

              the default), udp (local UDP ports), and tcp (local  TCP  ports)

              are  supported.   For  ports, either the port number or the sym-

              bolic name can be specified.  If  there  is  no  ambiguity,  the

              shortcut notation name/space (e.g. name/proto) can be used.

       -s     Silent  operation.  -u and -v are ignored in this mode.  -a must

              not be used with -s.

       -signal

              Use the specified signal instead of SIGKILL  when  killing  pro-

              cesses.  Signals  can be specified either by name (e.g. -HUP) or

              by number (e.g. -1).  This option is silently ignored if the  -k

              option is not used.

       -u     Append the user name of the process owner to each PID.

       -v     Verbose mode. Processes are shown in a ps-like style. The fields

              PID, USER and COMMAND are similar to ps. ACCESS  shows  how  the

              process  accesses the file. If the access is by the kernel (e.g.

              in the case of a mount point, a  swap  file,  etc.),  kernel  is

              shown instead of the PID.

       -V     Display version information.

       -4     Search only for IPv4 sockets.  This option must not be used with

              the -6 option and only has an effect with the tcp and udp names-

              paces.

       -6     Search only for IPv6 sockets.  This option must not be used with

              the -4 option and only has an effect with the tcp and udp names-

              paces.

       -      Reset all options and set the signal back to SIGKILL.

However, there is a difference in behaviour when using 'fuser -u' on .GNT code in Object Cobol Developer Suite and Server Express when running on an HP-UX platform.  In Object Cobol Developer Suite 'fuser -u' would return a list of users using the file in question.  However, in Server Express the output is not forthcoming despite users using the file.

So why such a difference in behaviour between the two products?

Resolution:

The reason is an historical one.

Object Cobol Developer Suite on HP-UX PA-RISC used an NCG (Native Code Generator) which was actually written by HP : .GNT were actually shared objects.

In Server Express the NCG is Micro Focus' own and .GNT files on PA-RISC are also Micro Focus' own format of .GNT (as they are on every other platform).  

So when a .GNT program is loaded, the file is opened, it is read into memory and processed, and the file closed. Open files are a limited resource, so there is no point in keeping a file opened unnecessarily. For this reason there is a difference in behaviour.

Old KB# 2255