• Posts tagged "command"

Blog Archives

Commander写自己的Nodejs命令

从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发。Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎。chrome浏览器就基于V8,同时打开20-30个网页都很流畅。Nodejs标准的web开发框架Express,可以帮助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低。非常适合小型网站,个性化网站,我们自己的Geek网站!!

关于作者

  • 张丹(Conan), 程序员Java,R,PHP,Javascript
  • weibo:@Conan_Z
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/nodejs-commander/

commander

前言

在使用Nodejs过程中,有很多包都支持全局安装,然后提供一个命令,然后在命令行我们就可以完成一些任务,像 express, grunt, bower, yeoman, reap, karma, requirejs 等。有时候,我们也需要自己开发这样的命令行工具。

commander.js,可以帮助我们简化命令行的开发。

目录

  1. commander介绍
  2. commander安装
  3. commander的API
  4. 开发自定义的命令
  5. 发布为运行命令

1. commander介绍

commander是一个轻巧的nodejs模块,提供了用户命令行输入和参数解析强大功能。commander源自一个同名的Ruby项目。

commander的特性:

  • 自记录代码
  • 自动生成帮助
  • 合并短参数(“ABC”==“-A-B-C”)
  • 默认选项
  • 强制选项​​
  • 命令解析
  • 提示符

2. commander安装

我的系统环境

  • win7 64bit
  • Nodejs:v0.10.5
  • Npm:1.2.19

安装commander


~ D:\workspace\javascript>mkdir nodejs-commander && cd nodejs-commander
~ D:\workspace\javascript\nodejs-commander>npm install commander
npm http GET https://registry.npmjs.org/commander
npm http 304 https://registry.npmjs.org/commander
commander@2.0.0 node_modules\commander

编写一个简单的例子:增加文件app.js


~ vi app.js

var program = require('commander');

program
    .version('0.0.1')
    .option('-p, --peppers', 'Add peppers')
    .option('-P, --pineapple', 'Add pineapple')
    .option('-b, --bbq', 'Add bbq sauce')
    .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')
    .parse(process.argv);

console.log('you ordered a pizza with:');
if (program.peppers) console.log('  - peppers');
if (program.pineapple) console.log('  - pineapple');
if (program.bbq) console.log('  - bbq');
console.log('  - %s cheese', program.cheese);

命令行输入测试:

无参数


~ D:\workspace\javascript\nodejs-commander>node app.js
you ordered a pizza with:
  - marble cheese

一个参数


~ D:\workspace\javascript\nodejs-commander>node app.js -c
you ordered a pizza with:
  - marble cheese

多个参数


~ D:\workspace\javascript\nodejs-commander>node app.js -cbp
you ordered a pizza with:
  - peppers
  - bbq
  - marble cheese

help


~ D:\workspace\javascript\nodejs-commander>node app.js --help

  Usage: app.js [options]
  Options:
    -h, --help           output usage information
    -V, --version        output the version number
    -p, --peppers        Add peppers
    -P, --pineapple      Add pineapple
    -b, --bbq            Add bbq sauce
    -c, --cheese [type]  Add the specified type of cheese [marble]

Version


~ D:\workspace\javascript\nodejs-commander>node app.js -V
0.0.1

3. commander的API

  • Option(): 初始化自定义参数对象,设置“关键字”和“描述”
  • Command(): 初始化命令行参数对象,直接获得命令行输入
  • Command#command(): 定义一个命令名字
  • Command#action(): 注册一个callback函数
  • Command#option(): 定义参数,需要设置“关键字”和“描述”,关键字包括“简写”和“全写”两部分,以”,”,”|”,”空格”做分隔。
  • Command#parse(): 解析命令行参数argv
  • Command#description(): 设置description值
  • Command#usage(): 设置usage值

请参考API的官方例子:https://github.com/visionmedia/commander.js/tree/master/examples

4. 开发自定义的命令

需求描述:设计一个服务器启动命令,包括自命令:指定部署节点,配置选择:部署目录,部署配置文件,允许的IP列表,出始种子值,计算的阈值区间。

新建文件:myServer.js


~ vi myServer.js

var program = require('commander');

function range(val) {
return val.split('..').map(Number);
}

