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.