代码改变世界

Linux 入门笔记

2017-04-12 08:59  stoneniqiu  阅读(2475)  评论(9编辑  收藏  举报
一开始对linux总有些抵触,黑黑的命令框不知道如何下手,这次因为工作交接的缘故需要负责之前同事的Node后端部分,node,redis这些都是部署在Linux上的,看了几次运维的同学噼里啪啦的敲命令,黑的白的一闪一闪,我都还没看清楚敲的啥,敬佩之情油然而生。没办法,不能怂啊,于是开始学Linux,先装个虚拟机自己玩起。

环境准备

1.安装VMware Workstation

这个不解释了

2.安装centos

设置好root账户和一个常用账户

基础知识

Linux都是命令操作,命令很多不好记,可以用man 来查看一个命令的用法。遇到很长的命令,用tab键可以补全。以下只是根据我自己的习惯分类的。内容基本上都是来自鸟哥的私房菜基础篇,该书篇幅甚巨,有时间可以细研。

 1.登录

[Ctrl] + [Alt] + [F1]~[F6] 表示6个终端。命令窗口和图像窗口可以通过[Ctrl] + [Alt] + [F1]和[Ctrl] + [Alt] + [F2]来切换。exit 退出当前用户。
常用账户没有安装权限,可以用su切到root账户。
这样root登录后还是在当前环境。 root是整个系统权限最高的账户,所以一般还是不要使用root。
 
但是root密码忘记了咋整? 难道要重新安装。鸟哥私房菜中给出了方法:以单人维护模式登录就可以修改root密码。
重启虚拟机,在读秒的时候按下任意键进入下面的界面:
按下e进入编辑模式,将光标移动到kernel那一行,再按下e 进入该行的编辑
最后加上一个 single进入单人维护模式,然后按下enter 再按下b
这个时候相当于以root的身份获得了控制权。然后输入passwd 就可以修改密码了。登录的时候记住用户名是root而不是自定义的stone。 
但是又觉得用这个方式不是可以修改别人机器的root密码了吗?

2.关机重启

shutdown -h now// 马上关机
shutdown -r now //立即重启

shutdow是常用的,如果是root 还可以用init,Linux 共有七种执行等级 先看这四种

run level 0:关机
run level 3:纯文本模式
run level 5:有图形接口模式
run level 6:重新启动

所以可以这样关机:

init 0// 关机

重启同理。 reboot,poweroff 也可以。

3.文件目录

目录是很常用的命令部分
. //代表此层目录
..// 代表上一层目录
- //代表前一个工作目录
~ //代表当前用户所在目录
cd://切换目录( Change Directory)
pwd: //显示当前目录( Print Working Directory)
mkdir://建立一个新的目录
mkdir -p test1/test2/ // 建立多个目录
rmdir://删除一个空目录。有子目录会提示
rmdir -p test1/test2 //有子目录一次删除。只删除空目录。
rm -r test  //不管test为不为空 都删掉。
echo $PATH  //显示系统路径
mv  text.txt  //text1 把text.txt 从当前目录移到text1
mv text.txt  .. //把text.txt 从当前目录移动到 上级目录。
mv text.txt t1.txt //重命名为t1.txt  
cp  //复制档案与目录。
cp -r test1 test2  //如果 test1下面还有别的目录 就要用 -r

我们可以通过ls命令查看当前目录下面有哪些文件。 ls -al //列出所有文件的权限与属性。包含隐藏的。

ll会列出所有文件的权限及大小信息,第一列,-表示文件,d表示目录。r表示read,w表示可写,x表示可执行。

[-][rwx][r-x][r--]
1   234 567 890
1 为:代表这个文件名为目录 ;
234 为:拥有者的权限,本例中为可读、可写、可执行(rwx);
567 为:同群组用户权力,本例中为可读可执行(rx);
890 为:其他用户权力,本例中为可读(r)
一个linux档案能不能执行,与他的第一栏的十个属性有关。与文件名没有一点关系。只要权限中有x的话就能执行。但不代表可执行成功

 4.压缩与解压

 *Z, *.tar, *.tar.gz, *.zip, *.tgz: 等都表示压缩文件。不同的名称是因为不同的压缩的方式不同。只需要记住tar命令就行了。

 tar [-j|-z] [cv] [-f 文件或目录] filename

比如: $ tar -zcv -f t.tar.gz t1.txt 。-j和-z代表不同压缩算法。-j表示是用bzip2方法来压缩,其后缀也建议是*.tar.bz2 -z表示是gzip的方式压缩。 建议的后缀是*.tar.gz。

-c 表示压缩,-v表示显示档案中的名称。解压:

tar [-j|-z] [xv] [-f 文件或目录] [-C 目录] 

x表示解压。-C表示解压到指定的目录。

这次还有.xz后缀的。比如node的二进制安装包。 node-v6.10.2-linux-x64.tar.xz

需要先:

xz -d node-v6.10.2-linux-x64.tar.xz

解压成.tar。然后再用tar解压。

可以用zcat 查看被压缩的文件内容。

5.文本编辑

1) nano