function list(val) {
return val.split(',');
}

program
.version('0.0.1')
.usage('test')
.option('-C, --chdir [value]', '设置服务器节点','/home/conan/server')
.option('-c, --config [value]', '设置配置文件','./deploy.conf')
.option('-m, --max <n>', '最大连接数', parseInt)
.option('-s, --seed <n>', '出始种子', parseFloat)
.option('-r, --range <a>..<b>', '阈值区间', range)
.option('-l, --list <items>', 'IP列表', list)

program
.command('deploy <name>')
.description('部署一个服务节点')
.action(function(name){
console.log('Deploying "%s"', name);
});

program.parse(process.argv);

console.log(' chdir - %s ', program.chdir);
console.log(' config - %s ', program.config);
console.log(' max: %j', program.max);
console.log(' seed: %j', program.seed);
program.range = program.range || [];
console.log(' range: %j..%j', program.range[0], program.range[1]);
console.log(' list: %j', program.list);

查看帮助信息


~ D:\workspace\javascript\nodejs-commander>node myServer.js -h

Usage: myServer.js test

Commands:

deploy <name> 部署一个服务节点

Options:

-h, --help output usage information
-V, --version output the version number
-C, --chdir [value] 设置服务器节点
-c, --config [value] 设置配置文件
-m, --max <n> 最大连接数
-s, --seed <n> 出始种子
-r, --range <a>..<b> 阈值区间
-l, --list <items> IP列表

通过命令行启动:


~ D:\workspace\javascript\nodejs-commander>node myServer.js -c /deploy/c1/config.conf -m 20 -s 19.1 -r 12..101 -l 192.168.1.1,192.168.1.2,192.168.1.3 deploy server1

Deploying "server1"
 chdir - /home/conan/server
 config - /deploy/c1/config.conf
 max: 20
 seed: 19.1
 range: 12..101
 list: ["192.168.1.1","192.168.1.2","192.168.1.3"]

我们按照需求,设计了一个自定义的服务器的启动命令。

5. 发布为运行命令

其实就是简单地,把myServer.js改写一下。定义启动脚本:

#!/usr/bin/env node

新建命令文件bin/myServer


~ D:\workspace\javascript\nodejs-commander>mkdir bin
~ vi myServer

#!/usr/bin/env node

var program = require('commander');

function range(val) {
    return val.split('..').map(Number);
}

function list(val) {
    return val.split(',');
}

program
    .version('0.0.1')
    .usage('test')
    .option('-C, --chdir [value]', '设置服务器节点','/home/conan/server')
    .option('-c, --config [value]', '设置配置文件','./deploy.conf')
    .option('-m, --max ', '最大连接数', parseInt)
    .option('-s, --seed ', '出始种子', parseFloat)
    .option('-r,--range <a>..<b>', '阈值区间', range)
    .option('-l, --list ', 'IP列表', list)

program
    .command('deploy ')
    .description('部署一个服务节点')
    .action(function(name){
        console.log('Deploying "%s"', name);
    });

program.parse(process.argv);

console.log(' chdir - %s ', program.chdir);
console.log(' config - %s ', program.config);
console.log(' max: %j', program.max);
console.log(' seed: %j', program.seed);
program.range = program.range || [];
console.log(' range: %j..%j', program.range[0], program.range[1]);
console.log(' list: %j', program.list);

以命令方式运行


~ D:\workspace\javascript\nodejs-commander>node bin\myServer -c /deploy/c1/config.conf -m 20 -s 19.1 -r 12..101 -l 192.168
.1.1,192.168.1.2,192.168.1.3 deploy server1

Deploying "server1"
 chdir - /home/conan/server
 config - /deploy/c1/config.conf
 max: 20
 seed: 19.1
 range: 12..101
 list: ["192.168.1.1","192.168.1.2","192.168.1.3"]

转载请注明出处:
http://blog.fens.me/nodejs-commander/

打赏作者

了解google的指令集

我的博客我的SEO系列文章,将介绍如何利用搜索引擎优化技术,来提高我的博客的排名,一方面把知识分享给更多的人,另一方面通过网站流量做些转化的尝试。

