声明:本人用的是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/$ node -v
v0.12.1
mesogene@mesogene-team:~/nodejs-workspace/$ npm -version
2.5.

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

二、Hello World程序

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

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

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

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

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

mesogene@mesogene-team:~/nodejs-workspace/$ nohup node app.js > ./log &
[]
mesogene@mesogene-team:~/nodejs-workspace/$ nohup: ignoring input and redirecting stderr to stdout mesogene@mesogene-team:~/nodejs-workspace/$ cat log
Server running on

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

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

mesogene@mesogene-team:~/nodejs-workspace/$ ps -ef | grep node
root : ? :: /sbin/mount.ntfs /dev/sdc2 /media/mesogene/Richard -o rw,nosuid,nodev,uhelper=udisks2,uid=,gid=,dmask=,fmask=
root : ? :: /sbin/mount.ntfs /dev/sdc1 /media/mesogene/Richard1 -o rw,nosuid,nodev,uhelper=udisks2,uid=,gid=,dmask=,fmask=
mesogene : pts/ :: node
mesogene : pts/ :: node app.js
mesogene : pts/ :: grep --color=auto node
mesogene@mesogene-team:~/nodejs-workspace/$ kill
mesogene@mesogene-team:~/nodejs-workspace/$

扩展: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 : ? :: /sbin/init
root : ? :: [kthreadd]
root : ? :: [ksoftirqd/]
root : ? :: [kworker/:]
root : ? :: [kworker/:0H]

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

mesogene@mesogene-team:~$ ps ax
PID TTY STAT TIME COMMAND
? Ss : /sbin/init
? S : [kthreadd]
? S : [ksoftirqd/]
? S : [kworker/:]
? S< : [kworker/:0H]
? S : [rcu_sched]
? S : [rcuos/]
? S : [rcuos/]

二、kill与killall(结束进程)

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

mesogene@mesogene-team:~$ kill 

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

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

Nodejs随笔(一):Hello World!的更多相关文章

  1. Nodejs随笔(二):像可执行shell脚本一样,运行node 脚本!

    在每次编写nodejs脚本的时候,只需在程序的开头加上如下代码(写过shell脚本的人应该很熟悉): #!/usr/local/bin/node 同时,修改文件权限为可执行: mesogene@mes ...

  2. Nodejs随笔(三):全局对象之process

    process是全局对象,在任何地方都可以访问,而且它是EventEmitter的一个实例(关于EventEmitter后面会提到). process对象对一些标准的输入输出流进行了封装,如stdin ...

  3. Nodejs随笔(三):全局对象之global

    首先,进入node REPL: mesogene@mesogene-team:~$ node > 查看global对象,发现其他全局对象(包括Buffer.require对象)以及全局方法都包含 ...

  4. 进阶之初探nodeJS

    一.前言 在"初探nodeJS"随笔中,我们对于node有了一个大致地了解,并在最后也通过一个示例,了解了如何快速地开启一个简单的服务器. 今儿,再次看了该篇随笔,发现该随笔理论知 ...

  5. nodejs调试工具node-inspector入门随笔

    最近打算玩玩node. 众所周知,在前端,调试代码有一众天然好工具——浏览器!特别是 chrome,使得 jser 们如鱼得水,玩得风生水起.但是到了node,情况就不一样了,js 代码不再运行在单纯 ...

  6. nodejs学习随笔

    <一> 简述nodejs (社区:www.npmjs.com)可查找一些第三方模块. nodejs是可以让js运行在浏览器之外的服务器端的平台,实现了文件系统.模块.包.操作系统API.网 ...

  7. Nodejs初识随笔

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. Node.js 单线程运行,不 ...

  8. nodejs连接mysql并进行简单的增删查改

    最近在入门nodejs,正好学习到了如何使用nodejs进行数据库的连接,觉得比较重要,便写一下随笔,简单地记录一下 使用在安装好node之后,我们可以使用npm命令,在项目的根目录,安装nodejs ...

  9. nodejs + socket.io + redis 新手上路

    最近要更新网站架构了,决定转入 nodejs + socket.io + redis 方式. 战斗刚开始: 网上的文章太松散,我根据各个网友的分享进行整理 ,让大家可以方便上手. 进入node.js之 ...

随机推荐

  1. thinkphp 表名注意

    $db = "DomainInfo";//查找相关任务的结果表 $result = M($db); $rescc = $result->select(); var_dump( ...

  2. hdu 4393 Throw nails(STL之优先队列)

    Problem Description The annual school bicycle contest started. ZL is a student in this school. He is ...

  3. poj 2393 Yogurt factory(dp+贪心)

    奶牛们建了一家酸奶厂,在N周内每周需要出货Y_i单位酸奶,第i周成本为C_i,储存费为每周S.求总体最低成本. 贪心策略是维持每周的最低单位成本,每周可能用上周剩下的,也可能生产新的.于是该周单位成本 ...

  4. 最新的Android SDK安装攻略(动作要快,来晚就失效了)

    Android的环境搭建好折腾,光是下载Android SDK就折腾了好几天, 直接连接,速度接近于0,一行行红色的refused, 然后找软件翻*墙成功(不推荐,软件可能有后门) 但是...速度比老 ...

  5. css3 transiton

    div { width:100px; height:100px; background:yellow; transition-property:width; transition-duration:1 ...

  6. Backup Exec Inventory 与Catalog的含义(转载)

    编录:即catalog,就是让磁带机读取磁带之前所备份过的内容的目录列表,可以让你知道之前做过什么备份,以及备份时间等详细信息. 列清单:inventory,跟编录是不同,inventory是查询磁带 ...

  7. How to recover a skipped tablespace after an incomplete recovery with resetlogs? [ID 1561645.1]

    n this Document   Goal   Solution This document is being delivered to you via Oracle Support's Rapid ...

  8. Swift语法基础入门四(构造函数, 懒加载)

    Swift语法基础入门四(构造函数, 懒加载) 存储属性 具备存储功能, 和OC中普通属性一样 // Swfit要求我们在创建对象时必须给所有的属性初始化 // 如果没办法保证在构造方法中初始化属性, ...

  9. 南阳师范学院ACM集训队博客使用方法

    南阳师范学院ACM集训队博客使用方法 为方便大家交流,我们使用的是同一个用户名和密码,所以请不要随意修改用户名和密码,不然大家都登不上了,谢谢! 首先进入主页:http://www.cnblogs.c ...

  10. ps切片

    (一)我们需要把中间的图切成一块一块. 首先在放入PS中: [视图]——>[标尺],为的是能够精确的切图: 标尺打开后上下左右都可以往图中拉线,我们在这边叫作(参考线),然后使用左边的[放大镜] ...