nano  xx.txt //打开或新建一个名为xx的text。  ctrl+O  保存,f2或者ctrl+x 退出。

完了可以通过cat查看内容。

cat xx.txt

2) vi编辑器

所有Unix like系统都会内建vi 文书编辑器。
vi test.txt //创建一个文档。
按下 i, o, a 等字符就可以进入编辑模式了。
按ctrl + c 退出编辑,可输入命令模式
再输入:wq 保存并离开。这个命令表示写入和离开,也可以分开用。强制可以加上!
/word //进行搜索。
?word //直接定位到word字符串。
yy //复制光标所在的一行。
p  //粘贴数据。
x  //删除数据
u  //撤销
Ctrl+r // 重做。

3) vim 

vim有程序编辑能力,能高亮。
 
同样是ctrl+c 进入命令模式
set nu 设置行号。
set nonu 取消行号
当我们按下 v 或者 V 或者 [Ctrl]+v 时, 这个时候光标移动过的地方就会开始变白,表示选中。然后按下y就是复制了。按p就能粘贴。

6.程序管理

在Linux系统中,触发任何一个事件时,系统都会将它定义成为一个程序,并且给予这个程序一个ID,即PID。
PPID表示他的父程序ID,老实说,Linux几乎可以说不会当机。因为他可以在任何时候,将某个困住的程序杀掉。然后重新执行改程序而不用重新启动。假设界面死掉,你可以随意的按Alt+F1--F7 切到其他终端机界面,然后以ps -aux 找出出错的程序,然后kill一下。
kill -signal % jobNumber
-1 重新读取一次参数的配置文件,类似于reload。
-2 代表与键盘输入ctrl+c 一样的操作。
-9 立刻强制删除一个工作。
-15 以正常方式终止一项工作。
如果想在背景工作的程序在注销后还能继续运行,就用nohup搭配&  这个在我们启动redis服务的时候用到。
ps aux  观察系统所有的程序数据。
A 所有的process均显示出来。
-a 不与终端有关的所有process。
-u 有效使用者相关的process
x 列出完整的信息。
-l 仅仅观察自己的bash相关程序。
 
top 动态观察程序变化
相对于ps是一个时间点的程序状态,top是持续侦测程序运作的状态。
top -d | top [-bnp]
-d 表示秒数,预设是3秒。
-b是批次执行top。n表示执行几次。-p表示指定某个PID进行观测。
按q退出。
free //直接查看内存情况

uname //查看系统信息
-a :所有系统相关的信息,包括底下的数据都会被列出来;
-s :系统核心名称
-r :核心的版本
-m :本系统的硬件名称,例如 i686 或x86_64 等;
-p :CPU 的类型,不 -m 类似,叧是显示的是 CPU 的类型!
-i :硬件的平台 (ix86)
ifconfig eth0 // 确认网络是否可行