写博客文章已经有3个月,70篇博文,9大系列,覆盖R语言,Hadoop,RHadoop,NoSQL,MongoDB,Ubuntu,VPS,NodeJS 等领域。 有一部分文章已经被google和baidu收录,并且自然搜索排名的位置比较靠前。通过保证文章的质量,提高自然搜索的排名,是没有捷径的。但由于博客没有做任何推广,所以PR一直是0,搜索引擎速带来的流量也是非常有限的。优化必然带来提升。

做IT技术不仅要扎根深入,广度也要有所积累。所以今天就开始自己动手,优化自己的博客,让网站流量提高20倍吧…..

关于作者:

  • 张丹(Conan), 程序员Java,R,PHP,Javascript
  • weibo:@Conan_Z
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/google-command/

google-command

前言

Google是全球最大的搜索引擎,我每天都要在Google上面进行搜索。大部分情况是输入关键字,然后看到模糊匹配的结果。这仅仅是Google搜索的冰山一角,Google还提供了很多的高级搜索指令,方便地帮我们定位到想找的资源页面。这些高级指令更贴心的比喻,就像是“快捷键”一样。还有人说,这些高级指令是黑客的必修课,是发现漏洞的武器。今天就让我们体验一把,Google搜索的神奇。

目录

  1. 高级搜索命令概况
  2. 常用指令:
    双引号,减号,星号,inurl,intitle,allintitle,filetype,site,link,related
  3. 没什么用指令:
    info,insubject,movie,phonebook,safesearch,source,stocks,datarange,ext,weather,tq
  4. 参考资料

1. 高级搜索命令概况

按搜索功能进行的分类

搜索服务搜索指令
网页搜索allinanchor:, allintext:, allintitle:, allinurl:, cache:, define:, filetype:, id:, inanchor:, info:,  intext:, intitle:, inurl:,link:, related:, site:
图片搜索allintitle:, allinurl:, filetype:, inurl:, intitle:, site:
分组搜索allintext:, allintitle:, author:, group:, insubject:, intext:, intitle:
目录搜索allintext:, allintitle:, allinurl:, ext:, filetype:, intext:, intitle:, inurl:
新闻搜索allintext:, allintitle:, allinurl:, intext:, intitle:, inurl:, location:, source:
产品搜索allintext:, allintitle:

下面将具体介绍,每个搜索指令,并以常用,不常用进行分类。

2. 常用指令

1) 双引号
把搜索词放在双引号中,代表完全匹配搜索。

例如:”rhadoop实践”
seo1

结果都是cos.name,虽然我的博客也相同的文章,但由于cos.name的权重比大,会显示cos.name的。

2) 减号
减号(-)表示搜索引擎搜索不包括减号后面词的页面。(前面必须是空格,减号后面没有空格,紧跟着需要排除的词).

例如:”rhadoop实践” -cos.name ,排除cos.name的域名。
seo2

在排除cos.name的域名之后,我的博客被放到第一的位置。

3) 星号
星号(*)是通配符,用在搜索引擎中,匹配任意的字符。

例如:rhadoo*实践, 用*号替代的文字会自动的匹配上面
seo3

4) inurl
inurl:搜索词在URL上面的

例如:inurl:rhadoop实践
seo4

匹配后只有2条记录,只有两个页面URL中,包含rhadoop实践关键字。

5) intitle
intitle:搜索词是页面title中包含关键词

例如:intitle:rhadoop实践
seo5

回到了cos.name的域名。

6) allintitle
allintitle:搜索返回的是页面标题中包含多组关键词的文件。

例如:allintitle:rhadoop实践 粉丝
seo6

回到了我的博客

7) filetype
filetype: 用于搜索特定文件的格式,用于搜索特定的资源,比如PDF电子书、word文件等非常有用。

例如:filetype:pdf rhadoop
seo7

这样就找到了当时准备rhadoop沙龙的PDF

8) site
site:针对某个域名进行搜索

例如:site:fens.me rhadoop
seo8

还是我的博客内容。

9) link
link:查找某网站的反向链接,包括内部链接,外部链接

例如:link:fens.me
惭愧的是,Google并没记录我的博客的反链。

10) related
related:与网站内容相关的页面

例如:related:fens.me
依然没有返回结果,因为我的博客还没有明确的定位。

