声明:本人用的是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. chrome console 调试xpath

    chrome console F12->$x(“//title”) [<title>Online Tools for Software Developers (Free)</t ...

  2. poj 2531 Network Saboteur(经典dfs)

    题目大意:有n个点,把这些点分别放到两个集合里,在两个集合的每个点之间都会有权值,求可能形成的最大权值.   思路:1.把这两个集合标记为0和1,先默认所有点都在集合0里.             2 ...

  3. [转!]jQuey中的return false作用是什么

    jQuey中的return false作用是什么: 在众多的语句中都有return false的使用,当然对于熟悉它的开发者来说,当然是知根知底,知道此语句的作用,当然也就知道在什么时候使用此语句,不 ...

  4. OC基础4:类和方法

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.类的声明(@interface)要放在 ...

  5. CSS实现限制字数功能

    <div style="width:200px; white-space:nowrap;overflow:hidden;text-overflow:ellipsis; border:1 ...

  6. 响应式流布局插件DyLay

    jQuery插件-Dylay,流布局我们前面介绍过很多,但这个流布局jQuery插件不同的是它的动画效果很不错,大家可以尝试使用下.另外<有用的jQuery布局插件推荐>这篇文章中有好几个 ...

  7. Java基础笔记-String类

    String 类(被final修饰) 字符串是一种特殊的对象,一旦字符串被初始化就不可以被改变了.(内容不变) 例如: String  s = “abc”; String  s1 = new Stri ...

  8. ASP.Net【如何合并DataTable,并且去重复方法】

    虽然DataTable.Merge可以很好的实现,但以下代码写出来更好理解 DataTable DataTable1 = new DataTable(); DataTable DataTable2 = ...

  9. Google Map 根据坐标 获取地址信息

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.X ...

  10. EXT属性

    Extjs & Ext.Net 弹出整个浏览器对话框的方法 top.Ext.Msg.alert("值"); top.Ext.Msg.confirm("值" ...