权当开篇――Linux学习之路(二)

   上篇总结了一下系统分区的一般规则、链接文件--硬链接和软链接、Linux系统分层及RAID、Linux添加硬盘及使用硬盘和find命令,废话少说,这一篇继续走起~


1.配置Linux网络:

   以在VMware虚拟机里安装Linux为例(CentOS 6.6 32位),在新建虚机的时候会让你选择网卡的链接方式――桥接或者网络地址转换(NAT)。选择桥接的话,虚机会和本机在同一网段,如本机IP为192.168.190.70,虚机的IP则为192.168.190.*。选择NAT的话,虚机和本机不在同一网段,如本机IP为192.168.190.70,虚机IP可能为192.168.32.*。如果本机是通过无线路由上网,适合选择桥接;如果本机是通过拨号上网,适合选择NAT,当然这不是重点,也没有真正尝试过拨号上网的情况,在无线路由上网的情况下,桥接和NAT都适用。

   下面以NAT方式连网为例,总结一下安装完Linux系统后的网络配置问题。首先可以通过如下命令查看网卡及IP地址、网关、子网掩码等信息:

   [root@localhost ~]# ifconfig  //查看启用的网卡的详细信息。查看全部网卡添加 -a 参数

   注: 如果服务器通过以太网(即普通网线)上网,则网卡名标识为eth0, eth1, ……以此类推;如果服务器通过光纤上网,则网卡名标识为fddi0, fddi1, ……以此类推。

   [root@localhost ~]# ip a     //等同于[root@localhost ~]# ip addr

  inet addr:192.168.32.152  Bcast:192.168.32.255  Mask:255.255.255.0

   通过 eth0 网卡的inet addr可以看到当前系统的IP地址,如果没有的话则系统不能连接网络。可以通过 ping 命令检查网络是否连通:

   [root@localhost ~]# ping www.baidu.com  //也可以是其他网站

   未连通情况下,修改如下文件:

   [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

   DEVICE=eth0                    //网卡名称,一般不修改

   HWADDR=00:0C:29:3D:B3:93              //配置MAC地址

   TYPE=Ethernet                    //网络类型,一般不修改

   UUID=abd1b6e1-79ba-4838-af2f-ed54f87cb820     //网卡UUID,不修改

   ONBOOT=yes                           //开机时是否自启动,一般设为yes

   NM_CONTROLLED=yes                 //网卡是否可以由Network Manager图形

                            //管理工具托管,一般不修改

   BOOTPROTO=static                  //网卡启动策略,static 为固定IP

                            //地址,需要与IPADDR配合使用;

                            //dhcp 为动态IP地址,网卡启动时自

                            //动分配,一般设为static

   IPADDR=192.168.32.152                //指定固定的IP地址

   NETMASK=255.255.255.0                    //子网掩码,可以不设

   GATEWAY=192.168.32.2                     //指定网关,如果BOOTPROTO=static,

                            //则必须配上 route -n 看到的网关

                            //IP,否则无法联网

   DNS1=8.8.8.8                          //指定DNS

   DNS2=4.4.4.4                    //指定备用DNS

   如果开始不知道如何设置静态IP,可以先修改成 dhcp 形式,使用:

   [root@localhost ~]# dhclient

   动态分配IP地址,查看该IP所在网段,将IP地址固定。对网卡配置信息修改后需要重启网络或网卡,常用以下几种方式:

   [root@localhost ~]# service network restart //等同 /etc/init.d/network restart

   [root@localhost ~]# ifdown eth0       //关闭eth0 网卡

   [root@localhost ~]# ifup eth0        //开启eth0 网卡

   [root@localhost ~]# ifconfig eth0 down   //关闭eth0 网卡

   [root@localhost ~]# ifconfig eth0 up    //开启eth0 网卡

   如果要查看网关的相关信息,使用如下命令:

   [root@localhost ~]# route -n

   如果要查看DNS相关信息,使用如下命令:

   [root@localhost ~]# cat /etc/resolv.conf

   

   补充一个关于ifcfg-eth0 网卡配置信息的配置项:

   PEERDNS=no    //是否自动分配DNS,只在动态分配IP地址时需要使用。在BOOTPROTO=dhcp时,PEERDNS 默认为yes。动态分配的DNS信息会被写入/etc/resolv.conf 文件中。无论是否动态分配,在/etc/sysconfig/network-scripts/ifcfg-eth0 中配置的DNS1,DNS2 等都会写入/etc/resolv.conf中。

   注:以上关于动态分配策略的内容都仅作了解,可以做做试验。实际生产环境中可以说所有IP地址、DNS都为手动指定。


2.修改主机名称:

   什么是主机名称?

   在 [root@localhost ~]# 中,root为当前登录所使用的用户,localhost 为主机名称,~ 为当前所在目录。主机名称是在安装系统时指定的,修改主机名称即修改 localhost 部分。使用如下命令:

   [root@localhost ~]# hostname newname

   修改完后在一个新的Session中命令行显示如下:

   [root@newname ~]#

   但是这样的修改只是暂时的,重启后会失效。想要避免这种情况的话修改如下配置文件:

   [root@localhost ~]# vim /etc/sysconfig/network

   HOSTNAME=newname

   保存退出即可。


3.Linux用户管理:

   在《学习笔记(六)――用户,用户组,切换登录用户》博客中已经做过总结,博客链接:

   http://xitongjiagoushi.blog.51cto.com/9975742/1623222


4.压缩/解压缩/打包/解包:

   4.1 压缩/解压缩

   Linux中压缩形式共有三种gz, biz2, zip。分别来看一下各自的压缩/解压缩方法:

   (1)gz:

   [root@localhost ~]# gzip /tmp/learn/testfile      //压缩

   压缩后,/tmp/learn/testfile文件变成了/tmp/learn/testfile.gz文件。

   [root@localhost ~]# gunzip /tmp/learn/testfile.gz   //解压缩方式一

   [root@localhost ~]# gzip -d /tmp/learn/testfile.gz  //解压缩方式二

   解压缩后,/tmp/learn/testfile.gz文件变成了/tmp/learn/testfile文件。

   不难发现,通过这种方式进行压缩会移除原文件,生成的压缩文件也只能放在被压缩文件所在目录下。通过使用-c 参数(-c Write output on standard output)结合输出重定向可以不影响原文件并指定压缩文件放置目录及压缩后的名称

   [root@localhost ~]# gzip -c /tmp/learn/testfile > ~/ceshi.gz     //压缩

   同样可以作用于解压缩:

   [root@localhost ~]# gunzip -c /tmp/learn/testfile.gz > ~/testfile  //解压缩方式一

   [root@localhost ~]# gzip -dc /tmp/learn/testfile.gz > ~/testfile   //解压缩方式二

   (2)bz2:

   [root@localhost ~]# bzip2 /tmp/learn/testfile       //压缩

   压缩后,/tmp/learn/testfile文件变成了/tmp/learn/testfile.bz2文件。

   [root@localhost ~]# bunzip2 /tmp/learn/testfile.bz2   //解压缩方式一

   [root@localhost ~]# bzip2 -d /tmp/learn/testfile.bz2  //解压缩方式二

   解压缩后,/tmp/learn/testfile.bz2文件变成了/tmp/learn/testfile文件。

   与gz 方式相同,通过-c 参数可以保留原文件并指定压缩文件放置目录及压缩后的名称:

   [root@localhost ~]# bzip2 -c /tmp/learn/testfile > ~/ceshi.bz2   //压缩

   [root@localhost ~]# bunzip2 -c /tmp/learn/testfile.bz2 > ~/testfile //解压缩方式一

   [root@localhost ~]# bzip2 -dc /tmp/learn/testfile.bz2 > ~/testfile //解压缩方式二

   (3)zip:

   [root@localhost ~]# zip /tmp/learn/testfile.zip /tmp/learn/testfile     //压缩

   压缩后,/tmp/learn/testfile文件仍然存在,/tmp/learn/testfile.zip文件为压缩后的文件。命名方式和存放位置自定义,如下也是可行的:

   [root@localhost ~]# zip ~/haha.zip /tmp/learn/testfile //压缩,指定压缩后文件存放路径

   [root@localhost ~]# unzip /tmp/learn/testfile.zip     //解压缩

   解压缩,解压缩后文件和被解压的文件位于同一目录下。若想指定解压缩后文件的目录,需要使用 -d 参数(指定目录,不能指定名称)

   [root@localhost ~]# unzip /tmp/learn/testfile.zip -d ~/

   注:

   (1)对于 zip 来说,-d 参数不再是解压缩,而是删除压缩文件中的原文件,如下所示,先使用 zip 命令将 file1 file2 file3 三个文件压缩进 zipfile.zip 文件中,现在我不想要压缩文件中的 file2 文件了(可能是因为 2 的缘故,谁知道呢),又不想在解压后再将其删除(天呐解压后再删除好 low 的说),可以使用 zip 命令的 -d 参数:

   [root@localhost ~]# zip zipfile.zip file1 file2 file3

   [root@localhost ~]# zip file.zip -d file2   //注意格式,zip 后必须先跟 file.zip

   deleting: file2

   [root@localhost ~]# unzip file.zip -d /tmp/newfolder   //如果 newfolder 目录不存在会

                                        //自动创建

   [root@localhost ~]# ls /tmp/newfolder

   file1 file3

   会不会马上显得有点高大上?

   (2)-c 参数也不再适用(虽然还可以转为标准输出,但会多一些数据),当然它的作用完全可以使用 unzip xxx.zip -d /tmp/ 来代替。

   另外,gz 和bz2 不能作用于目录文件,zip 可以用于目录文件,此时需要-r 参数:

   [root@localhost ~]# zip -r learn.zip /tmp/learn/

   你现在肯定觉得 gz 和 bz2 有点局限,因为不能打包目录,别急,在使用 gz 和 bz2 压缩前,我们可以先将文件打包:

   4.2 打包/解包

   打包只有一种方式:

   [root@localhost ~]# tar -cvf /tmp/learn/package.tar /tmp/learn/testfile /tmp/learn/log

   打包后的文件在/tmp/learn/目录下,名称为package.tar,被打包进去的文件为/tmp/learn/testfile和/tmp/learn/log。

   注:该条命令执行时,由于目前位于/root 目录下,要打包的文件位于/tmp/learn/下,目录不同,会有如下提醒:

   tar: Removing leading `/' from member names

   该提醒不影响最后打包的结果。如果不想看到提醒,需要多加一个参数P(大写,absolute-names,即使用绝对路径),如下:

   [root@localhost ~]# tar -cvPf /tmp/learn/package.tar /tmp/learn/testfile /tmp/learn/log

   效果与不加P 参数相同,只是没有警告提醒。这里的参数顺序是固定的,P 参数必须在f 参数前面,也就是说,-cvfP 形式是错误的。

   [root@localhost ~]# tar -xvf /tmp/learn/package.tar

   解包,解包到当前目录下。通过-C (大写)参数可以指定解包路径(不会自动创建不存在的目录,需要提前创建):

   [root@localhost ~]# tar -xvf /tmp/learn/package.tar -C /tmp/learn/packfolder/

   注:同打包类似,有一个使用绝对路径的问题。如果使用如下命令解包:

   [root@localhost ~]# tar -xvf /tmp/learn/package.tar

   解包完成后在/root 下文件的具体目录形式为/root/tmp/learn/testfile /root/tmp/learn/log。如果添加参数P,即使用如下命令解包:

   [root@localhost ~]# tar -xvPf /tmp/learn/package.tar

   解包完成后testfile 文件和 log 文件会出现在其打包时的绝对路径下,即/tmp/learn/testfile /tmp/learn/log。如果该路径下的文件仍存在将会被覆盖。在包含绝对路径、使用P 参数时情况比较复杂,容易因路径问题引起不必要的麻烦,所以建议在没有完全弄清楚之前,最好在被打包文件所在的目录下进行打包

   查看包里的文件用如下命令:

   [root@localhost ~]# tar -tvf /tmp/learn/package.tar

   4.3 打包+压缩/解包+解压缩:

   在Linux中打包和压缩一般是同时配合使用的。要注意的是,能与打包直接配合使用的压缩格式只有gz 和 bz2格式:

   (1)打包+压缩成 .tar.gz 格式:

   [root@localhost learn]# tar -zcvf ~/files.tar.gz file1.txt file2.txt

   相应的解包+解压缩命令为:

   [root@localhost learn]# tar -zxvf ~/files.tar.gz  //到当前目录

   [root@localhost learn]# tar -zxvf ~/files.tar.gz -C /tmp/copy  //到/tmp/copy目录

   (2)打包+压缩成 .tar.bz2 格式:

   [root@localhost learn]# tar -jcvf ~/files.tar.bz2 file1.txt file2.txt

   相应的解包+解压缩命令为:

   [root@localhost learn]# tar -jxvf ~/files.tar.bz2  //到当前目录

   [root@localhost learn]# tar -jxvf ~/files.tar.bz2 -C /tmp/copy  //到/tmp/copy目录

   注:在Linux中并不存在文件后缀名这种说法,即便在打包/压缩时命名不为.tar.gz 和 .tar.bz2也是可以正常压缩打包的,但是这种命名方式可以让我们更清楚文件被打包/压缩的方式,极大的方便了解包/解压缩。


5.进程管理:

  查看进程信息:

   5.1 ps aux:

   [root@localhost ~]# ps aux

   该命令查看系统当前的所有进程,一共有如下几列:

   USER        PID    %CPU              VSZ             RSS

   进程的执行者   进程ID  进程所占用的CPU百分比  内核分配给进程的内存 进程实际使用内存

   TTY                           STAT        START

   进程在哪个控制台运行,?(问号)则为没有   进程运行状态   进程开始运行的时间

   TIME         COMMAND

   进程运行了多久  进程名称

   注:系统中PID=1的进程永远是/sbin/init ,该进程永远第一个启动。

   STAT的几种情况具体代表的含义:

   S --> 可中断的睡眠模式

   N --> 进程的优先级为低

   S<s --> 进程的优先级高

   Sl --> 多线程

   Ss+ --> 加号,表示前台的进程组

   R --> 正在运行的进程

   Z --> 僵尸进程(所谓僵尸进程,指其父进程已被杀死的进程。僵尸进程只能通过重启系统才能杀死)

   5.2 ps -ef:

   与 ps aux 作用很相似,只是具体展现的信息有些不同:(每列均与 ps aux 列对比)

   UID     PID    PPID              C     STIME    TTY    TIME   CMD

   同USER  同PID   ps -ef 独有,父进程ID  同%CPU  同START   同TTY  同TIME 同COMMAND

   不难看出 ps -ef 相对于 ps aux 来说,少了内存相关信息,多了PPID 。实际应用中,经常需要知道进程的父ID,所以 ps -ef 使用更频繁一些。

   注:ps -ef 和 ps aux 通常都和 | grep 命令配合使用。

   5.3 top:

   与使用 ps 命令查看不同, top 命令动态实时显示进程信息。下面几列信息是top 命令特有的:

   PR                     NI                 SHR

   内核调度的优先级,不能直接调整  通过调整该值来影响PR的值  共享的内存

   同时,还有一些详细信息,比如 load average -- 最近1分钟负载量 最近5分钟负载量 最近15分钟负载量(较常用);比如进程总数,运行中的进程数,睡眠中的进程数,停止的进程数,僵尸进程数,内存和交换分区的使用情况等。

   操作进程:

   5.4 kill:

   kill 命令通过向进程发送不同的信号量来对进程进行操作。常用的信号量有1, 9, 15:

   [root@localhost ~]# kill -1 PID      //重启进程 SIGHUP

   [root@localhost ~]# kill -9 PID      //强制结束进程 SIGKILL

   [root@localhost ~]# kill -15 PID     //正常结束进程,同kill PID,默认值 SIGTERM

   查看所有的信号量:

   [root@localhost ~]# kill -l(英文,L的小写形式)//查看kill 可用的所有信号量

   除了可以通过PID 对进程进行操作,还能使用进程名称来杀死进程

   [root@localhost ~]# killall COMMAND    //正常结束进程 SIGTERM

   5.5 进程的前后台:

   查看在后台运行的进程:

   [root@localhost ~]# jobs

   将后台进程中编号为1的进程放到前台,并启动:    

   [root@localhost ~]# fg %1

   将后台编号为1的进程变为Running状态,仍在后台运行:

   [root@localhost ~]# bg %1

   将后台进程中编号为1的进程结束:

   [root@localhost ~]# kill %1

   

   第二篇总结暂时到这,用户管理部分稍后补上,第三篇见~~~

   

你可能感兴趣的:(linux,网络,进程管理,压缩打包)