查一下统计之都的网站:related:cos.name

seo9

最相关的是创始人:谢益辉的博客。

3. 没什么用的指令

1) info
提交info:url,将会显示需要查询网站的一些信息。

例如:info:fens.me

2) insubject
insubject: 当我们用insubject进行查询的时候,Google会限制论坛搜索结果仅是那些在主题里边包含了查询关键词的网面。[insubject:”falling asleep”],提交这个查询,Google会返回在文章主题里边包含了”falling asleep”的文章。
例如:insubject:fens.me

3) movie
movie: 当我们用movie提交查询的时候,Google会返回跟查询关键词相关的电影信息。

4) phonebook
phonebook: 当我们用phonebook进行查询的时候,Google会返回美国当地跟查询关键词相关的电话信息。例:phonebook:fens.me

5) safesearch
safesearch: 用safesearch提交查询的时候,Google会过滤你搜索的结果,其中过滤的内容可能包括一些色情的,暴力,赌博性质的,还有传染病毒的网页。但是它不是百分之百确保安全的。例,[safesearch:breasts]。

6) source
source: 当用source提交查询的时候,Google新闻会限制我们的查询仅是那些我们指定了特定ID或新闻源的网址。例[election source:new_york_times],提交这个查询,Google将会显示纽约时报包含了查询关键词”election”的相关文章。(我们也可以通过Google news高级搜索完成查询)

7) stocks
stocks: 当我们用stocks提交查询的时候,Google会返回跟查询关键词相关的股票信息,这些信息一般来自于其它一些专业的财经网站。例如:stocks:GOOGLE

8) datarange
datarange: 当我们使用datarange进行查询的时候,Google会将查询结果限制在一个特定的时间段内,这个时间相对于网站来说,是按网站被google收录的时间算的。例 ”Geri Halliwell” “Spice Girls” daterange:2450958-2450968 。这里的时间日期格式是按天文学的儒略日。(这个搜索语法Google并不推荐使用,因为它会返回一些莫名其妙的东西)

9) ext
ext: 这是一个没有证实的语法,可以用于filetype:查找扩散名为ext的文件。

10) weather
weather: 当我们用weather提交查询的时候,如果我们指出一个Google可以识别的地区或城市,Google会返回该地区或城市当前的天气状况。

例如:weather:beijing
s1

11) tq同weather
tq: 如果想查某个地方的天气如何,我们只要在Google搜索框中输入”城市名称 Tq”就可以查询到这个城市的天状况.例”北京 tq”,当然tq也可以用汉字的天气代替。

4. 参考资料

转载请注明出处:
http://blog.fens.me/google-command/

打赏作者

RHadoop培训 之 Linux基础课

RHadoop实践系列文章,包含了R语言与Hadoop结合进行海量数据分析。Hadoop主要用来存储海量数据,R语言完成MapReduce 算法,用来替代Java的MapReduce实现。有了RHadoop可以让广大的R语言爱好者,有更强大的工具处理大数据1G, 10G, 100G, TB, PB。 由于大数据所带来的单机性能问题,可能会一去不复返了。

RHadoop实践是一套系列文章,主要包括”Hadoop环境搭建”,”RHadoop安装与使用”,R实现MapReduce的协同过滤算法”,”HBase和rhbase的安装与使用”。对于单独的R语言爱好者,Java爱好者,或者Hadoop爱好者来说,同时具备三种语言知识并不容 易。此文虽为入门文章,但R,Java,Hadoop基础知识还是需要大家提前掌握。

关于作者

张丹(Conan), 程序员Java,R,PHP,Javascript
weibo:@Conan_Z
blog: http://blog.fens.me
email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/rhadoop-linux-basic/

linux-basic

前言

覆盖Linux基础知识,快速上手,搭建RHadoop环境的基础课。

目录

  1. 背景知识
  2. 文件系统
  3. 常用命令
  4. vi编辑器
  5. 用户管理
  6. 磁盘管理
  7. 网络管理
  8. 系统管理
  9. 软件包管理
  10. 常用软件

1. 背景知识

Linux起源
Linux是一个诞生于网络、成长于网络且成熟于网络的奇特的操作系统。1991年,芬兰大学生Linus萌发了开发一个自由的UNIX操作系统的想法。

