Version 1 of NaviServer Command Mode

Updated 2008-09-27 22:57:03 by john

Usually when you start the NaviServer it forks into the background and logs messages to the error log. You may use the -f option to start the server in the foreground and have log messages sent to stdout (your screen, perhaps).

Now you can also start the server in command mode with the -c option, in which case after the initial log messages are printed to your screen, a prompt will appear. You can use this exactly as you would a tclsh prompt -- type in Tcl commands and the result is printed back. All of the NaviServer commands are available, but unlike simply loading libnsd.so into a tclsh, you have a fully-fledged running server which is listening on ports and serving web requests.

A quick example. The server is started and two commands are issued: [ns_info threads] and [ns_info requestprocs].

  buckel@tulpe:/usr/local/ns/bin> ./nsd -c -u nsadmin -g www -t ../sample-config.tcl

  [-main-] Notice: nsmain: NaviServer/4.99.1 starting
  [-main-] Notice: nsmain: security info: uid=500, euid=500, gid=100, egid=100
  [-main-] Notice: nsmain: max files: FD_SETSIZE = 1024, rl_cur = 1024, rl_max = 1024
  [-main-] Notice: adp[server1]: mapped {GET HEAD POST} /*.adp
  [-main-] Notice: adp[server1]: mapped {GET HEAD POST} /*.u_adp
  [-main-] Notice: adp[server1]: mapped {GET HEAD POST} /*.gb_adp
  [-main-] Notice: adp[server1]: mapped {GET HEAD POST} /*.sjis_adp
  [-main-] Notice: modload: loading '/usr/local/ns/bin/nssock.so'
  [-main-] Notice: modload: loading '/usr/local/ns/bin/nslog.so'
  [-main-] Notice: nslog: opened '/usr/local/ns/servers/server1/modules/nslog/access.log'
  [-main-] Notice: conf: [ns/server/server1]enabletclpages = 0
  [-main-] Notice: nsmain: NaviServer/4.99.1 running
  [-main-] Notice: nsmain: security info: uid=500, euid=500, gid=100, egid=100
  [-sched-] Notice: sched: starting
  [-main-] Notice: nssock: listening on 10.0.0.100:8000
  [-driver-] Notice: starting
  [-driver-] Notice: driver: accepting connections

  % join [ns_info threads] \n
  -driver- -main- 1084140464 0 1119862183 p:0x40037cfb a:0x0
  -sched- -main- 1082039216 0 1119862183 p:0x4004a09a a:0x0
  -main- {} 1076887680 1 1119862183 p:0x0 a:0x0

  % join [ns_info requestprocs] \n
  server1 GET / *.u_adp inherit ns:adppage 0:0 {} {}
  server1 HEAD / *.u_adp inherit ns:adppage 0:0 {} {}
  server1 POST / *.u_adp inherit ns:adppage 0:0 {} {} 
  server1 GET / *.sjis_adp inherit ns:adppage 0:0 {} {}
  server1 HEAD / *.sjis_adp inherit ns:adppage 0:0 {} {}
  server1 POST / *.sjis_adp inherit ns:adppage 0:0 {} {}
  server1 GET / *.gb_adp inherit na:adppage 0:0 {} {}
  server1 HEAD / *.gb_adp inherit ns:adppage 0:0 {} {}
  server1 POST / *.gb_adp inherit ns:adppage 0:0 {} {}
  server1 GET / *.adp inherit ns:adppage 0:0 {} {}
  server1 HEAD / *.adp inherit ns:adppage 0:0 {} {}
  server1 POST / *.adp inherit ns:adppage 0:0 {} {}
  server1 GET / * inherit ns:fastget a:(nil)
  server1 HEAD / * inherit ns:fastget a:(nil)
  server1 POST / * inherit ns:fastget a:(nil)

  %

NB: Command Mode is great for testing and exploration. If you need to explore or control a running server in production then the control port[L1 ], which presents a shell prompt over a telnet interface, is what you are looking for.