ping

确定路由是ok的。可以通过 dig 域名 来看DNS解析

7.Bash

查看变量环境变量:
echo $PATH
定义变量
echo $myname
myname=VBird   //等号两边不能留空格
echo $myname 
通常大些字母为系统默认变量,小写为自定义变量。
可以用变量定义一个目录。不过退出之后就没有了。可以用来编写linux脚本
read来定义一个变量,并接受用户的输入作为值。
第二行为输入内容。
read -p "Please keyin your name: " -t 30 named
还可以输入提示和时间计时。
declare [-aixr] variable  //申明变量类型
a是数组,i是数字,x是定义为环境变量,r是只读。
grep 是一个很常见也很常用的指令,他最重要的功能就是进行字符串比较。将符合要求的打印出来。

Xshell

Xshell真是个好东西,linux上默认的命令框操作总感觉束缚着。不能像windows那样复制粘贴,窗口切换也麻烦。Xshell用起来很舒服
可以通过新建会话链接机器,按照提示输入ip和账户及密码。记住之后,下次可以直接打开。也可以在地址栏中输入ip进行链接。也可以通过命令
ssh 192.168.92.128

灰常的方便,还可以在工具里面选择配色方案:

linux小菜鸟瞬间上了个档次。别说我还是瞄的运维人员的。嘿嘿。主要确实方便,可以复制(选中右键),可以粘贴(shift+ insert).安装软件还有进度条。 

软件安装 

 要用的时候到来了,如何装个noed呢?

 1.安装node

 最好先用 uname -r 看一下自己的系统。因为linux的64并不兼容32.

 

 我是64的,下了个32位的一直跑不起来。会出现 libstdc++.so.6 相关错误。无法运行node。

 

 用wget 获取压缩包:

wget --no-check-certificate  https://nodejs.org/dist/v6.10.2/node-v6.10.2-linux-x64.tar.xz

 --no-check-certificate是用来忽略掉证书检查。 下载完成后,tar.xz 的文件先要解压成 .tar的

xz -d node-v6.10.2-linux-x64.tar.xz

然后 用tar解压:

然后进入解压后的bin目录

执行./node -v 能得到版本说明对了。但是还需要设置下全局变量,才好用。需要先用su命令切到root

然后打开profile。将node的目录插进去:

再保存就好了。 可以用echo进行查看:

在看下node版本。ok了。

2.安装redis

刚才node下载下来直接是可以用的二进制,其实很多软件还需要我们自己编译的。下载redis

wget http://download.redis.io/releases/redis-3.2.8.tar.gz

再进行解压:

tar xzf redis-3.2.8.tar.gz

再进入目录 

cd redis-3.2.8

进行make:

make

这个时候如果src目录下面没有出现redis-server

 

说明安装失败了。如果出现 make cc command not found 错误
yum install gcc

需要安装gcc。如果运行redis-server出现  You need tcl 8.5 or newer in order to run the Redis test  错误 

yum install tcl

需要安装tcl。没办法,这个minmal的centos 还是缺不少东西的。但都体验一遍也挺好。

在运行 src/redis-server:
说明服务启动成功了。注意后面的&号,这样不阻塞界面。再试下redis-cli 
读写也正常了。
 
可以再建一个work目录,用npm 安装一个redis 模块。再用vim 新建一个app.js。
var redis=require('redis');
var client=redis.createClient();

client.on('connect',function(){
 console.log('redis connected');
 client.set('author','stoneniqiu',redis.print);
 client.get('author',redis.print);
});

ok,运行:

现在可以独自愉快的玩耍了。
 
 小结:一开始学linux的时候感觉windows真是伟大的产品,多么人性的设计。学了几天linux,也觉得这也挺好玩的。以上只是个人的入门笔记。
 
 参考:
linux部署node:http://www.cnblogs.com/dubaokun/p/3558848.html