Ubuntu Linux最早于2004年作为Debian的一个分支出现,其创始人是南非企业家Mark Shuttleworth。Ubuntu项目由Shuttleworth的公司Canonical和社区志愿开发者共同努力开发而成,目的是实 现一个现代 版的Linux版本,使其在桌面系统上真正具有竞争力,更适合主流非技术用户使用。

Ubuntu的重点在于提高易用性,并且坚持定时发布新版本,即每隔六个月发布一个新版本。这确保了用户不再使用过时的软件。

http://www.ubuntu.com/

Linux安装

  • 在物理上面安装Linux (略…)
  • 在虚拟机上面安装Linux

vbox-linux

 

客户端软件

Putty,http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

putty

 

2. 文件系统

a.目录结构


ls /
bin dev home lib lost+found mnt proc run selinux sys usr vmlinuz
boot etc initrd.img lib64 media opt root sbin srv tmp var

b.常用目录介绍


/bin 所有用户都能执行的命令
/dev 设备特殊文件
/etc 系统管理和配置文件
/home 用户主目录的基点
/sbin 系统管理员才能执行的命令
/tmp 公用的临时文件存储点
/root 系统管理员的主目录
/mnt 系统提供这个目录是让用户临时挂载其他的文件系统
/var 某些大文件的溢出区,比方说各种服务的日志文件

c.简单了解的目录介绍


/lib 标准程序设计库
/lib64 标准程序设计库
/lost+found 这个目录平时是空的,系统非正常关机而留下恢复的文件
/proc 正在运行的内核信息映射
/sys 硬件设备的驱动程序信息
/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录
/usr/bin 众多的应用程序
/boot 该目录默认下存放的是Linux的启动文件和内核
/media 挂载多媒体设备
/opt 第三方软件在安装时默认会找这个目录,所以你没有安装此类软件时它是空的

d. 文件和目录


ls -l /etc/passwd
-rw-r--r-- 1 root root 1146 May 28 20:48 /etc/passwd
第一列:文件类型和权限
第二列:i节点,硬件连接数
第三列:用户
第四列:用户组
第五列:文件大小
第六列:最近一次修改时间mtime
第七列:文件或者目录名

上面第一列: -rw-r--r--
1列:文件类型 (-普通文件, d目录, l链接文件)
2-10列:用户权限,用户组权限,其他人权限, 读r(4),写w(2),执行x(1)
rw- : 4+2+0=6
r-- : 4+0+0=4
r-- : 4+0+0=4
chmod 644 /etc/passwd

3. 常用命令


man: 查询帮助文档
ls: 列出目前下的所有内容 (a, l)
cd: 变换工作目录(~, . , .., -)
pwd: 显示当前目录
touch: 创建一个空文件或者改变创建时间
mkdir: 创建一个目录(p)
rmdir: 删除一个空目录(p)
rm: 删除文件和目录 (rf)
cp: 复制文件和目录(rf)
mv: 移动文件和目录
cat: 显示一个文件内容
head: 显示文件前N行 (-n)
tail: 显示文件后N行(-n)

less : 分屏显示文件内容
wc: 统计计数 (l,w,m)
chmod:  给目录设置权限(R)
chown:  修改目录和文件用户或者用户组 (R)
chgrp: 修改目录和文件用户组(R)
which: 按路径查找命令
whereis: 按资料库查找命令
locate: 按文件包查询
find: 按条件查询
gzip: 压缩和解压文件(-n,d)
zcat: 查看gzip压缩文件内容

zip: 以zip压缩文件和目录 (r)
unzip: 解压zip文件
bzip2: 以bz2压缩和解压文件 (z,d) 
bzcat: 查看bz2压缩文件内容
tar: 打包并压缩文件(czvf, xzvf)
shutdown: 定时关机(-h 18:00, -r重启)
halt: 关机
init: 切换运行级别(0关机)
poweroff: 关机
reboot: 重启
history: 查看命令行历史
grep: 使用正则表达式搜索文本

