Nodejs随笔(一):Hello World!

声明:本人用的是Ubuntu 14.04 LTS 系统。

一、Nodejs安装:

  <1>直接apt-get安装,最简单:sudo apt-get install nodejs

  <2>编译安装

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build_essential openssl libssl-dev pkg-config
wget http://nodejs.org/dist/v0.12.2/node-v0.12.2-linux-x64.tar.gz
tar -zxvf node-v0.12.2-linux-x64.tar.gz
cd node-v0.12.2-linux-x64
./configure
make
sudo make install

  验证是否安装成功:

mesogene@mesogene-team:~/nodejs-workspace/01$ node -v
v0.12.1
mesogene@mesogene-team:~/nodejs-workspace/01$ npm -version
2.5.1

参考https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

二、Hello World程序

mesogene@mesogene-team:~/nodejs-workspace/01$ cat app.js 
var http = require(http);
http.createServer(function(req, res){
    // content header
    res.writeHead(200, { Content-Type:text/html });
    // write message adn signal communication is complete
    res.end(Hello World!);
}).listen(process.env.PORT || 8124);
// }).listen(8124);

console.log(Server running on 8124);

  使用node app.js后,可在浏览器地址栏输入:http://localhost:8124/ 以查看结果。

  如果直接在命令行使用node app.js,它会占用我一个命令行窗口。有时,我不想其占用那个窗口,我们可以将node程序转为后台运行,那就的使用nohup命令来帮忙了。用法如下:

mesogene@mesogene-team:~/nodejs-workspace/01$ nohup node app.js &
[2] 7451
[1]   Terminated              nohup node app.js > ./log
mesogene@mesogene-team:~/nodejs-workspace/01$ nohup: ignoring input and appending output to ‘nohup.out’

mesogene@mesogene-team:~/nodejs-workspace/01$ 

  或者:将输入重定向到当前目录的log文件中。

mesogene@mesogene-team:~/nodejs-workspace/01$ nohup node app.js > ./log &
[1] 7422
mesogene@mesogene-team:~/nodejs-workspace/01$ nohup: ignoring input and redirecting stderr to stdout

mesogene@mesogene-team:~/nodejs-workspace/01$ cat log 
Server running on 8124

  问题来了,我如何杀死正在运行的node app.js呢?

  当然,需借助GNU/Linux shell命令的帮忙:ps和kill(nohup也是GNU/Linux shell命令)。

mesogene@mesogene-team:~/nodejs-workspace/01$ ps -ef | grep node
root      2830     1  0 09:53 ?        00:00:00 /sbin/mount.ntfs /dev/sdc2 /media/mesogene/Richard -o rw,nosuid,nodev,uhelper=udisks2,uid=1000,gid=1000,dmask=0077,fmask=0177
root      2875     1  0 09:53 ?        00:00:00 /sbin/mount.ntfs /dev/sdc1 /media/mesogene/Richard1 -o rw,nosuid,nodev,uhelper=udisks2,uid=1000,gid=1000,dmask=0077,fmask=0177
mesogene  3628  3590  0 09:54 pts/0    00:00:00 node
mesogene  7451  7244  0 10:30 pts/27   00:00:00 node app.js
mesogene  7468  7244  0 10:32 pts/27   00:00:00 grep --color=auto node
mesogene@mesogene-team:~/nodejs-workspace/01$ kill 7451
mesogene@mesogene-team:~/nodejs-workspace/01$ 

扩展:ps与kill命令

一、ps命令比较复杂,用Unix、BSD和GNU三种使用风格,下面主要列出简单用法,下一次单独写ps用法。以下是ps的两种常用方法:

  ps -ef(Unix风格),UID代表:启动进程的用户、PID:进程号、PPID:父进程号、C:进程生命周期CPU利用率...

mesogene@mesogene-team:~$ ps -ef 
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 09:52 ?        00:00:01 /sbin/init
root         2     0  0 09:52 ?        00:00:00 [kthreadd]
root         3     2  0 09:52 ?        00:00:00 [ksoftirqd/0]
root         4     2  0 09:52 ?        00:00:00 [kworker/0:0]
root         5     2  0 09:52 ?        00:00:00 [kworker/0:0H]

  ps ax(BSD风格)输出的第一列是ProcessID即PID,进程号。第三列是进程当前状态(S代表睡眠,SW代表在睡眠和等待,R代表在运行中)

mesogene@mesogene-team:~$ ps ax  
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:01 /sbin/init
    2 ?        S      0:00 [kthreadd]
    3 ?        S      0:00 [ksoftirqd/0]
    4 ?        S      0:00 [kworker/0:0]
    5 ?        S<     0:00 [kworker/0:0H]
    7 ?        S      0:01 [rcu_sched]
    8 ?        S      0:00 [rcuos/0]
    9 ?        S      0:00 [rcuos/1]

二、kill与killall(结束进程)

kill使用方法是:kill  [PID],kill只能通过进程号PID结束进程。

mesogene@mesogene-team:~$ kill 7422

killall使用方法:killall [ProcessName],killall只能通过进程名来结束进程。killall支持通配符。

mesogene@mesogene-team:~$ killall http*      #结束所有以http开头的进程。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。