echo:  打印环境变量
export: 查看环境变量,或者声明变量
clear: 清空屏幕
alias: 设置别名(alias cls='clear')
locale: 当前系统语言环境
sudo: 切换成root用户运行
> : 输入到文件 (locale > a.txt)
>> : 合并到文件末尾 (locale >> a.txt)
| : 管道过滤 (cat a.txt| grep en_US)
ln: 建立链接文件(s软链接)
sh: 执行一个shell脚本
date: 查看当前系统时间
time:统计程序消耗时间

4. vi编辑器

a. vi的基本概念
基本上vi可分为三种操作状态,分别是命令模式(Command mode)、插入模式(Insert mode)和底线命令模式(Last line mode),

  • Comand mode:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入Insert mode下,或者到Last line mode。
  • Insert mode:唯有在Insert mode下,才可做文字数据输入,按Esc等可回到Comand mode。
  • Last line mode:将储存文件或离开编辑器,也可设置编辑环境,如寻找字符串、列出行号等。

b. 命令模式(Command mode)

移动光标类命令:

h :光标左移一个字符 
l :光标右移一个字符 
space:光标右移一个字符 
Backspace:光标左移一个字符 
k或Ctrl+p:光标上移一行 
j或Ctrl+n :光标下移一行 
Enter :光标下移一行 
w或W :光标右移一个字至字首 
b或B :光标左移一个字至字首 
e或E :光标右移一个字至字尾 
) :光标移至句尾 
( :光标移至句首 
}:光标移至段落开头 
{:光标移至段落结尾 
$:光标移至当前行尾 

屏幕翻滚类命令

Ctrl+u:向文件首翻半屏 
Ctrl+d:向文件尾翻半屏 
Ctrl+f:向文件尾翻一屏 
Ctrl+b;向文件首翻一屏  

插入文本类命令

i :在光标前 
I :在当前行首 
a:光标后 
A:在当前行尾 
o:在当前行之下新开一行 
O:在当前行之上新开一行 

删除命令

do:删至行首 
d$:删至行尾 
ndd:删除当前行及其后n-1行 

c. 插入模式(Insert mode)
编辑文本信息

d. 底线命令模式(Last line mode)

:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下 
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下 
:n1,n2 d :将n1行到n2行之间的内容删除 
:w :保存当前文件 
:e filename:打开文件filename进行编辑 
:x:保存当前文件并退出 
:q:退出vi 
:q!:不保存文件并退出vi 
:!command:执行shell命令command 
:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入 
:r!command:将命令command的输出结果放到当前行 

5. 用户管理


useradd:命令用来建立用户帐号和创建用户的起始目录。
passwd: 设定账号的密码
groupadd: 将新组加入系统
adduser: 增加用户到sudo

groupadd hadoop 
useradd hadoop -g hadoop;
passwd hadoop 
adduser hadoop sudo
mkdir /home/hadoop 
chown -R hadoop:hadoop /home/hadoop

sudo: 切换到root执行命令
  sudo –i: 切换到root账号

su: 切换其他用户      
who: 显示系统中有哪些用户登陆系统。
whoami: 显示当前操作的用户名

ls -l /etc/passwd
-rw-r--r-- 1 root root 1146 May 28 20:48 /etc/passwd

6. 磁盘管理

fdisk: 硬盘分区工具(l)
partprobe: 不重启让分区生效
mkfs: 格式化硬盘(-t ext4)

mount: 挂载分区
umount: 取消挂载分区

/etc/fstab:开机自动挂载
    /dev/vdb1        /home/cos/hadoop      ext4    defaults 0       0

df: 查看当前硬盘的使用情况(ah)
du: 查看目录下的文件夹大小(shd)

7. 网络管理

a. 网络配置

hostname: 显示或修改主机名
/etc/hostname
    u1

/etc/hosts:配置主机名与ip的映射
    127.0.0.1       localhost
    127.0.1.1       u1

    # The following lines are desirable for IPv6 capable hosts
    ::1     ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters

/etc/network/interfaces: 配置网卡信息
    auto lo
    iface lo inet loopback

    auto eth0
    #iface eth0 inet dhcp
    iface eth0 inet static
    address 192.168.1.200
    netmask 255.255.255.0
    gateway 192.168.1.1

/etc/init.d/networking restart: 重启网络配置

ifup eth0: 激活eth0网卡
ifdown eth0: 关闭eth0网卡

/etc/resolv.conf: DNS配置
    nameserver 192.168.1.1
    nameserver 8.8.8.8

b. 网络命令

ping: 检查主机网络接口状态
netstat: 检查整个Linux网络状态。
route: 检查本地路由信息
ifconfig: 检查网卡的信息
nslookup:机器的IP地址和其对应的域名
dig:用于询问DNS域名服务器的灵活的工具
traceroute:追踪网络数据包的路由途径

8. 系统管理

a. 系统命令

ps: 检查系统进程(aux)
kill: 指定进程ID杀进程(-9)
killall: 通过批量名字杀死进程(-9)
top: 查看系统运行状态,以CPU占用最高排序
free: 查看系统内存资源

b. 系统日志

dmesg:dmesg用来显示开机信息,kernel会将开机信息存储在ring buffer。
/var/log/syslog: 查看系统日志

9. 软件包管理

a. dpkg
dpkg是Debian系统的后台包管理器,类似RPM。也是Debian包管理系统的中流砥柱,负责安全卸载软件包,配置,以及维护已安装的软件包。由于ubuntu和Debian乃一脉相承,所以很多命令是不分彼此的。

dpkg -i package.deb 安装包
dpkg -r package 删除包
dpkg -P package 删除包(包括配置文件)
dpkg -L package 列出与该包关联的文件
dpkg -l package 显示该包的版本
dpkg –unpack package.deb 解开 deb 包的内容
dpkg -S keyword 搜索所属的包内容
dpkg -l 列出当前已安装的包
dpkg -c package.deb 列出 deb 包的内容
dpkg –configure package 配置包

b. apt-get
apt-get是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。是debian,ubuntu发行版的包管理工具,与红帽中的yum工具非常类似。

软件源:

/etc/apt/sources.list

deb http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse
deb-src http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse
deb http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted
deb http://mirror.bjtu.edu.cn/cran/bin/linux/ubuntu precise/

命令:

apt-cache search :  (package 搜索包)
apt-cache show :  (package 获取包的相关信息,如说明、大小、版本等)
sudo apt-get install : (package 安装包)
sudo apt-get install : (package - - reinstall 重新安装包)
sudo apt-get -f install : (强制安装?#"-f = --fix-missing"当是修复安装吧...)
sudo apt-get remove : (package 删除包)
sudo apt-get remove --purge : (package 删除包,包括删除配置文件等)
sudo apt-get autoremove --purge : (package 删除包及其依赖的软件包+配置文件等(只对6.10有效,强烈推荐))
sudo apt-get update : 更新源
sudo apt-get upgrade : 更新已安装的包
sudo apt-get dist-upgrade :升级系统
sudo apt-get dselect-upgrade :使用 dselect 升级
apt-cache depends : (package 了解使用依赖)
apt-cache rdepends : (package 了解某个具体的依赖?#当是查看该包被哪些包依赖吧...)
sudo apt-get build-dep : (package 安装相关的编译环境)
apt-get source : (package 下载该包的源代码)
sudo apt-get clean && sudo apt-get autoclean :清理下载文件的存档 && 只清理过时的包
sudo apt-get check :检查是否有损坏的依赖

10. 常用软件

a. 远程管理

telnet: 远程登录Linux主机
ssh: 远程安全登录Linux主机
scp: 基于ssh登陆进行安装的远程文件传输
ftp: 通过ftp协议远程文件传输
wget: 通过http协议远程文件下载

b. 程序编译

./configure:是用来检测你的安装平台的目标特征的。configure是一个脚本,用来确定所处系统的细节,比如使用何种编译器、何种库,以及编译器和库的保存位置,并把Makefile.in的相应部分进行替换,形成Makefile。
make: 是用来编译的,它从Makefile中读取指令,然后编译。
make install: 是用来安装的,它也从Makefile中读取指令,安装到指定的位置。
make clean: 删除临时文件

c. 产生密钥

ssh-keygen:产生SSH认证RSA密钥
ssh 是一个专为远程登录会话和其他网络服务提供安全性的协议。默认状态下ssh链接是需要密码认证的,可以通过添加系统认证(即公钥-私钥)的修改,修改后系统间切换可以避免密码输入和ssh认证.

~ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/conan/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/conan/.ssh/id_rsa.
Your public key has been saved in /home/conan/.ssh/id_rsa.pub.
The key fingerprint is:
40:9b:fe:ad:76:29:79:20:b5:7c:74:e4:c9:46:73:f1 conan@conan
The key's randomart image is:
+--[ RSA 2048]----+
|      .       .. |
|     . o    + .. |
|      +    = +  E|
|     . .. . *    |
|      .oSo o     |
|      ..+..      |
|       ..+..     |
|        +.+      |
|       ..+       |
+-----------------+

ls ~/.ssh
id_rsa  id_rsa.pub  known_hosts authorized_keys

id_rsa:私钥
id_rsa.pub: 公钥
known_hosts:登陆认证过的主机信息
authorized_keys:公钥授权文件

d. 时间管理
参考文章:http://blog.fens.me/linux-ntp/

ntp:服务器是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源做同步化,它可以提供高精准度的时间校正,在LAN上与标准间差小于1毫秒,WAN上几十毫秒,且通过加密确认的方式来防止恶毒的协议攻击。

#服务器配置:
sudo apt-get install ntp

ps -aux|grep ntp
ntp      23717  0.0  0.0  39752  2184 ?        Ss   19:40   0:00 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 126:135

/etc/init.d/ntp status
* NTP server is running

#客户端同步:
ntpdate 0.cn.pool.ntp.org  
22 Jul 16:45:05 ntpdate[6790]: step time server 218.75.4.130 offset 7618978.781348 sec

e. 定时任务

crontab:设置任务调度(el)
分钟m(0-59), 小时h(1-23), 日期dom(1-31), 月份mon(1-12), 星期down(0-6,0表示周日) 

crobtab -e
# m h    dom mon dow   command
# 每周一早点5:00给目录打包
# 0 5     *   *   1    tar -zcf /var/backups/home.tgz /home/

# 每天同步2次时间。(8:00, 16:00)
# 0 8,16  *   *   *    /usr/sbin/ntpdate 192.168.1.79

f. 网络文件系统

nfs:网络文件系统(NFS,Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。

#服务器端安装
sudo apt-get install nfs-kernel-server

#配置访问权限
vi /etc/exports
/home/conan/.ssh *(rw,no_root_squash,sync)

#重启
sudo /etc/init.d/nfs-kernel-server restart

#查看配置列表
showmount -e
Export list for conan:
/home/conan/.ssh  *

#创建目录
sudo mkdir /mnt/ssh

#挂载目录
sudo mount 192.168.1.201:/home/conan/.ssh /mnt/ssh/

#查看目录
ls /mnt/ssh/
id_rsa  id_rsa.pub  known_hosts

g. 域名服务器
参考文章:http://blog.fens.me/vps-ip-dns/

bind9:一种开源的DNS(Domain Name System)协议的实现,包含对域名的查询和响应所需的所有软件。它是互联网上最广泛使用的一种DNS服务器。

#安装
sudo apt-get install bind9
cd /etc/bind

#配置
vi named.conf.options
forwarders {
      8.8.8.8;
      8.8.4.4;
};

# 设置wtmart.com域
~ vi named.conf.local
zone "wtmart.com" {
     type master;
     file "/etc/bind/db.wtmart.com";
};

# 配置域名指向IP
~ vi db.wtmart.com
$TTL    604800
@       IN      SOA     wtmart.com. root.wtmart.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      wtmart.com.
@       IN      A       173.255.193.179
@       IN      AAAA    ::1

ip      IN      A       173.255.193.179

lin    IN    A    116.24.133.86

#重启服务器
sudo /etc/init.d/bind9 restart

h. 数据库服务器

mysql: 是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。

#安装
sudo apt-get install mysql-server

#配置允许其他计算访问
sudo sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf

#设置字符集UTF-8
vi /etc/mysql/my.cnf

[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
default-character-set=utf8

[mysqld]
#
# * Basic Settings
#
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci

#查看字符集
mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

#重启
sudo service mysql restart

转载请注明出处:
http://blog.fens.me/rhadoop-linux-basic/

打赏作者