Skip to content Skip to main navigation Skip to footer

Linux

CentOS 7/RHEL 7: 如何安装GCC编译器和开发工具

在CentOS 7和RHEL 7系统上如何安装Gnu GCC编译器和相关的工具比如:autoconf,automake,flex, c++编译器等工具。我们可以通过在centos 或者rhel 7 系统上安装下面的软件包来搭建基本的开发环境。
[cc lang=”php”] autoconf
automake
binutils
bison
flex
gcc
gcc-c++
gettext
libtool
make
patch
pkgconfig
redhat-rpm-config
rpm-build
rpm-sign
[/code] 显示当前系统的yum group,使用下面的命令:
[cc lang=”php”] yum group list
[/code] 命令输出:
[cc lang=”php”] [root@itsprite /]# yum group list
Loaded plugins: fastestmirror, langpacks
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
* base: mirrors.btte.net
* extras: mirrors.btte.net
* updates: mirrors.btte.net
Available environment groups:
Minimal Install
Infrastructure Server
File and Print Server
Basic Web Server
Virtualization Host
Server with GUI
GNOME Desktop
KDE Plasma Workspaces
Development and Creative Workstation
Available Groups:
Compatibility Libraries
Console Internet Tools
Development Tools
Graphical Administration Tools
Legacy UNIX Compatibility
Scientific Support
Security Tools
Smart Card Support
System Administration Tools
System Management
Done
[/code] 安装GCC和开发环境
输入下面的命令:
[cc lang=”php”] yum group install “Development Tools”
[/code] 安装完之后,使用下面的命令来验证gcc是否安装成功:
[cc lang=”php”] whereis gcc
[/code] 命令输出:
[cc lang=”php”] [root@itsprite /]# whereis gcc
gcc: /usr/bin/gcc /usr/lib/gcc /usr/libexec/gcc /usr/share/man/man1/gcc.1.gz
[/code] 输入下面的命令来查看gcc工具的版本:
[cc lang=”php”] [root@itsprite /]# gcc –version
gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-16)
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[/code] 测试GCC编译器
下面我们使用刚安装好的GCC编译器来编译一个c语言程序.
创建下面的test.c程序:
[cc lang=”c”] #include
int main(void){
printf(“Hello World!\n”);
return 0;
}
[/code] 输入命令编译test.c 文件:
[cc lang=”php”] gcc test.c -o test
[/code] 执行编译后的文件:
[cc lang=”php”] ./test
Hello World!
[/code]

centos 7/rhel7: 如何安装EPEL软件库

在centos 7 或者rhel 7系统上如何安装 EPEL repo呢? 使用EPEL repo 可以用来很容易的安装不同的软件包或者第三方的软件包。这些软件包在centos 或者RHEL官方的yum软件库里是不支持的。所以我们可以通过安装EPEL 软件库来安装官方不支持的软件包。
安装EPEL 软件库
1.首先下载并安装epel安装包,使用下面的命令:
[cc lang=”php”] yum install epel-release-7-2.noarch.rpm
[/code] 命令输出:
[cc lang=”php”] Loaded plugins: amazon-id, rhui-lb
Examining epel-release-7-2.noarch.rpm: epel-release-7-2.noarch
Marking epel-release-7-2.noarch.rpm to be installed
Resolving Dependencies
–> Running transaction check
—> Package epel-release.noarch 0:7-2 will be installed
–> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
epel-release noarch 7-2 /epel-release-7-2.noarch 22 k
Transaction Summary
================================================================================
Install 1 Package
Total size: 22 k
Installed size: 22 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : epel-release-7-2.noarch 1/1
Verifying : epel-release-7-2.noarch 1/1
Installed:
epel-release.noarch 0:7-2
[/code] Complete!
当你安装完毕后可以使用“yum repolist” 命令来显示epel repo:
[cc lang=”php”] yum repolist
[/code] 命令输出:
[cc lang=”php”] Loaded plugins: amazon-id, rhui-lb
repo id repo name status
epel/x86_64 Extra Packages for Enterprise Linux 7 – x86_64 5,610
rhui-REGION-client-config-server-7/x86_64 Red Hat Update Infrastructure 2.0 Client Configur 2
rhui-REGION-rhel-server-releases/7Server/x86_64 Red Hat Enterprise Linux Server 7 (RPMs) 4,718
repolist: 10,330
[/code] 查找并安装软件包
使用下面的命令来显示在epel repo 里的所有可用软件包:
[cc lang=”php”] $ sudo yum –disablerepo=”*” –enablerepo=”epel” list available
[/code] 或者:
[cc lang=”php”] $ sudo yum –disablerepo=”*” –enablerepo=”epel” list available | grep ‘package’
[/code]

centos 7/rhel7: 如何重启/停止/启动网络服务

在新的centos7 系统里,我们如何来启动网络服务,如何重启网络服务以及如何来停止网络服务呢?centos 7 系统现在使用systemd来替换之前的init进程。它是linux操作系统的系统和服务的管理者。
centos 7
在之前的centos 6 系统里,我们一般都是使用init脚本来控制系统的服务或者进程的。
CentOS 7 重启网络服务,输入下面的命令:
[cc lang=”php”] systemctl retart network.service

systemctl restart network
[/code] Centos 7 启动网络服务,输入下面的命令:
[cc lang=”php”] systemctl start network.service

systemctl start network
[/code] CentOS 7 停止网络服务,输入命令:
[cc lang=”php”] systemctl stop network.service

systemctl stop network
[/code]

CentOS /Linux: 如何配置yum软件仓库

在centos 系统或者redhat系统下,我们安装软件的包的首选工具是yum,但是在使用yum之前必须配置好yum源软件仓库。yum命令还可以帮助解决软件包安装过程中的包依赖,也就是说会帮你安装所有依赖的软件包。那么如何在 CentOS Linux 系统下配置yum 源软件仓库呢? 本文将会讲述配置yum源的方法。
linux logo
CentOS 以光盘文件配置 Yum 软件仓库
首先我们以挂载在CDROM光驱里的 CentOS 安装光盘为yum源, 运行下面的命令挂载CentOS 光盘文件到/media目录里:
[cc lang=”php”] $sudo mount /dev/dvd /media
[/code] 然后,在/etc/yum.repos.d/目录下创建yum配置文件,该文件的扩展名必须以“.repo”结尾,使用vim 命令编辑并创建新的repo文件 softtest.repo:
[cc lang=”php”] $sudo vim /etc/yum.repos.d/softtest.repo
[/code] 打开文件后,添加下面的内容到配置文件里:
[cc lang=”php”] [base] name=Server
baseurl=file:///media
gpgcheck=0
enabled=1
[/code] 保存并退出文件后,需要清空一下yum缓存,输入下面的命令:
[cc lang=”php”] $sudo yum clean all
[/code] Output:
[cc lang=”php”] [devops@osetc] $ sudo yum clean all
Loaded plugins: fastestmirror, refresh-packagekit, security
Cleaning repos:
Cleaning up Everything
[/code] 现在你就可以使用yum命令来安装软件包了。
如果你有一个自己的本地yum库,如何添加其它的软件包到yum库里呢? 这个需要更YUM库里软件列表文件也就是repomd.xml文件。那么如何来更新这个文件呢? 首先需要安装createrepo软件包,然后通过该软件为软件包目录创建新的软件仓库列表。
1.下载并安装createrepo, 使用下面的命令:
[cc lang=”php”] $sudo yum -y install libxml2-python
$sudo wget ftp://195.220.108.108/linux/dag/redhat/el4/en/i386/dag/RPMS/createrepo-0.4.6-1.el4.rf.noarch.rpm
[/code] [cc lang=”php”] $sudo rpm -ivh createrepo-0.4.6-1.el4.rf.noarch.rpm
或者:
$sudo yum -y install createrepo
[/code] 2. 使用createrepo命令为软件包目录创建新的软件仓库列表
[cc lang=”php”] $sudo createrepo /mnt/Packages
[/code]
3.
更新下yum缓存
[cc lang=”php”] $sudo yum clean all
[/code] 这样就完成了往yum库里添加软件包的操作。

CentOS /Linux: 深入理解Man 命令

Linux 命令 man可能是我们在学习linux的时候最早使用的命令之一。大家都知道man命令可以帮助我们了解其它命令的使用方法。 除了这些,你对 Linux man 命令还有其它的了解吗?本文将会给大家讲述下的 Linux Man 命令的背后的事情。
linux操作系统
man命令主要用来格式化显示命令的在线帮助页面,这些帮助信息主要会有每个命令的开发者编写。
man 命令的帮助信息主要包含8个部分:
man1: User programs
Manual pages that describe publicly accessible commands are contained
in this chapter. Most program documentation that a user will need to
use is located here.
man2: System calls
This section describes all of the system calls (requests for the kernel
to perform operations).
man3: Library functions and subroutines
Section 3 describes program library routines that are not direct calls
to kernel services. This and chapter 2 are only really of interest to
programmers.
man4: Special files
Section 4 describes the special files, related driver functions, and
networking support available in the system. Typically, this includes
the device files found in /dev and the kernel interface to networking
protocol support.

man5: File formats

The formats for many data files are documented in the section 5. This
includes various include files, program output files, and system files.
man6: Games
This chapter documents games, demos, and generally trivial programs.
Different people have various notions about how essential this is.
man7: Miscellaneous Manual pages that are difficult to classify are
designated as being section 7. The troff and other text processing
macro packages are found here.
man8: System administration Programs used by system administrators
for system operation and maintenance are documented here. Some of
these programs are also occasionally useful for normal users.
当我们使用man命令去查看某个命令的帮助信息时候,主要显示的是第一部分的内容和第五部分的内容,也就是man 1和man 5. 比如用man ls命令,其实是 man 1 ls. 在帮助信息里的最上面你可以看到 LS(1)的信心,这个1就代表调用的是man 1.
man命令的所有信息都保存在/usr/share/man目录下:
[cc lang=”php”] [root@itsprite ~]# ls -l /usr/share/man
total 352
drwxr-xr-x. 5 root root 4096 Dec 17 2012 bg
drwxr-xr-x. 5 root root 4096 Apr 3 2012 cs
drwxr-xr-x. 5 root root 4096 Dec 17 2012 da
drwxr-xr-x. 5 root root 4096 Apr 3 2012 de
drwxr-xr-x. 5 root root 4096 Dec 17 2012 el
drwxr-xr-x. 5 root root 4096 Dec 17 2012 en
drwxr-xr-x. 5 root root 4096 Dec 17 2012 es
drwxr-xr-x. 5 root root 4096 Dec 17 2012 fi
drwxr-xr-x. 6 root root 4096 Apr 3 2012 fr
drwxr-xr-x. 5 root root 4096 Dec 17 2012 hr
drwxr-xr-x. 4 root root 4096 Dec 17 2012 hu
drwxr-xr-x. 3 root root 4096 Dec 17 2012 id
drwxr-xr-x. 6 root root 4096 Apr 3 2012 it
drwxr-xr-x. 5 root root 4096 Apr 3 2012 ja
drwxr-xr-x. 5 root root 4096 Dec 17 2012 ko
drwxr-xr-x. 2 root root 4096 Sep 23 2011 man0p
drwxr-xr-x. 2 root root 36864 May 12 2014 man1
drwxr-xr-x. 2 root root 4096 Sep 23 2011 man1p
drwxr-xr-x. 2 root root 4096 Sep 23 2011 man1x
drwxr-xr-x. 2 root root 4096 Sep 23 2011 man2
drwxr-xr-x. 2 root root 4096 Sep 23 2011 man2x
drwxr-xr-x. 2 root root 110592 Apr 22 2014 man3
drwxr-xr-x. 2 root root 4096 Sep 23 2011 man3p
drwxr-xr-x. 2 root root 4096 Sep 23 2011 man3x
drwxr-xr-x. 2 root root 4096 Dec 17 2012 man4
drwxr-xr-x. 2 root root 4096 Sep 23 2011 man4x
drwxr-xr-x. 2 root root 4096 Apr 22 2014 man5
drwxr-xr-x. 2 root root 4096 Sep 23 2011 man5x
drwxr-xr-x. 2 root root 4096 Sep 23 2011 man6
drwxr-xr-x. 2 root root 4096 Sep 23 2011 man6x
drwxr-xr-x. 2 root root 4096 Apr 22 2014 man7
drwxr-xr-x. 2 root root 4096 Sep 23 2011 man7x
drwxr-xr-x. 2 root root 20480 May 12 2014 man8
drwxr-xr-x. 2 root root 4096 Sep 23 2011 man8x
drwxr-xr-x. 2 root root 4096 Sep 23 2011 man9
drwxr-xr-x. 2 root root 4096 Sep 23 2011 man9x
drwxr-xr-x. 2 root root 4096 Sep 23 2011 mann
drwxr-xr-x. 5 root root 4096 Dec 17 2012 nl
drwxr-xr-x. 5 root root 4096 Apr 3 2012 pl
drwxr-xr-x. 5 root root 4096 Dec 17 2012 pt
drwxr-xr-x. 5 root root 4096 Dec 17 2012 pt_BR
drwxr-xr-x. 5 root root 4096 Dec 17 2012 ro
drwxr-xr-x. 6 root root 4096 Dec 17 2012 ru
drwxr-xr-x. 3 root root 4096 Dec 17 2012 sk
drwxr-xr-x. 5 root root 4096 Dec 17 2012 sl
drwxr-xr-x. 6 root root 4096 Dec 17 2012 sv
drwxr-xr-x. 5 root root 4096 Dec 17 2012 tr
drwxr-xr-x. 4 root root 4096 Dec 17 2012 zh_CN
drwxr-xr-x. 4 root root 4096 Dec 17 2012 zh_TW
[/code] 如果你先查看某个命令在当前系统都包含哪几部分的帮助信息,可以使用”man -f” 命令来查看:
[cc lang=”php”] [root@osetc man5]# man -f init
init (5) – Upstart init daemon job configuration
init (8) – Upstart process management daemon
[/code] [cc lang=”php”] 查看某个命令的所有的man帮助信息,使用命令“man -a“
[root@itsprite man5]# man -a init
[/code] 该命令会先显示man 8的 帮助信息,当退出之前的页面,会自动显示man 5 的帮助信息。

Fedora /Linux: 如何在windows 8 系统下创建Fedora 21 Live USB

Fedora官方最近发布了其最新版Fedora 21,对于喜欢使用fedora linux系统的人来说,可能只是想体验下 Fedora 21的新变化,那么就想着创建一个Fedora 21 Live USB? 本文将会给大家讲述下如何在windows 8 系统下创建一个 Fedora 21 Live USB.
fedora
创建 Fedora 21 Live USB之前,需要准备一个 大概4GB大小的U盘,还有Fedora21 Live 的镜像文件。
下载并安装Rawrite32 工具,可以从下面的地址下载(
[cc lang=”php”] http://www.netbsd.org/~martin/rawrite32/download.html)。
[/code] Winodws8 创建 Fedora 21 Live USB
打开我们上面安装好的Rawrite 32 工具, 打开一个Fedora 21 Live 镜像文件, 如下图所示:
选中USB disk为你要写入的目的盘, 然后点击”write to disk”. 等待写盘完成后,你就可以重启电脑,从U 盘启动 Fedora 21 Live USB 了。

CentOS /Linux: 如何升级软件包,编译器,函数库,系统

当我们使用Linux一段时间以后,自然不会满足总是在没有任何变化的系统中工作,而是渴望能象在Windows系统中一样,不断对自己的Linux进行 升级。另一方面,Linux本身就是一个开放的系统,每天都会有新的软件出现,Linux发行套件和内核也在不断更新。在这样的情况下,学会对 Linux(包括系统本身和各种软件)进行升级就显得非常迫切了。
在Linux环境下,升级的对象可以是一般的软件,可以是编译器,也可以是系统的内核,甚至是系统本身。下面,我就分别讲讲对不同对象的升级方法。
linux操作系统
CentOS 升级一般软件
一般来说,升级应用软件是比较简单的,因为你不用太在意升级后对其他软件的影响(如果是升级系统,情况就不一样了)。首先,你必须找到希望升级的新版本。 你可以在Linux的专门站点上寻找自己中意的软件。然后就是使用各种下载工具将软件下载到指定目录中。下载的软件大部分是以tar打包的gzip压缩文 件。
在处理这些软件之前最好使用tar tvf 或 tar ztvf 命令看看下载下来的文件中包含了一些什么文件。因为得到的软件可能是二进制文件也可能是源码,使用上述的命令可以看看究竟是哪一种文件。
如果是二进制文件,一般可以直接将包打开,然后删除相应的老文件就可以了。
如果是源文件则要留心包里面是否有帮助和安装文件(readme / install / help)等等。然后将软件打开到指定的目录中去,仔细看看帮助和安装文件中的提示和安装约定,再进行安装工作。这时,安装工作意味着要对源代码进行编 译。首先要对Makefile文件进行修改,修改的内容和修改的方法在软件包中的相关文件中往往可以找到,另外有的时候软件包里会包含一个shell程序 configure,执行它可以省不少时间。对makefile处理完以后,就可以使用make命令来编译指定的文件。最后用make install命令将软件安装到自己的计算机上。
CentOS 升级编译器
我们可以先用“gcc -v”命令看看自己当前的gcc版本,然后决定是否要进行升级。当我们需要对自己的gcc、连接器、汇编器以及各种头文件和函数库进行升级的时候,我们就 可以到相关站点上获得对应的软件包,然后在指定目录下开打,同时删除(覆盖)原来的老文件就可以了。
CentOS 升级函数库
因为升级后要重新指定库的连接,所以函数库是比较麻烦的。我们知道,Linux系统的库文件分为档案库和共享库两种类型。档案库的文件一般是 libx.a,而共享库的文件一般是libx.so.version,升级函数库时必须使用新的版本的.a和.so.version文件替换老版本的对应 文件。对.a文件来说非常容易,只要将新文件拷进指定的目录,覆盖原来的文件就可以了。但是我们对共享库进行操作的时候就要特别小心了。绝不能简单地将新 文件拷到一个目录下,然后删除旧的文件。因为有可能旧的函数库正在为某个程序所使用。我们必须保证每个程序都能够正确地找到共享库。简单的将,当我们将新 版本的共享库文件放到指定目录下以后,使用ln命令来完成:
ln –sf /usr/lib/libdb.so.new(“new”指新的版本号) /usr/lib/libdb.so.old(“old”是原有的文件);比如: /usr/lib/libdb.so.2原来指向的文件是/usr/llib/libdb.so.2.0.1,现在有一个新文件 /usr/lib/libdb.so.2.78.1,我们可以这样处理:ln –sf /usr/lib/libdb.so.2.78.1 /usr/lib/libdb.so.2 ;然后,我们才能将/usr/lib/libdb.so.2.0.1文件进行删除。
CentOS 升级系统
最简单的升级方法当然是。一张cd-rom里就可以将整个系统完全包括了。当然,这样的升级方法比较费事,同时,每一次升级都意味着原来的文件有可能丢 失,因此,完全没有必要总是将系统重新安装一次。每一个Linux发行套件其实都是记录升级情况的文件。比如slackware中有一个 changelog.txt文件,按时间顺序记录了slackware的更新状况。而在RedHat中则是/redhat-4.2/updates /00readme.errata.我们可以从这些文件中看出是不是需要进行升级。然后找到相应部分的软件包,使用installpkg filename或者rpm –U filename来将软件包安装在计算机上。
来源:linuxdiyf.com

CentOS /Linux: 如何挂在只读的Linux文件系统

Linux 系统下的mount命令主要用来挂在系统发现的文件系统或者硬件设备比如光盘,移动硬盘,闪存盘等。那么如何在 CentOS Linux 系统下挂在一个linux 文件系统呢,比如: ext3 或者ext4. ? 如何在 CentOS Linux 系统下挂在一个只读的文件系统呢?本文将会讲述挂在只读文件系统的方法。
linux logo
CentOS Linux 挂载 ext3文件系统
假如在/dev/sdb1磁盘下有一个ext3的文件系统,在linux系统下如何来挂载使用呢?我们可以使用下面的命令将其挂载到/mnt/disk 目录下,输入命令:
[cc lang=”php”] $mount -t ext3 /dev/sdb1 /mnt/disk
[/code] 如果你想让系统启动的时候,这个文件系统能够自动挂载,那么你需要在/etc/fstab 配置文件里定义挂载关系。使用vim命令编辑/etc/fstab 文件,加入下面的内容:
[cc lang=”php”] /dev/sdb1 /mnt/disk ext3 defaults 0 0
[/code] 如果你在/etc/fstab配置文件里定义了这个文件系统的挂载关系,那么可以直接使用下面的命令来挂载:
[cc lang=”php”] $mount /mnt/disk
[/code] CentOS /Linux 挂载只读文件系统
在centos 系统下,挂载一个只读的文件系统,需要使用mount命令的”-o” 选项,并指定值为“ro”, 输入下面的命令只读挂载/dev/sdb1 下的文件系统。
[cc lang=”php”] $sudo mount -t ext3 -o ro /dev/sdb1 /mnt/disk
[/code] 如果你已经挂载了一个文件系统,想将其直接变成只读挂载,输入下面的命令:
[cc lang=”php”] $sudo mount -o remount,ro /mnt/disk
[/code]

CentOS /Linux /Unix: 更改系统时区

一个集群系统下应该会有多台机器,每台机器的时间必须保持一致,如何让每个系统的时间保持一致呢?我们可以手动使用date命令去更改,也可以使用NTP时间同步。那么在保持时间一致的同时,最重要的还是要确保每个机器是在同一个时区。 本会将会讲述对于不同的操作系统平台更改系统时区的方法。
linux logo
CentOS Linux 系统更改系统时区
对于CentOS, Redhat 和Suse的系统,我们可以采用下面的方法来修改系统的时区:
Step1# 首先你要知道系统时区要更改成什么?你可以去/usr/share/zoneinfo 目录下找到你想要更换的时区名称。使用下面的命令你可以看到 linux系统支持的所有时区:
[cc lang=”php”] [root@itsprite ~]# ls /usr/share/zoneinfo/
Africa Australia Cuba Etc GMT0 Iceland Japan
。。。
[/code] Step2# 备份现有的/etc/localtime配置文件,并改名为localtime.bak, 输入下面的命令:
[cc lang=”php”] $sudo mv /etc/localtime /etc/localtime.bak
[/code] Step3# 在/etc/目录下创建一个新的localtime 文件,并做软连接到你要更改的时区文件, 输入下面的命令:
[cc lang=”php”] $sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
[/code] Step4# 将系统时钟同步到硬件时钟,输入下面的命令:
[cc lang=”php”] $sudo hwclock –systohc
[/code] AIX 系统更改系统时区
1.查看当前AIX系统的时候去,使用下面的命令:
[cc lang=”php”] # cat /etc/environment | grep TZ
TZ=EST5EDT
[/code] 2. 在/usr/share/lib/zoneinfo 目录里找到你要更改的时区, 然后使用smit 命令更新时区。
[cc lang=”php”] # ls /usr/share/lib/zoneinfo
Australia EET GMT+10 GMT+4 GMT-1 GMT-4
Brazil EST GMT+11 …..
# sudo smit EST
[/code]

CentOS /Linux: 创建用户及用户组

对于linux初学者来说,如果想创建一个普通的用户和用户组,该如何来做呢? 如何在 CentOS Linux系统下创建用户并创建用户组呢?本文将会讲述在linux系统下创建用户及用户组的步骤。

CentOS Linux 创建用户及用户组

首先如果你想创建用户或用户组的话,必须先使用具有root权限的用户登录系统, 普通用户是没有权限来创建用户及用户组的。输入下面的命令来创建一个名为testg的用户组:
[cc lang=”php”] $sudo groupadd testg
[/code] 输入下面的命令来创建一个名为testg的用户:
[cc lang=”php”] $sudo useradd testg
[/code] 输出:
[cc lang=”php”] [devops@osetc~]$ sudo useradd testg
useradd: group testg exists – if you want to add this
user to that group, use -g.
[/code] 从上面的命令输出,你可以知道,用户testg并没有创建成功, 因为useradd命令在创建用户的时候,会自动创建一个同名的用户组,那么现在该怎么办呢?可以使用下面的命令将新创建的用户自动加入到已经创建好的testg用户组里:
[cc lang=”php”] $ sudo useradd -g testg testg
[/code] 这样用户和用户组都创建成了,下一步,需要给用户设置密码。输入下面的命令为testg用户设置密码:
[cc lang=”php”] $sudo passwd testg
[/code] 输出:
[cc lang=”php”] [devops@osetc~]$ sudo passwd testg
Changing password for user testg.
New password:
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
[/code] 当你为testg设置了密码之后,可以使用su testg命令切换到该用户下使用linux系统了。
[cc lang=”php”] [devops@osetc~]$ su testg
[testg@c668f1n02 devops]$ id testg
uid=501(testg) gid=2600(testg) groups=2600(testg)
[/code] done…

Linux/ Windows/ Mac: 如何刷新DNS缓存

当你访问一个域名或者网址的时候,可能会遇到无法访问的情况,也可能会提示你域名无法解析,这个时候我们该怎么办呢?我们可以尝试下刷新DNS的缓存,从域名服务器上获取最新的域名解析,尤其是针对新注册的域名。 对于不同的操作系统刷新DNS的方法是不同,本文将会讲述在不同的操作系统类型下如何来刷新其DNS的缓存,进而获取到最新的域名解析。
linux操作系统

​Linux 刷新 DNS 缓存

在 CentOS linux 系统下,需要重启 nscd 服务来刷新DNS缓存,输入下面的命令:
[cc lang=”php”] $sudo /etc/init.d/nscd restart
or
$ service nscd restart
[/code]  
这样你本机的DNS缓存就被重新刷新并获取了最新的域名解析信息。
 
Mac OS X  系统刷新DNS缓存
对于苹果的Mac OS X 系统,需要在命令行窗口输入下面的命令:
[cc lang=”php”] lookupd -flushcache
or
dscacheutil -flushcache
[/code]  
Windows 系统刷新DNS缓存
打开DOS命令行窗口,输入命令:
[cc lang=”php”] ipconfig /flushdns
[/code] 输出:
[cc lang=”php”] C:\>ipconfig /flushdns
Windows IP Configuration
Successfully flushed the DNS Resolver Cache.
[/code]  

CentOS 7 安装Jetty web 服务器

Jetty 是一个可以提供web 服务和 javax.servlet 容器的工具,另外还支持比如:SPDY, WebSocket, OSGI, JMX, JNDI, JAAS 还有其它的一些集成。那么如果在 CentOS 7 下来安装搭建 Jetty web 服务器呢?
linux logo

CentOS 7 安装并搭建 Jetty Web 服务器

1.首先要确保当前的系统已经安装了JAVA JDK, 如果没有安装,可以使用下面的命令来安装:

$sudo yum installjava-1.7.0-openjdk

2. 下载jetty源码包 并解压缩到/opt 目录

$sudo  wget http://download.eclipse.org/jetty/stable-9/dist/jetty-distribution-9.2.5.v20141112.tar.gz
$ tar -zxvf jetty-distribution-9.2.5.v20141112.tar.gz /opt

3. 更改jetty-distribution-9.2.5.v20141112 目录名为一个简单的名字,比如:jetty, 输入下面的命令:

$sudo mv /opt/jetty-distribution-9.2.5.v20141112 /opt/jetty

4. 编辑/etc/default/jetty 配置文件,添加下面的配置信息到该文件里:

JETTY_HOME=/opt/jetty
JETTY_USER=root
JETTY_PORT=8080
JETTY_HOST=192.168.1.154
JETTY_LOGS=/opt/jetty/logs/

5. 重启jetty web 服务, 输入下面的命令:

$sudo service jetty start

CentOS/Linux: 如何升级ZMQ2.x 到 ZMQ 4.x

当你在 CentOS 系统下安装完salt-minion后,启动salt服务的时候会产生下面的警告信息:
[WARNING ] You have a version of ZMQ less than ZMQ 3.2! There are known connection keep-alive issues with ZMQ < 3.2 which may result in loss of contact with minions. Please upgrade your ZMQ!
那么如何在解决这个问题呢?产生这个问题的原因是因为salt-master版本用的是ZMQ 3, 而salt-miniton则用的是ZMQ 2.2, 这样就会导致它们之间的通信会有问题。所以解决问题的方法就是升级ZMQ的版本为ZMQ 3以上。
linux操作系统
首先,我们需要下载下面的两个文件,并升级安装,输入下面的命令:
[cc lang=”vim”] $sudo wget http://copr-be.cloud.Fedoraproject.org/results/saltstack/zeromq4/epel-5-x86_64/zeromq-4.0.4-2.el5/zeromq-4.0.4-2.el5.x86_64.rpm
$ sudo wget http://copr-be.cloud.fedoraproject.org/results/saltstack/zeromq4/epel-5-x86_64/python-zmq-14.3.1-3.el5/python26-zmq-14.3.1-3.el5.x86_64.rpm
[/code]  
升级安装刚才下载的包:

$sudo rpm -Uvh python26-zmq-14.3.1-3.el5.x86_64.rpm zeromq-4.0.4-2.el5.x86_64.rpm
 

下一步,需要重启salt-minion,输入下面的命令:
[cc lang=”php”] $sudo /etc/init.d/salt-minion restart
[/code]  

CentOS 7/Linux: 如何启用iptables 防火墙

在 最新的 CentOS 7 linux 系统里,将默认的防火墙更改为firewalld, 取代了之前的iptables 防火墙,那么如何再次启用iptrables 防火墙呢?本文将会告诉你如何来删除现有的 firewalld 防火墙? 如何在 CentOS 7 下安装之前的 iptables 防火墙
centos 7

CentOS 7 关闭 firewalld 防火墙

首先要停止 firewalld 服务,输入下面的命令:
[cc lang=”php”] $sudo systemctl stop firewalld.service
[/code] 然后要禁止 firewalld 服务在系统启动的时候自动启动, 输入下面的命令:
[cc lang=”php”] $sudo systemctl disable firewalld.server
[/code] 如果你以后都不会用firewalld 服务,那么可以直接将其卸载,使用下面的命令:
[cc lang=”php”] $sudo yum  remove firewalld -y
[/code]

CentOS 7 安装 iptables 防火墙

安装iptables 包,使用下面的命令:
[cc lang=”php”] $sudo yum install iptables-services
[/code] ​
设置iptables 防火墙服务开机自动启动,输入下面的命令:
[cc lang=”php”] $sudo systemctl enable iptables
[/code] 如果你想使用/etc/init.d/iptables save 命令来保存已经更改的防火墙策略,那么需要输入下面的命令,将iptables.init 脚本用刚才安装iptables 启动脚本覆盖,输入下面的命令:
[cc lang=”php”] $sudo /usr/libexec/iptables/iptables.init /etc/init.d/iptables
[/code] 这个时候你就可以使用 /etc/init.d/iptables save 命令了
[cc lang=”php”] $sudo /etc/init.d/iptables save
[/code]

CentOS 7:如何安装Gnome GUI 图形界面

当你安装centos服务器版本的时候,系统默认是不会安装 CentOS 的图形界面程序的,比如:gnome或者kde, 那么如果你想在图形界面下工作的话,可以手动来安装CentOS Gnome GUI包,本文将会讲述如何在CentOS 7 系统下安装gnome图形界面程序。
在安装Gnome 包之前,我们需要先检查下安装源是否正常,因为我们要通过yum命令来安装gnome包, 而yum命令式通过yum 源来下载安装包的。
1.在命令行下输入下面的命令来安装 Gnome 包

$sudo  yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
 

2. 更新系统的运行级别
如果你想在系统下次启动的时候自动进入图形界面,那么我们需要更改系统的运行级别,输入下面的命令来启用图形界面。

$sudo ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target
 

3. 重启系统
当系统再次启动的时候,就会默认进入图形界面。
centos 7

Linux/CentOS: 如何更换yum源文件

当你安装完centos系统后,如果你想安装新的包或者更新包,那么你可以使用“yum update” 命令去更新,但默认情况下,centos会采用默认的官方yum源来更新包,这样可能会导致更新速度慢,或者无法更新,那么有没有更好的方法来更新yum源呢?我们可以找一个国内的CentOS源来替换,那么如何来替换yum源呢?本文将会告诉大家如何来更换163的centos源:
linux操作系统

更换CentOS Yum 源

1.首先要下载repo文件,在命令行输入下面的命令:
[cc lang=”php”] $wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
[/code] 2. 要现备份下原来的yum源,然后替换当前系统的repo文件,输入下面的命令:
[cc lang=”php”] $cd /etc/yum.repos.d/
$sudo mv CentOS-Base.repo CentOS-Base.repo.bak
$mv CentOS6-Base-163.repo CentOS-Base.repo
[/code] 3.做好以上的工作之后,我们就可以来执行yum 更新了
[cc lang=”php”] $sudo yum clean all
$sudo yum makecache
$sudo yum update
[/code] ​

QQ For Linux:如何在Ubuntu系统下安装QQ聊天软件

对于刚开始学习linux的人来说,可能有一个很感兴趣的事情就是在linux系统里可不可以安装qq聊天软件呢? 如何安装qq聊天软件?本文将会带领大家在ubuntu系统下安装腾讯官方发布的 QQ For Linux 安装包。
首先我们要去腾讯官方去下载QQ For Linux 安装包,如果是ubuntu系统,需要下载deb包。
下面开始正常的包安装:
1. 打开一个命令行终端,输入下面的安装命令:

$sudo dpkg -i  linuxqq_v1.0.2-beta1_i386.deb
 

qq for linux 安装
qq for linux 安装
2. 如果是64位的系统,还需要安装ia32-libs包, 使用下面的命令:

$sudo apt-get install ia32-libs
 

qq for linux
 

腾讯公司发布的 QQ For Linux 最新版下载

QQ聊天软件是中国使用量最大的即时聊天工具,刚开始QQ只有windows版本,慢慢的就又有了移动版本,那么在linux下是否也可以安装qq聊天工具呢?QQ是否有发布Linux版本的QQ聊天工具呢?腾讯官方发布了针对不同linux发行版本的QQ安装包,有针对Ubuntu的DEB包,针对SUSE/CentOS/Fedora/Red Hat 的RPM包,还有针对所有linux发行版本的源码安装包。
qq for linux
QQ For Linux 下载地址:
针对Ubuntu 7.10或更高版本: linuxqq_v1.0.2-beta1_i386.deb
SUSE/CentOS/Fedora/Red Hat 的RPM安装包下载地址:linuxqq-v1.0.2-beta1.i386.rpm
QQ For Linux源码安装包:linuxqq_v1.0.2_i386.tar.gz

Linux学习:工作中最常用的linux命令

在上个文章,说了下如何在vmware虚拟机上安装linux操作系统,本文主要说一下在装完系统后,如何使用和必须记住的linux常用基本命令。linux命令有两种类型,内置的shell命令和linux系统命令,linux下的命令有很多,大概有几千个,所以也不用记住所有的命令,只需要熟练使用那些常用的久可以。本文将会列出日常工作中最常用的命令。
linux操作系统

 系统信息

arch 显示机器的处理器架构(1)
uname -m 显示机器的处理器架构(2)
uname -r 显示正在使用的内核版本
dmidecode -q 显示硬件系统部件 – (SMBIOS / DMI)
hdparm -i /dev/hda 罗列一个磁盘的架构特性
hdparm -tT /dev/sda 在磁盘上执行测试性读取操作
cat /proc/cpuinfo 显示CPU info的信息
cat /proc/interrupts 显示中断
cat /proc/meminfo 校验内存使用
cat /proc/swaps 显示哪些swap被使用
cat /proc/version 显示内核的版本
cat /proc/net/dev 显示网络适配器及统计
cat /proc/mounts 显示已加载的文件系统
lspci -tv 罗列 PCI 设备
lsusb -tv 显示 USB 设备
date 显示系统日期
cal 2007 显示2007年的日历表
date 041217002007.00 设置日期和时间 – 月日时分年.秒
clock -w 将时间修改保存到 BIOS

关机 (系统的关机、重启以及登出 )

shutdown -h now 关闭系统(1)
init 0 关闭系统(2)
telinit 0 关闭系统(3)
shutdown -h hours:minutes & 按预定时间关闭系统
shutdown -c 取消按预定时间关闭系统
shutdown -r now 重启(1)
reboot 重启(2)
logout 注销

 文件和目录

cd /home 进入 ‘/ home’ 目录’
cd .. 返回上一级目录
cd ../.. 返回上两级目录
cd 进入个人的主目录
cd ~user1 进入个人的主目录
cd – 返回上次所在的目录
pwd 显示工作路径
ls 查看目录中的文件
ls -F 查看目录中的文件
ls -l 显示文件和目录的详细资料
ls -a 显示隐藏文件
ls *[0-9]* 显示包含数字的文件名和目录名
tree 显示文件和目录由根目录开始的树形结构(1)
lstree 显示文件和目录由根目录开始的树形结构(2)
mkdir dir1 创建一个叫做 ‘dir1′ 的目录’
mkdir dir1 dir2 同时创建两个目录
mkdir -p /tmp/dir1/dir2 创建一个目录树
rm -f file1 删除一个叫做 ‘file1′ 的文件’
rmdir dir1 删除一个叫做 ‘dir1′ 的目录’
rm -rf dir1 删除一个叫做 ‘dir1’ 的目录并同时删除其内容
rm -rf dir1 dir2 同时删除两个目录及它们的内容
mv dir1 new_dir 重命名/移动 一个目录
cp file1 file2 复制一个文件
cp dir/* . 复制一个目录下的所有文件到当前工作目录
cp -a /tmp/dir1 . 复制一个目录到当前工作目录
cp -a dir1 dir2 复制一个目录
ln -s file1 lnk1 创建一个指向文件或目录的软链接
ln file1 lnk1 创建一个指向文件或目录的物理链接
touch -t 0712250000 file1 修改一个文件或目录的时间戳 – (YYMMDDhhmm)
file file1 outputs the mime type of the file as text
iconv -l 列出已知的编码
iconv -f fromEncoding -t toEncoding inputFile > outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding.
find . -maxdepth 1 -name *.jpg -print -exec convert “{}” -resize 80×60 “thumbs/{}” \; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick)

 文件搜索

find / -name file1 从 ‘/’ 开始进入根文件系统搜索文件和目录
find / -user user1 搜索属于用户 ‘user1’ 的文件和目录
find /home/user1 -name \*.bin 在目录 ‘/ home/user1′ 中搜索带有’.bin’ 结尾的文件
find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件
find / -name \*.rpm -exec chmod 755 ‘{}’ \; 搜索以 ‘.rpm’ 结尾的文件并定义其权限
find / -xdev -name \*.rpm 搜索以 ‘.rpm’ 结尾的文件,忽略光驱、捷盘等可移动设备
locate \*.ps 寻找以 ‘.ps’ 结尾的文件 – 先运行 ‘updatedb’ 命令
whereis halt 显示一个二进制文件、源码或man的位置
which halt 显示一个二进制文件或可执行文件的完整路径

 挂载一个文件系统

mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 – 确定目录 ‘/ mnt/hda2’ 已经存在
umount /dev/hda2 卸载一个叫做hda2的盘 – 先从挂载点 ‘/ mnt/hda2’ 退出
fuser -km /mnt/hda2 当设备繁忙时强制卸载
umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用
mount /dev/fd0 /mnt/floppy 挂载一个软盘
mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrom
mount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrom
mount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrom
mount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件
mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统
mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备
mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享

 磁盘空间

df -h 显示已经挂载的分区列表
ls -lSr |more 以尺寸大小排列文件和目录
du -sh dir1 估算目录 ‘dir1′ 已经使用的磁盘空间’
du -sk * | sort -rn 以容量大小为依据依次显示文件和目录的大小
rpm -q -a –qf ‘%10{SIZE}t%{NAME}n’ | sort -k1,1n 以大小为依据依次显示已安装的rpm包所使用的空间 (fedora, redhat类系统)
dpkg-query -W -f=’${Installed-Size;10}t${Package}n’ | sort -k1,1n 以大小为依据显示已安装的deb包所使用的空间 (ubuntu, debian类系统)

用户和群组

groupadd group_name 创建一个新用户组
groupdel group_name 删除一个用户组
groupmod -n new_group_name old_group_name 重命名一个用户组
useradd -c “Name Surname ” -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 “admin” 用户组的用户
useradd user1 创建一个新用户
userdel -r user1 删除一个用户 ( ‘-r’ 排除主目录)
usermod -c “User FTP” -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性
passwd 修改口令
passwd user1 修改一个用户的口令 (只允许root执行)
chage -E 2005-12-31 user1 设置用户口令的失效期限
pwck 检查 ‘/etc/passwd’ 的文件格式和语法修正以及存在的用户
grpck 检查 ‘/etc/passwd’ 的文件格式和语法修正以及存在的群组
newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组

文件的权限 – 使用 “+” 设置权限,使用 “-” 用于取消

ls -lh 显示权限
ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示
chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限
chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限
chown user1 file1 改变一个文件的所有人属性
chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性
chgrp group1 file1 改变文件的群组
chown user1:group1 file1 改变一个文件的所有人和群组属性
find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件
chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 – 运行该文件的用户也被赋予和所有者同样的权限
chmod u-s /bin/file1 禁用一个二进制文件的 SUID位
chmod g+s /home/public 设置一个目录的SGID 位 – 类似SUID ,不过这是针对目录的
chmod g-s /home/public 禁用一个目录的 SGID 位
chmod o+t /home/public 设置一个文件的 STIKY 位 – 只允许合法所有人删除文件
chmod o-t /home/public 禁用一个目录的 STIKY 位

文件的特殊属性 – 使用 “+” 设置权限,使用 “-” 用于取消

chattr +a file1 只允许以追加方式读写文件
chattr +c file1 允许这个文件能被内核自动压缩/解压
chattr +d file1 在进行文件系统备份时,dump程序将忽略这个文件
chattr +i file1 设置成不可变的文件,不能被删除、修改、重命名或者链接
chattr +s file1 允许一个文件被安全地删除
chattr +S file1 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘
chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件
lsattr 显示特殊的属性

打包和压缩文件

bunzip2 file1.bz2 解压一个叫做 ‘file1.bz2’的文件
bzip2 file1 压缩一个叫做 ‘file1’ 的文件
gunzip file1.gz 解压一个叫做 ‘file1.gz’的文件
gzip file1 压缩一个叫做 ‘file1’的文件
gzip -9 file1 最大程度压缩
rar a file1.rar test_file 创建一个叫做 ‘file1.rar’ 的包
rar a file1.rar file1 file2 dir1 同时压缩 ‘file1’, ‘file2’ 以及目录 ‘dir1’
rar x file1.rar 解压rar包
unrar x file1.rar 解压rar包
tar -cvf archive.tar file1 创建一个非压缩的 tarball
tar -cvf archive.tar file1 file2 dir1 创建一个包含了 ‘file1’, ‘file2’ 以及 ‘dir1’的档案文件
tar -tf archive.tar 显示一个包中的内容
tar -xvf archive.tar 释放一个包
tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下
tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包
tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包
tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包
tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包
zip file1.zip file1 创建一个zip格式的压缩包
zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包
unzip file1.zip 解压一个zip格式压缩包

RPM 包 – (Fedora, Redhat及类似系统)

rpm -ivh package.rpm 安装一个rpm包
rpm -ivh –nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告
rpm -U package.rpm 更新一个rpm包但不改变其配置文件
rpm -F package.rpm 更新一个确定已经安装的rpm包
rpm -e package_name.rpm 删除一个rpm包
rpm -qa 显示系统中所有已经安装的rpm包
rpm -qa | grep httpd 显示所有名称中包含 “httpd” 字样的rpm包
rpm -qi package_name 获取一个已安装包的特殊信息
rpm -qg “System Environment/Daemons” 显示一个组件的rpm包
rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表
rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表
rpm -q package_name –whatrequires 显示与一个rpm包存在依赖关系的列表
rpm -q package_name –whatprovides 显示一个rpm包所占的体积
rpm -q package_name –scripts 显示在安装/删除期间所执行的脚本l
rpm -q package_name –changelog 显示一个rpm包的修改历史
rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包所提供
rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表
rpm –import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书
rpm –checksig package.rpm 确认一个rpm包的完整性
rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性
rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间
rpm -Va 检查系统中所有已安装的rpm包- 小心使用
rpm -Vp package.rpm 确认一个rpm包还未安装
rpm2cpio package.rpm | cpio –extract –make-directories *bin* 从一个rpm包运行可执行文件
rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm 从一个rpm源码安装一个构建好的包
rpmbuild –rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包

YUM 软件包升级器 – (Fedora, RedHat及类似系统)

yum install package_name 下载并安装一个rpm包
yum localinstall package_name.rpm 将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系
yum update package_name.rpm 更新当前系统中所有安装的rpm包
yum update package_name 更新一个rpm包
yum remove package_name 删除一个rpm包
yum list 列出当前系统中安装的所有包
yum search package_name 在rpm仓库中搜寻软件包
yum clean packages 清理rpm缓存删除下载的包
yum clean headers 删除所有头文件
yum clean all 删除所有缓存的包和头文件

DEB 包 (Debian, Ubuntu 以及类似系统)

dpkg -i package.deb 安装/更新一个 deb 包
dpkg -r package_name 从系统删除一个 deb 包
dpkg -l 显示系统中所有已经安装的 deb 包
dpkg -l | grep httpd 显示所有名称中包含 “httpd” 字样的deb包
dpkg -s package_name 获得已经安装在系统中一个特殊包的信息
dpkg -L package_name 显示系统中已经安装的一个deb包所提供的文件列表
dpkg –contents package.deb 显示尚未安装的一个包所提供的文件列表
dpkg -S /bin/ping 确认所给的文件由哪个deb包提供

 APT 软件工具 (Debian, Ubuntu 以及类似系统)

apt-get install package_name 安装/更新一个 deb 包
apt-cdrom install package_name 从光盘安装/更新一个 deb 包
apt-get update 升级列表中的软件包
apt-get upgrade 升级所有已安装的软件
apt-get remove package_name 从系统删除一个deb包
apt-get check 确认依赖的软件仓库正确
apt-get clean 从下载的软件包中清理缓存
apt-cache search searched-package 返回包含所要搜索字符串的软件包名称

查看文件内容

cat file1 从第一个字节开始正向查看文件的内容
tac file1 从最后一行开始反向查看一个文件的内容
more file1 查看一个长文件的内容
less file1 类似于 ‘more’ 命令,但是它允许在文件中和正向操作一样的反向操作
head -2 file1 查看一个文件的前两行
tail -2 file1 查看一个文件的最后两行
tail -f /var/log/messages 实时查看被添加到一个文件中的内容

 文本处理

cat file1 file2 … | command <> file1_in.txt_or_file1_out.txt general syntax for text manipulation using PIPE, STDIN and STDOUT
cat file1 | command( sed, grep, awk, grep, etc…) > result.txt 合并一个文件的详细说明文本,并将简介写入一个新文件中
cat file1 | command( sed, grep, awk, grep, etc…) >> result.txt 合并一个文件的详细说明文本,并将简介写入一个已有的文件中
grep Aug /var/log/messages 在文件 ‘/var/log/messages’中查找关键词”Aug”
grep ^Aug /var/log/messages 在文件 ‘/var/log/messages’中查找以”Aug”开始的词汇
grep [0-9] /var/log/messages 选择 ‘/var/log/messages’ 文件中所有包含数字的行
grep Aug -R /var/log/* 在目录 ‘/var/log’ 及随后的目录中搜索字符串”Aug”
sed ‘s/stringa1/stringa2/g’ example.txt 将example.txt文件中的 “string1” 替换成 “string2”
sed ‘/^$/d’ example.txt 从example.txt文件中删除所有空白行
sed ‘/ *#/d; /^$/d’ example.txt 从example.txt文件中删除所有注释和空白行
echo ‘esempio’ | tr ‘[:lower:]’ ‘[:upper:]’ 合并上下单元格内容
sed -e ‘1d’ result.txt 从文件example.txt 中排除第一行
sed -n ‘/stringa1/p’ 查看只包含词汇 “string1″的行
sed -e ‘s/ *$//’ example.txt 删除每一行最后的空白字符
sed -e ‘s/stringa1//g’ example.txt 从文档中只删除词汇 “string1” 并保留剩余全部
sed -n ‘1,5p;5q’ example.txt 查看从第一行到第5行内容
sed -n ‘5p;5q’ example.txt 查看第5行
sed -e ‘s/00*/0/g’ example.txt 用单个零替换多个零
cat -n file1 标示文件的行数
cat example.txt | awk ‘NR%2==1’ 删除example.txt文件中的所有偶数行
echo a b c | awk ‘{print $1}’ 查看一行第一栏
echo a b c | awk ‘{print $1,$3}’ 查看一行的第一和第三栏
paste file1 file2 合并两个文件或两栏的内容
paste -d ‘+’ file1 file2 合并两个文件或两栏的内容,中间用”+”区分
sort file1 file2 排序两个文件的内容
sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)
sort file1 file2 | uniq -u 删除交集,留下其他的行
sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)
comm -1 file1 file2 比较两个文件的内容只删除 ‘file1’ 所包含的内容
comm -2 file1 file2 比较两个文件的内容只删除 ‘file2’ 所包含的内容
comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分

 字符设置和文件格式转换

dos2unix filedos.txt fileunix.txt 将一个文本文件的格式从MSDOS转换成UNIX
unix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS
recode ..HTML < page.txt > page.html 将一个文本文件转换成html
recode -l | more 显示所有允许的转换格式

文件系统分析

badblocks -v /dev/hda1 检查磁盘hda1上的坏磁块
fsck /dev/hda1 修复/检查hda1磁盘上linux文件系统的完整性
fsck.ext2 /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性
e2fsck /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性
e2fsck -j /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性
fsck.ext3 /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性
fsck.vfat /dev/hda1 修复/检查hda1磁盘上fat文件系统的完整性
fsck.msdos /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性
dosfsck /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性

 初始化一个文件系统

mkfs /dev/hda1 在hda1分区创建一个文件系统
mke2fs /dev/hda1 在hda1分区创建一个linux ext2的文件系统
mke2fs -j /dev/hda1 在hda1分区创建一个linux ext3(日志型)的文件系统
mkfs -t vfat 32 -F /dev/hda1 创建一个 FAT32 文件系统
fdformat -n /dev/fd0 格式化一个软盘
mkswap /dev/hda3 创建一个swap文件系统

SWAP文件系统

mkswap /dev/hda3 创建一个swap文件系统
swapon /dev/hda3 启用一个新的swap文件系统
swapon /dev/hda2 /dev/hdb3 启用两个swap分区

 备份

dump -0aj -f /tmp/home0.bak /home 制作一个 ‘/home’ 目录的完整备份
dump -1aj -f /tmp/home0.bak /home 制作一个 ‘/home’ 目录的交互式备份
restore -if /tmp/home0.bak 还原一个交互式备份
rsync -rogpav –delete /home /tmp 同步两边的目录
rsync -rogpav -e ssh –delete /home ip_address:/tmp 通过SSH通道rsync
rsync -az -e ssh –delete ip_addr:/home/public /home/local 通过ssh和压缩将一个远程目录同步到本地目录
rsync -az -e ssh –delete /home/local ip_addr:/home/public 通过ssh和压缩将本地目录同步到远程目录
dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr ‘dd of=hda.gz’ 通过ssh在远程主机上执行一次备份本地磁盘的操作
dd if=/dev/sda of=/tmp/file1 备份磁盘内容到一个文件
tar -Puf backup.tar /home/user 执行一次对 ‘/home/user’ 目录的交互式备份操作
( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr ‘cd /home/share/ && tar x -p’ 通过ssh在远程目录中复制一个目录内容
( tar c /home ) | ssh -C user@ip_addr ‘cd /home/backup-home && tar x -p’ 通过ssh在远程目录中复制一个本地目录
tar cf – . | (cd /tmp/backup ; tar xf – ) 本地将一个目录复制到另一个地方,保留原有权限及链接
find /home/user1 -name ‘*.txt’ | xargs cp -av –target-directory=/home/backup/ –parents 从一个目录查找并复制所有以 ‘.txt’ 结尾的文件到另一个目录
find /var/log -name ‘*.log’ | tar cv –files-from=- | bzip2 > log.tar.bz2 查找所有以 ‘.log’ 结尾的文件并做成一个bzip包
dd if=/dev/hda of=/dev/fd0 bs=512 count=1 做一个将 MBR (Master Boot Record)内容复制到软盘的动作
dd if=/dev/fd0 of=/dev/hda bs=512 count=1 从已经保存到软盘的备份中恢复MBR内容

光盘

cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force 清空一个可复写的光盘内容
mkisofs /dev/cdrom > cd.iso 在磁盘上创建一个光盘的iso镜像文件
mkisofs /dev/cdrom | gzip > cd_iso.gz 在磁盘上创建一个压缩了的光盘iso镜像文件
mkisofs -J -allow-leading-dots -R -V “Label CD” -iso-level 4 -o ./cd.iso data_cd 创建一个目录的iso镜像文件
cdrecord -v dev=/dev/cdrom cd.iso 刻录一个ISO镜像文件
gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom – 刻录一个压缩了的ISO镜像文件
mount -o loop cd.iso /mnt/iso 挂载一个ISO镜像文件
cd-paranoia -B 从一个CD光盘转录音轨到 wav 文件中
cd-paranoia — “-3” 从一个CD光盘转录音轨到 wav 文件中(参数-3)
cdrecord –scanbus 扫描总线以识别scsi通道
dd if=/dev/hdc | md5sum 校验一个设备的md5sum编码,例如一张 CD

网络 – (以太网和WIFI无线)

ifconfig eth0 显示一个以太网卡的配置
ifup eth0 启用一个 ‘eth0’ 网络设备
ifdown eth0 禁用一个 ‘eth0’ 网络设备
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 控制IP地址
ifconfig eth0 promisc 设置 ‘eth0’ 成混杂模式以嗅探数据包 (sniffing)
dhclient eth0 以dhcp模式启用 ‘eth0’

Linux学习:CentOS 6.4 系统安装

本文主要针对linux初学者,选择了CentOS发行版本做为第一个学习的操作系统或者准备学些CentOS系统的人。

CentOS系统介绍

CentOS(Community ENTerprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。
CentOS 系统ISO镜像文件下载

CentOS 操作系统详细安装步骤

从上面的CentOS镜像下载地址下载到ISO文件后, 我们就可以开始通过vmware虚拟机客户端来安装CentOS虚拟机了。
 
打开Vmware虚拟机程序,创建一个新的虚拟机实例,如下图:
linux安装学习
选择“Custom”, 点击”next” 按钮:
linux安装学习
选择Workstation6.5-7.x,点击 “Next”按钮:
linux安装3
这一步需要注意,最好选择“I will install the operating system later”, 否则,虚拟机会按照自己的默认配置安装Linux操作系统。
linux安装学习
选择”linux”选项从“Guest operating ”下面,版本选择”Centos 64″ 根据你下载的iso文件来定,如果是32位的话,就选择“Centos32”。
linux安装学习
从上图可以看出,可以指定安装后的虚拟机文件存放位置。,继续点击“next“
linux安装学习 linux安装学习
选择给虚拟机分配的cpu核的数量,如果为虚拟机选择的cpu数超过本机实际cpu数量,VMware会给出警告。Next:
linux安装学习
对于虚拟机的内存设定可以根据你系统的实际物理内存来定,不要超过。
linux安装学习
对于上图网络类型的配置,可以设定为”NAT”模式,这样虚拟机会从vmware DHCP服务里获取内网ip。点击“next”:
linux安装学习 linux安装学习
对于I/O控制器类型的配置,保持默认:
linux安装学习
选择“创建一个新的虚拟磁盘”,点击“next”按钮,
linux安装学习
选择磁盘的类型为”SCSI”, 点击“next”:
linux安装学习
设置虚拟机磁盘最大占用的磁盘空间,这个可以根据你的物理磁盘大小来定:
linux安装学习
到这一步,虚拟机文件创建完成。
下一步正式在虚拟机上安装CentOS操作系统,在刚才创建好的虚拟机上,右键点击”settings”
linux安装学习
点击”CD/DVD(IDE)”,打开虚拟机光盘设置页面,点击”Use ISO image file”, 再点击”Browse”,选择之前下载好的CentOS ISO 镜像文件, 然后点击”Power on this virtual machine“。
linux安装学习
系统引导界面默认选项是”INstall or upgrade an existing system”,  直接回车就可以进入系统安装界面。其中几个选项,第二个是已基本的显卡驱动来安装系统,第三个是进入系统修复模式,第四个是从本地硬盘启动。开始安装了:
 linux安装学习
这一步直接点击”skip”就可以,这样可以跳过对磁盘介质的检测。
 
之后就一致点下一步操作就可以
 linux安装学习
最后安装成功后,系统工会自动重启。
到此位置,linux CentOS操作系统就安装成功了。。。

Linux学习方法分享

随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起。作为一个 Linux系统管理员,我看了许多有关Linux的文档和书籍,并为学习Linux付出了许多艰苦的努力。当真正获得了一份正式的Linux系统管理工作后,我更加深刻地理解了Linux的灵魂:服务与多用户。Linux系统知识是非常广博的,但是只要掌握了重点知识,管理它并没有想象中的那么可怕。在下面我会将作为系统管理员的一些工作心得和总结出来的经验系统地介绍给大家。
linux操作系统

一、 学习的目的

通过Linux的学习掌握UNIX的目的想必不用多说了,在这个网络人才身价倍增的年代,想靠技术吃饭又不想掌握网络和编程技术是不明智的。当一人第一次听说Linux并跃跃欲试的时候,总会提出几个?,它是什么(What)? 为什么要用它(Why)? 怎样学习它(How)?做为开放源码运动的主要组成部分,Linux的应用越来越广泛,从我们平时的娱乐、学习,到商业、政府办公,再到大规模计算的应用。为了满足人们的需求,各种各样的、基于Linux的应用软件层出不穷。只要具备了LinuX的基本功,并具有了自学的能力之后,都可以通过长期的学习将专项内容予以掌握。

二、 从命令开始从基础开始

常常有些朋友一接触Linux 就是希望构架网站,根本没有想到要先了解一下Linux 的基础。这是相当困难的。虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。这里笔者把它们中比较重要的和使用频率最多的命令,按照它们在系统中的作用分成几个部分介绍给大家,通过这些基础命令的学习我们可以进一步理解 Linux系统:
●安装和登录命令:login、 shutdown、 halt、 reboot 、mount、umount 、chsh
●文件处理命令:file、 mkdir、 grep、dd、 find、 mv 、ls 、diff、 cat、 ln
●系统管理相关命令: df、 top、 free、 quota 、at、 lp、 adduser、 groupadd kill、 crontab、 tar、 unzip、 gunzip 、last
●网络操作命令:ifconfig、 ip 、ping 、 netstat 、telnet、 ftp、 route、 rlogin rcp 、finger 、mail 、nslookup
●系统安全相关命令: passwd 、su、 umask 、chgrp、 chmod、chown、chattr、sudo、 pswho

三、 选择一本好的Linux书籍

在各个Linux论坛中,我们看到最多的问题往往是某个新手,在安装或使用linux的过程中遇到一个具体的问题就开始提问,很多都是重复性的问题,甚至有不少人连基本的问题描述都不是很清楚。这说明很多初学linux的人还没有掌握基本功。怎样才能快速提高掌握linux的基本功呢? 最有效的方法莫过于学习权威的linux工具书,工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于 linux的书籍有很多不过精品的不多,笔者强烈建议阅读《鸟哥的Linux私房菜 基础篇》,现在出到了第三版。新手最好能够买一本纸版书来仔细研读,并认真做好学习笔记。当然,如果习惯看电子书,也可以从这里 下载 PDF电子书
linux学习书籍
linux学习书籍
linux学习书籍

四 、养成在命令行下工作的习惯

一定要养成在命令行下工作的习惯,要知道X-window只是运行在命令行模式下的一个应用程序。在命令行下学习虽然一开始进度较慢,但是熟悉后,您未来的学习之路将是以指数增加的方式增长的。从网管员来说,命令行实际上就是规则,它总是有效的,同时也是灵活的。即使是通过一条缓慢的调制解调器线路,它也能操纵几千公里以外地远程系统。

五、用Unix思维思考Linux

由于Linux是参照Unix的思想来设计的,理解和掌握它就必须以Unix的思维来进行,而不能以Windows思维。不可否认,windows 在市场上的成功很大一部分在于技术思想的独到之处。可是这个创新是在面对个人用户的前提下进行的,而面对着企业级的服务应用,它还是有些力不从心。多年来在计算机操作系统领域一直是二者独大:unix在服务器领域,Windows在个人用户领域。由此可见,用户需求决定了所采用的操作系统。不管什么原因,如果要学习Linux,那么首先要将思维从Windows的“这个小河” 中拖出来,放入Unix的海洋。

六 、学习shell

对于Shell(中文名称壳),习惯Windows的读者肯定是非常陌生的,因为Windows只有一个“Shell”(如果可以说是Shell的话),那就是Windows自己。用一句话容易理解的解释就是,shell是用户输入命令与系统解释命令之间的中介。最直观的说法,一种Shell有一套自己的命令。举一个容易理解的例子,Linux的标准Shel是Bash Shel;Solaris的shell是B shell;Linux的Shell是以命令行的方式表现出来的。读者可能会不理解,Windows从命令行“进化”到了图形界面,那么Linux现在还使用命令行岂不是一种倒退?
当初我刚刚接触Linux时就曾有过这种想法。可是后来发现,如果使用图形界面,那么分配给应用软件的资源就少了,在价格昂贵的服务器上,能够以较低的硬件配置实现同样的功能是非常重要的。
下面举例说明,一台服务器有1GB内存,假设其中512MB用于处理图形界面,若要安装一个需要784MB内存的数据库软件,惟一的办法就是扩大内存。但是如果使用命令行,系统可能只需要64MB内存,其它的内存就可以供数据库软件使用了。使用命令行,不仅是内存,而且CPU及硬盘等资源的占用都要节省很多。所以,作为服务器使用命令行是优点而不是缺点。既然Shell有这么多优点,就必须要学习它。
(​原文地址

Linux学习:linux系统启动级别

对于绝大多数Linux程序员来说,进入Linux系统后一般看到的是黑乎乎的界面(开发模式),因为系统如果启动选择开发模式,会减少启动时间,优化内存等。但是通常我们刚安装完Linux系统,然后进去以后是图形的界面,(如果要切换到开发模式,使用快捷键Ctrl + F2即可),从开发模式返回到图形界面则使用快捷键(Ctrl + F1),或者在命令行里输入命令 startx 命令就可以切换到图形界面。
linux logo
注意:如果你是开机启动模式设置的是图形界面启动,则通过快捷键( Ctrl + Alt + F2~F7 )进入到终端界面后,
你输入命令 startx 是返回不了图形界面的。但是如果你开机启动模式设置的是开发模式,则输入命令 statx 就可以返回到图形界面
Linux系统设置系统启动模式的方式可以修改(必须要以root身份登录才能修改)。修改系统启动模式的配置文件是   /etc/inittab。
我们在切换到root用户后,然后 vi /etc/inittab, 就可以修改并查看该配置文件:
 
[root@xiaoluo ~]:# vi /etc/inittab
在输入上面的命令后,我们可以看到该配置文件里面的信息如下:
# inittab is only used by upstart for the default runlevel.
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
# System initialization is started by /etc/init/rcS.conf
# Individual runlevels are started by /etc/init/rc.conf
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
# Default runlevel. The runlevels used are:
#   0 – halt (Do NOT set initdefault to this)
#   1 – Single user mode
#   2 – Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 – Full multiuser mode
#   4 – unused
#   5 – X11
#   6 – reboot (Do NOT set initdefault to this)
id:5:initdefault:
以管理员身份进入Linux,修改文件:/etc/inittab
找到“id:5:initdefault:”其中的5就是X-window,为默认的运行级别
linux启动之后会在一个级别运行,下面列出了这些运行级别:
0 系统停止
1 单用户系统,不需要登陆
2 多用户系统但不支持NFS,命令行模式登陆
3 完整多用户模式,命令行模式登陆
4 未用
5 X11图形模式,图形模式登陆
6 重新启动系统
这些可以在/etc/initab文件中可以看到0-6级的注释,代码段如下:
 

1.级别 0

系统停止。注意不要把该级别设置为默认模式,否则系统每次启动以后就会自动停止,无法进入。
这个运行级别主要用于关闭任务,在 rc0.d 目录下的各个连接命令都是此级别的命令。在关闭时,这些命令逐个执行。它们将杀掉所有进程、关闭虚拟内存和交换文件、卸载文件系统和交换分区。
关机操作在 DOS 下和 Linux 下截然不同。在 DOS 提示符下,可以很放心地直接关闭电源。但是,在 Linux 下不能这么做。Linux 的文件系统在启动时被装入,在关闭时要被卸载。这种差别正是 Linux 强大功能的前提。
在 Linux 下,要通过输入命令 shutdown 加上参数来关闭、重启计算机或者通过按下热键“Ctrl”+“Alt”+“Del”来重新启动。

 2.级别 1

单用户模式。该模式只能许可一个用户从本地计算机上登录 rc1.d 目录下的所有文件与此运行级别相连。此运行级别一般用于系统管理与维护,如:给 Linux 系统升级,安装新软件等等。
在此模式下,只能由管理员进入而其他用户无法登录。因为在启动时,文件系统被加载但是网络却没有被加载,无法通过网络登录。

 3.级别 2

多用户模式。用户可以通过网络进行登录。在不支持网络的情况下该模式和模式 3 是相的,rc2.d 目录下所有文件与此级别相连。

 4.级别 3

完全多用户模式。这是缺省的运行模式,在此模式下所有网络服务程序一起运行。rc3.d录下的文件与此级别相连。

 5.级别 4

未使用模式,rc4.d 目录与此级别相连。这一级别是用户自定义的运行级别,用户可以根需要自己定义。如果想运行此级别的话,必须在 rc3.d 目录下放入连接文件,就像其他 rc*.d目录下的文件,并指明是启动还是终止进程。

​6.级别 5

在 Linux 下运行 X  Window 就是使用这一级别。在此级别下除了因特网的域名服务器的named 与级别 3 不同,其余的都相同。

 7.级别 6

这是个重新启动系统的运行级别。rc6.d 目录与此级别相连。既然是重新启动也就是关闭当前系统,但不关闭电源,所以此目录下的连接与级别为 0 的在 rc0.d 下的连接基本相同。不同之处在于,虽然它们都执行 halt(关闭)命令,但是给 halt 传递的参数不一样,因而级别 6 能够重新启动系统。
 
原文地址:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/01/2992755.html

前人LINUX学习之路(LINUX初学者必看)

很多同学接触Linux不多,对Linux平台的开发更是一无所知。而现在的趋势越来越表明,作为一 个优秀的软件开发人员,或计算机IT行业从业人员,掌握Linux是一种很重要的谋生资源与手段。下来我将会结合自己的几年的个人开发经验,及对 Linux,更是类UNIX系统,及开源软件文化,谈谈Linux的学习方法与学习中应该注意的一些事。
就如同刚才说的,很多同学以前可能连Linux是什么都不知道,对UNIX更是一无所知。所以我们从最基础的讲起,对于Linux及UNIX的历史我们不做多谈,直接进入入门的学习。
Linux入门是很简单的,问题是你是否有耐心,是否爱折腾,是否不排斥重装一类的大修。没折腾可以说是学不好Linux的,鸟哥说过,要真正了解Linux的分区机制,对LVM使用相当熟练,没有20次以上的Linux装机经验是积累不起来的,所以一定不要怕折腾。
linux操作系统
由于大家之前都使用Windows,所以我也尽可能照顾这些“菜鸟”。我的推荐,如果你第一次接触Linux,那么首先在虚拟机中尝试它。虚拟机我推荐Virtual Box,我并不主张使用VM,原因是VM是闭源的,并且是收费的,我不希望推动盗版。当然如果你的Money足够多,可以尝试VM,但我要说的是即使是VM,不一定就一定好。付费的软件不一定好。首先,Virtual Box很小巧,Windows平台下安装包在80MB左右,而VM动辄600MB,虽然功能强大,但资源消耗也多,何况你的需求Virtual Box完全能够满足。所以,还是自己选。如何使用虚拟机,是你的事,这个我不教你,因为很简单,不会的话Google或Baidu都可以,英文好的可以直接看官方文档。
现在介绍Linux发行版的知识。正如你所见,Linux发行版并非Linux,Linux仅是指操作系统的内核,作为科班出生的你不要让我解释,我也没时间。我推荐的发行版如下:
• UBUNTU适合纯菜鸟,追求稳定的官方支持,对系统稳定性要求较弱,喜欢最新应用,相对来说不太喜欢折腾的开发者。
• Debian,相对UBUNTU难很多的发行版,突出特点是稳定与容易使用的包管理系统,缺点是企业支持不足,为社区开发驱动。
• Arch,追逐时尚的开发者的首选,优点是包更新相当快,无缝升级,一次安装基本可以一直运作下去,没有如UBUNTU那样的版本概念,说的专业点叫滚动升级,保持你的系统一定是最新的。缺点显然易见,不稳定。同时安装配置相对Debian再麻烦点。
• Gentoo,相对Arch再难点,考验使用者的综合水平,从系统安装到微调,内核编译都亲历亲为,是高手及黑客显示自己技术手段,按需配置符合自己要求的系统的首选。
• Slackware与Gentoo类似。
• CentOS,社区维护的RedHat的复刻版本,完全使用RedHat的源码重新编译生成,与RedHat的兼容性在理论上来说是最好的。如果你专注于Linux服务器,如网络管理,架站,那么CentOS是你的选择。
• LFS,终极黑客显摆工具,完全从源代码安装,编译系统。安装前你得到的只有一份文档,你要做的就是照文档你的说明,一步步,一条条命令,一个个软件包的去构建你的Linux,完全由你自己控制,想要什么就是什么。如果你做出了LFS,证明你的Linux功底已经相当不错,如果你能拿LFS文档活学活用,再将Linux从源代码开始移植到嵌入式系统,我敢说中国的企业你可以混的很好。
(1)Linux基础
你得挑一个适合你的系统,然后在虚拟机安装它,开始使用它。如果你想快速学会Linux,我有一个建议就是忘记图形界面,不要想图形界面能不能提供你问题的答案,而是满世界的去找,去问,如何用命令行解决你的问题。在这个过程中,你最好能将Linux的命令掌握的不错,起码常用的命令得知道,同时建立了自己的知识库,里面是你积累的各项知识。
(2) Linux平台的C/C++开发,同时还有Bash脚本编程[JAVA]
再下个阶段,你需要学习的是Linux平台的C/C++开发,同时还有Bash脚本编程,如果你对Java兴趣很深还有Java。同样,建议你抛弃掉图形界面的IDE,从VIM开始,为什么是VIM,而不是Emacs,我无意挑起编辑器大战,但我觉得VIM适合初学者,适合手比较笨,脑袋比较慢的开发者。Emacs的键位太多,太复杂,我很畏惧。然后是GCC,Make,Eclipse(Java,C++或者)。虽然将C++列在了Eclipse中,但我并不推荐用IDE开发C++,因为这不是Linux的文化,容易让你忽略一些你应该注意的问题。IDE让你变懒,懒得跟猪一样。如果你对程序调试,测试工作很感兴趣,GDB也得学的很好,如果不是GDB也是必修课。这是开发的第一步,注意我并没有提过一句Linux系统API的内容,这个阶段也不要关心这个。你要做的就是积累经验,在Linux平台的开发经验。我推荐的书如下:C语言程序设计,谭浩强的也可以。C语言,白皮书当然更好。C++推荐C++ Primer Plus,Java我不喜欢,就不推荐了。工具方面推荐VIM的官方手册,GCC中文文档,GDB中文文档,GNU开源软件开发指导(电子书),汇编语言程序设计(让你对库,链接,内嵌汇编,编译器优化选项有初步了解,不必深度)。
如果你这个阶段过不了就不必往下做了,这是底线,最基础的基础,否则离开,不要霍霍Linux开发。不专业的Linux开发者作出的程序是与Linux文化或UNIX文化相背的,程序是走不远的,不可能像Bash,VIM这些神品一样。所以做不好干脆离开。
(3) UNIX环境高级编程(作者英年早逝,第3版即将出版,稍等)
接下来进入Linux系统编程,不二选择,APUE,UNIX环境高级编程,一遍一遍的看,看10遍都嫌少,如果你可以在大学将这本书翻烂,里面的内容都实践过,有作品,你口头表达能力够强,你可以在面试时说服所有的考官。(可能有点夸张,但APUE绝对是圣经一般的读物,即使是Windows程序员也从其中汲取养分,Google创始人的案头书籍,扎尔伯克的床头读物。)
这本书看完后你会对Linux系统编程有相当的了解,知道Linux与Windows平台间开发的差异在哪?它们的优缺点在哪?我的总结如下:做Windows平台开发,很苦,微软的系统API总在扩容,想使用最新潮,最高效的功能,最适合当前流行系统的功能你必须时刻学习。Linux不是,Linux系统的核心API就100来个,记忆力好完全可以背下来。而且经久不变,为什么不变,因为要同UNIX兼容,符合POSIX标准。所以Linux平台的开发大多是专注于底层的或服务器编程。这是其优点,当然图形是Linux的软肋,但我站在一个开发者的角度,我无所谓,因为命令行我也可以适应,如果有更好的图形界面我就当作恩赐吧。另外,Windows闭源,系统做了什么你更本不知道,永远被微软牵着鼻子跑,想想如果微软说Win8不支持QQ,那腾讯不得哭死。而Linux完全开源,你不喜欢,可以自己改,只要你技术够。另外,Windows虽然使用的人多,但使用场合单一,专注与桌面。而Linux在各个方面都有发展,尤其在云计算,服务器软件,嵌入式领域,企业级应用上有广大前景,而且兼容性一流,由于支持POSIX可以无缝的运行在UNIX系统之上,不管是苹果的Mac还是IBM的AS400系列,都是完全支持的。另外,Linux的开发环境支持也绝对是一流的,不管是C/C++,Java,Bash,Python,PHP,Javascript,。。。。。。就连C#也支持。而微软除Visual Stdio套件以外,都不怎么友好,不是吗?
如果你看完APUE的感触有很多,希望验证你的某些想法或经验,推荐UNIX程序设计艺术,世界顶级黑客将同你分享他的看法。
(4)选择方向:网络,图形,嵌入式,设备驱动
网络方向:服务器软件编写及高性能的并发程序编写
现在是时候做分流了。 大体上我分为四个方向:网络,图形,嵌入式,设备驱动。
如果选择网络,再细分,我对其他的不是他熟悉,只说服务器软件编写及高性能的并发程序编写吧。相对来说这是网络编程中技术含量最高的,也是底层的。需要很多的经验,看很多的书,做很多的项目。
我的看法是以下面的顺序来看书:
1. APUE再深读 – 尤其是进程,线程,IPC,套接字
2. 多核程序设计 – Pthread一定得吃透了,你很NB
3. UNIX网络编程 – 卷一,卷二
4. TCP/IP网络详解 – 卷一 再看上面两本书时就该看了
5. 5.TCP/IP 网络详解 – 卷二 我觉得看到卷二就差不多了,当然卷三看了更好,努力,争取看了
6. 6.Lighttpd源代码 – 这个服务器也很有名了
7. 7.Nginx源代码 – 相较于Apache,Nginx的源码较少,如果能看个大致,很NB。看源代码主要是要学习里面的套接字编程及并发控制,想想都激动。如果你有这些本事,可以试着往暴雪投简历,为他们写服务器后台,想一想全球的魔兽都运行在你的服务器软件上。
8. Linux内核 TCP/IP协议栈 – 深入了解TCP/IP的实现
如果你还喜欢驱动程序设计,可以看看更底层的协议,如链路层的,写什么路由器,网卡,网络设备的驱动及嵌入式系统软件应该也不成问题了。
当然一般的网络公司,就算百度级别的也该毫不犹豫的雇用你。只是看后面这些书需要时间与经验,所以35岁以前办到吧!跳槽到给你未来的地方!
​图形方向,我觉得图形方向也是很有前途的,以下几个方面。
1. Opengl的工业及游戏开发,国外较成熟。
2. 影视动画特效,如皮克斯,也是国外较成熟。
3. GPU计算技术,可以应用在浏览器网页渲染上,GPU计算资源利用上,由于开源的原因,有很多的文档程序可以参考。如果能进火狐开发,或google做浏览器开发,应该会很好 。
嵌入式方向:嵌入式方向没说的,Linux很重要。
掌握多个架构,不仅X86的,ARM的,单片机什么的也必须得懂。硬件不懂我预见你会死在半路上,我也想走嵌入式方向,但我觉得就学校教授嵌入式的方法,我连学电子的那帮学生都竞争不过。奉劝大家,一定得懂硬件再去做,如果走到嵌入式应用开发,只能祝你好运,不要碰上像Nokia,Hp这样的公司,否则你会很惨的。
驱动程序设计:软件开发周期是很长的,硬件不同,很快。每个月诞生那么多的新硬件,如何让他们在Linux上工作起来,这是你的工作。由于Linux的兼容性很好,如果不是太低层的驱动,基本C语言就可以搞定,系统架构的影响不大,因为有系统支持,你可能做些许更改就可以在ARM上使用PC的硬件了,所以做硬件驱动开发不像嵌入式,对硬件知识的要求很高。可以从事的方向也很多,如家电啊,特别是如索尼,日立,希捷,富士康这样的厂子,很稀缺的。
原文地址

Linux初学者:如何学好Linux操作系统

在当前的计算机世界里,说到操作系统除了我们最常用的windows桌面操作系统之外,用的最多的就是Linux操作系统,而且世界上大多数网站的后台用的都是linux系统搭建服务器,因为linux系统是开源免费的,而且是世界上最安全的操作系统。对于linux初学来说,不知道给如何开始学习linux操作系统,今天我们给linux初学者一些学习linux的建议

linux logo

1)首先要从linux基础知识开始学习
要从了解linux系统的发展史开始,linux系统和windows系统的不同,linux系统不同安装方法,然后了解linux的一些基础知识比如:目录操作,基本命令的执行,用户权限的设置等。
2) 熟练使用linux的大部分常用命令
linux的应用大多数情况下还是在命令行下操作的,所以熟练使用linux的命令来在linux环境下办公室很重要的。虽然我们有些操作可以再图形界面下操作,但这些主要是对于个人用户来说。linux操作系统
3)选择一个linux发行版本。。。
linux有很多不同的发行版本,最常用的就是Redhat,Centos, Ubuntu,Fedora, Suse,Debian等,在这里我只推荐除初学者从Centos和Ubuntu这两个linux操作系统开始学习。
4)经常去逛linux社区
了解一些linux系统当前的发展趋势或者新技术,比如虚拟化技术,大数据技术等
5)要有足够的英文功底
因为大多数的linux技术社区或者官方社区文档都是英文的,所以你要有阅读英文技术文档的能力,这个可以慢慢培养。
6)当你具备了基本的linux操作能力之后,可以考虑去学习如何写一个linux下的shell脚本或者学习如何在Linux操作系统下开发C语言程序或者开发linux驱动程序。
 

linux经典学习路线指南

linux2
很多同学接触Linux不多,对Linux平台的开发更是一无所知。而现在的趋势越来越表明,作为一 个优秀的软件开发人员,或计算机IT行业从业人员,掌握Linux是一种很重要的谋生资源与手段。下来我将会结合自己的几年的个人开发经验,及对 Linux,更是类UNIX系统,及开源软件文化,谈谈Linux的学习方法与学习中应该注意的一些事。
就如同刚才说的,很多同学以前可能连Linux是什么都不知道,对UNIX更是一无所知。所以我们从最基础的讲起,对于Linux及UNIX的历史我们不做多谈,直接进入入门的学习。
Linux入门是很简单的,问题是你是否有耐心,是否爱折腾,是否不排斥重装一类的大修。没折腾可以说是学不好Linux的,鸟哥说过,要真正了解Linux的分区机制,对LVM使用相当熟练,没有20次以上的Linux装机经验是积累不起来的,所以一定不要怕折腾。
由于大家之前都使用Windows,所以我也尽可能照顾这些“菜鸟”。我的推荐,如果你第一次接触Linux,那么首先在虚拟机中尝试它。虚拟机我 推荐Virtual Box,我并不主张使用VM,原因是VM是闭源的,并且是收费的,我不希望推动盗版。当然如果你的Money足够多,可以尝试VM,但我要说的是即使是 VM,不一定就一定好。付费的软件不一定好。首先,Virtual Box很小巧,Windows平台下安装包在80MB左右,而VM动辄600MB,虽然功能强大,但资源消耗也多,何况你的需求Virtual Box完全能够满足。所以,还是自己选。如何使用虚拟机,是你的事,这个我不教你,因为很简单,不会的话Google或Baidu都可以,英文好的可以直 接看官方文档。
现在介绍Linux发行版的知识。正如你所见,Linux发行版并非Linux,Linux仅是指操作系统的内核,作为科班出生的你不要让我解释,我也没时间。我推荐的发行版如下:
UBUNTU适合纯菜鸟,追求稳定的官方支持,对系统稳定性要求较弱,喜欢最新应用,相对来说不太喜欢折腾的开发者。
Debian,相对UBUNTU难很多的发行版,突出特点是稳定与容易使用的包管理系统,缺点是企业支持不足,为社区开发驱动。
Arch,追逐时尚的开发者的首选,优点是包更新相当快,无缝升级,一次安装基本可以一直运作下去,没有如UBUNTU那样的版本概念,说的专业点叫滚动升级,保持你的系统一定是最新的。缺点显然易见,不稳定。同时安装配置相对Debian再麻烦点。
Gentoo,相对Arch再难点,考验使用者的综合水平,从系统安装到微调,内核编译都亲历亲为,是高手及黑客显示自己技术手段,按需配置符合自己要求的系统的首选。
Slackware与Gentoo类似。
CentOS,社区维护的RedHat的复刻版本,完全使用RedHat的源码重新编译生成,与RedHat的兼容性在理论上来说是最好的。如果你专注于Linux服务器,如网络管理,架站,那么CentOS是你的选择。
LFS,终极黑客显摆工具,完全从源代码安装,编译系统。安装前你得到的只有一份文档,你要做的就是照文档你的说明,一步步,一条条命令,一个个 软件包的去构建你的Linux,完全由你自己控制,想要什么就是什么。如果你做出了LFS,证明你的Linux功底已经相当不错,如果你能拿LFS文档活 学活用,再将Linux从源代码开始移植到嵌入式系统,我敢说中国的企业你可以混的很好。
你得挑一个适合你的系统,然后在虚拟机安装它,开始使用它。如果你想快速学会Linux,我有一个建议就是忘记图形界面,不要想图形界面能不能提供 你问题的答案,而是满世界的去找,去问,如何用命令行解决你的问题。在这个过程中,你最好能将Linux的命令掌握的不错,起码常用的命令得知道,同时建 立了自己的知识库,里面是你积累的各项知识。
再下个阶段,你需要学习的是Linux平台的C/C++开发,同时还有Bash脚本编程,如果你对Java兴趣很深还有Java。同样,建议你抛弃 掉图形界面的IDE,从VIM开始,为什么是VIM,而不是Emacs,我无意挑起编辑器大战,但我觉得VIM适合初学者,适合手比较笨,脑袋比较慢的开 发者。Emacs的键位太多,太复杂,我很畏惧。然后是GCC,Make,Eclipse(Java,C++或者)。虽然将C++列在了Eclipse 中,但我并不推荐用IDE开发C++,因为这不是Linux的文化,容易让你忽略一些你应该注意的问题。IDE让你变懒,懒得跟猪一样。如果你对程序调 试,测试工作很感兴趣,GDB也得学的很好,如果不是GDB也是必修课。这是开发的第一步,注意我并没有提过一句Linux系统API的内容,这个阶段也 不要关心这个。你要做的就是积累经验,在Linux平台的开发经验。我推荐的书如下:C语言程序设计,谭浩强的也可以。C语言,白皮书当然更好。C++推 荐C++ Primer Plus,Java我不喜欢,就不推荐了。工具方面推荐VIM的官方手册,GCC中文文档,GDB中文文档,GNU开源软件开发指导(电子书),汇编语言 程序设计(让你对库,链接,内嵌汇编,编译器优化选项有初步了解,不必深度)。
如果你这个阶段过不了就不必往下做了,这是底线,最基础的基础,否则离开,不要霍霍Linux开发。不专业的Linux开发者作出的程序是与Linux文化或UNIX文化相背的,程序是走不远的,不可能像Bash,VIM这些神品一样。所以做不好干脆离开。
接下来进入Linux系统编程,不二选择,APUE,UNIX 环境高级编程,一遍一遍的看,看10遍都嫌少,如果你可以在大学将这本书翻烂,里面的内容都实践过,有作品,你口头表达能力够强,你可以在面试时说服所有 的考官。(可能有点夸张,但APUE绝对是圣经一般的读物,即使是Windows程序员也从其中汲取养分,Google创始人的案头书籍,扎尔伯克的床头 读物。)
这本书看完后你会对Linux系统编程有相当的了解,知道Linux与Windows平台间开发的差异在哪?它们的优缺点在哪?我的总结如下:做 Windows平台开发,很苦,微软的系统API总在扩容,想使用最新潮,最高效的功能,最适合当前流行系统的功能你必须时刻学习。Linux不 是,Linux系统的核心API就100来个,记忆力好完全可以背下来。而且经久不变,为什么不变,因为要同UNIX兼容,符合POSIX标准。所以 Linux平台的开发大多是专注于底层的或服务器编程。这是其优点,当然图形是Linux的软肋,但我站在一个开发者的角度,我无所谓,因为命令行我也可 以适应,如果有更好的图形界面我就当作恩赐吧。另外,Windows闭源,系统做了什么你更本不知道,永远被微软牵着鼻子跑,想想如果微软说Win8不支 持QQ,那腾讯不得哭死。而Linux完全开源,你不喜欢,可以自己改,只要你技术够。另外,Windows虽然使用的人多,但使用场合单一,专注与桌 面。而Linux在各个方面都有发展,尤其在云计算,服务器软件,嵌入式领域,企业级应用上有广大前景,而且兼容性一流,由于支持POSIX可以无缝的运 行在UNIX系统之上,不管是苹果的Mac还是IBM的AS400系列,都是完全支持的。另外,Linux的开发环境支持也绝对是一流的,不管是 C/C++,Java,Bash,Python,PHP,Javascript,。。。。。。就连C#也支持。而微软除Visual Stdio套件以外,都不怎么友好,不是吗?
如果你看完APUE的感触有很多,希望验证你的某些想法或经验,推荐UNIX程序设计艺术,世界顶级黑客将同你分享他的看法。
现在是时候做分流了。 大体上我分为四个方向:网络,图形,嵌入式,设备驱动。
如果选择网络,再细分,我对其他的不是他熟悉,只说服务器软件编写及高性能的并发程序编写吧。相对来说这是网络编程中技术含量最高的,也是底层的。需要很多的经验,看很多的书,做很多的项目。
我的看法是以下面的顺序来看书:
APUE再深读 – 尤其是进程,线程,IPC,套接字
多核程序设计 – Pthread一定得吃透了,你很NB
UNIX网络编程 – 卷一,卷二
TCP/IP网络详解 – 卷一 再看上面两本书时就该看了
5.TCP/IP 网络详解 – 卷二 我觉得看到卷二就差不多了,当然卷三看了更好,努力,争取看了
6.Lighttpd源代码 – 这个服务器也很有名了
7.Nginx源代码 – 相较于Apache,Nginx的源码较少,如果能看个大致,很NB。看源代码主要是要学习里面的套接字编程及并发控制,想想都激动。如果你有这些本事,可以试着往暴雪投简历,为他们写服务器后台,想一想全球的魔兽都运行在你的服务器软件上。
Linux内核 TCP/IP协议栈 – 深入了解TCP/IP的实现
如果你还喜欢驱动程序设计,可以看看更底层的协议,如链路层的,写什么路由器,网卡,网络设备的驱动及嵌入式系统软件应该也不成问题了。
当然一般的网络公司,就算百度级别的也该毫不犹豫的雇用你。只是看后面这些书需要时间与经验,所以35岁以前办到吧!跳槽到给你未来的地方!
图形方向,我觉得图形方向也是很有前途的,以下几个方面。
Opengl的工业及游戏开发,国外较成熟。
影视动画特效,如皮克斯,也是国外较成熟。
GPU计算技术,可以应用在浏览器网页渲染上,GPU计算资源利用上,由于开源的原因,有很多的文档程序可以参考。如果能进火狐开发,或google做浏览器开发,应该会很好 。
嵌入式方向:嵌入式方向没说的,Linux很重要。
掌握多个架构,不仅X86的,ARM的,单片机什么的也必须得懂。硬件不懂我预见你会死在半路上,我也想走嵌入式方向,但我觉得就学校教授嵌入式的 方法,我连学电子的那帮学生都竞争不过。奉劝大家,一定得懂硬件再去做,如果走到嵌入式应用开发,只能祝你好运,不要碰上像Nokia,Hp这样的公司, 否则你会很惨的。
驱动程序设计:软件开发周期是很长的,硬件不同,很快。每个月诞生那么多的新硬件,如何让他们在Linux上工作起来,这是你的工作。由于 Linux的兼容性很好,如果不是太低层的驱动,基本C语言就可以搞定,系统架构的影响不大,因为有系统支持,你可能做些许更改就可以在ARM上使用PC 的硬件了,所以做硬件驱动开发不像嵌入式,对硬件知识的要求很高。可以从事的方向也很多,如家电啊,特别是如索尼,日立,希捷,富士康这样的厂子,很稀缺 的。
LDD – Linux驱动程序设计与内核编程的基础读物
深入理解Linux内核 – 进阶的
Linux源代码 – 永无止境的
当然你还的看个方面的书,如网络啊什么的。
原文地址

Linux学习视频资料:《Linux从入门到精通》

今天发现了一套不错的针对linux初学者的学习视频,该视频从最基本的linux操作开始讲起,基本覆盖了所有的知识点,讲解的内容包括下面几个部分:Linux概述、Linux安装、Linux编程工具、Shell编程、服务器基础知识、Apache服务器、vsftpd服务器、Samba服务器、NFS服务器、任务计划、防火墙和网络安全、病毒和木马防范等。这个视频资料可以作为linux初学者的入门指南教程,这样可以在以后的linux学习中,能更好的理解其中的技术要点。
本视频可以在线观看也可以直接下载,需要您有足够的网络带宽:
linux学习视频在线观看地址:http://edu.51cto.com/course/course_id-113-page-2.html
linux学习视频下载地址:http://down.51cto.com/zt/2242
 
 

初学者:如何学习Linux操作系统

今天在51CTO里发现一片不错的关于linux学习的文章,对初学者来说很有用。文章从最基本的如何选择linux的发行版本开始,慢慢的引导linux初学者如何才能学好linux操作系统。

一、 选择适合自己的linux发行版

谈到linux的发行版本,太多了,可能谁也不能给出一个准确的数字,但是有一点是可以肯定的,linux正在变得越来越流行, 面对这么多的Linux 发行版,打算从其他系统转到linux系统来的初学者可能会感到困惑,即便是忠实的 Linux 用户也没有时间和精力去挨个尝试,因此初学者在学习linux的之前,需要有一个明确的方向,选择一个适合自己的系统开始学习linux至关重要!下面我们就分类介绍。
1.1 初学者入门首选-redhat系列
在学习redhat系列linux之前,首先要了解以下redhat linux各个发行版本之间的关系。
1.Red Hat Linux
Red Hat Linux是redhat最早发行的个人版本的linux, 其1.0版本于1994年11月3日发行。虽然其历史不及其它linux发行版本悠久,但比起很多的Linux发行套件,Red Hat 的历史悠久得多。自从Red Hat 9.0版本发布后,RedHat 公司就不再开发桌面版的 Linux发行套件,Red Hat Linux停止了开发,而将全部力量集中在服务器版的开发上,也就是 Red Hat Enterprise Linux 版。2004年4月30日,Red Hat公司正式停止对Red Hat 9.0版本的支持,标志著Red Hat Linux的正式完结。原本的桌面版Red Hat Linux发行套件则与来自开源社区的 Fedora进行合并,成为 Fedora Core 发行版本。
目前Red Hat分为两个系列:由Red Hat公司提供收费技术支持和更新的Red Hat Enterprise Linux,以及由社区开发的免费的Fedora Core。
2.Fedora Core
Fedora Core(缩写为FC)被红帽公司定位为新技术的实验场地,许多新的技术都会在 FC 中检验,如果稳定的话红帽公司则会考虑加入 Red Hat Enterprise Linux 中。
Fedora Core 1发布于2003年年末,而FC的定位便是桌面用户。FC提供了最新的软件包,同时,它的版本更新周期也非常短,仅6个月。由于版本更新频繁,性能和稳定性得不到保证,因此,一般在服务器上不推荐采用Fedora Core。
其实可以这么认为,Fedora就是Red Hat发行Red Hat企业版linux的一个实验版本,以用户做测试,为Red Hat企业版发布奠定基础。
3.Red Hat Enterprise Linux
Red Hat Enterprise Linux(缩写为RHEL,Red Hat的企业版)。Red Hat现在主要做服务器版的linux开发,在版本上注重了性能和稳定性以及对硬件的支持。 由于企业版操作系统的开发周期较长,注重性能、稳定性和服务端软件支持,因此版本更新相对较缓慢。
RedHat Enterprise Linux又分为4个版本 Advanced Server(AS)、ES Workstation(WS)、Desktop,它们的差别不太大,只是功能方面的差别。
4.Centos
CentOS全名为&ldquo;社区企业操作系统&rdquo;(Community Enterprise Operating System)
CentOS产生的背景:
Redhat发布Redhat 9。0后,不再开发redhat 10,11&hellip;&hellip;,全面转向Redhat enterprise linux(简写为rhel)的开发,和以往不同的是,新的redhat企业版要求用户先购买lisence,redhat同时承诺确保产品的稳定性,安全性。rhel二进制代码不再提供下载,而是作为redhat 服务的一部分,但源代码依然是开放的。在这种情况下,出现了centos、whitebox、dao 等等一批open source的企业版本,其中以centos最为活跃。
下面讲述centos是如何制作产生的:
CentOS社区将Redhat的网站上的所有源代码下载下来,进行重新编译。由于AS/ES/WS是商业产品,因此,必须将所有Redhat的Logo和标识改成自己的CentOS标识。比如将AS4.0原版的SRPM源码编译后,换上Centos社区的logo,这样就成为了CentOS 4.0。Redhat Enterprise Linux AS4 Update1的源码编译后,就成为了CentOS4.1。AS4 Update2的源码编译后,就成为了CentOS4.2等等。CentOS就是这样产生的。
因此,可以说CentOS就是Redhat的AS/ES/WS的免费版本,使用centos可以获得与redhat 企业级linux一样的功能和性能。同时centos还提供免费的长期升级和更新服务。因此, 在众多的RHEL的克隆版本中,CentOS是很出众很优秀的。
虽然说centos是RHEL的克隆,但并不是一模一样,所说的克隆是具有100%的互换性。对于centos其实不尽相同,RHEL的软件在CentOS上面不能保证100%的正常工作。
在了解了Redhat系列各个版本的差异后。其实我们就找到了为何选择Redhat linux作为初学者入门学习的理由了。
首先:在国内,乃至是全世界的Linux用户最熟悉、最耳闻能详的发行版肯定就是Red Hat了。因为Red Hat是linux界的&ldquo;老大&rdquo;,美国Red Hat公司发布的Red Hat linux是商业上运作最成功的一个Linux发行套件,因此Red Hat公司发行的linux值得信任, Red Hat linux的功能和性能也毋庸置疑。
其次:Red hat现在拥有庞大的网络用户群体,网络linux资源基本90%都是基于Redhat linux的,如果您在学习过程中遇到任何问题,随便搜索网络,就有成千上万的答案展示在你面前。
第三: Red Hat linux系列版本相互补充,相得益彰:如果你第一次接触linux,那么建议你先安装Fedora Core, Fedora Core安装简单,对硬件支持很好,界面也很华丽,同时也可以体验Redhat linux的最新功能;如果你对linux有一定的了解,需要深入学习,建议你使用CENTOS系统;如果你是在做linux企业级应用,建议你使用RHEL版本。
最后: redhat应用范围广,具有典型性和代表性,很多系统(例如红旗redflag,中标linux,oracle发布的Enterprise Linux )都是以Red Hat linux为基准的,因而,可以说学会了Red Hat linux,就能触类旁通,其它类似的linux系统也能很快掌握; 现在周围学习linux的一般也都是以redhat linux为主,这样交流方便,学习中出现问题,更容易得到解决。同时redhat linux的安装和使用也是最简单的,因此,基本上不会在&rdquo;装系统&rdquo;上浪费过多时间。
1.2 企业级应用首选-suse linux
企业级的应用追求的是可靠性和稳定性,这就要求构建企业级应用的系统平台具有高可靠性和高稳定性。企业级linux的发行版本就是解决的这个问题。
SUSE是德国最著名的Linux发行版,在全世界范围中也享有很高的声誉。2003年11月4日,Novell公司对外宣布将收购SuSE。2004年1月该收购顺利完成,Novell同时将SuSE正式命名为SuSE Linux。 Novell公司收购suse,加速了suse linux的发展, suse linux无论在桌面市场还是服务器市场都更加专业化,据不完全统计,suse linux现在欧洲linux市场占有将近80%的份额,大部分关键性应用都是建立在suse linux下。由于suse 进入中国时间较短,同时加上suse在中国的营销模式短时间不能被国内接受,因此现在suse在中国的市场份额还不是很大,但是这些并不影响suse linux高可靠与稳定性的事实,随着suse的发展,相信suse linux在中国的应用会越来越多。
1.3 游戏娱乐首选-Ubuntu Linux
说到linux桌面市场, Ubuntu Linux几乎占据了桌面linux的半壁江山, Ubuntu Linux主打linux桌面之最,界面美观, 简易而不失华丽,如果想在linux下进行娱乐休闲,Ubuntu Linux绝对是首选。
Ubuntu 的安装非常的人性化,只须按照提示一步一步进行,安装与Windows一样简单!并且,Ubuntu被誉为对硬件支持最好最全面的Linux 发行版之一,许多在其他发行版上无法使用,或者在默认配置时无法使用的硬件,在Ubuntu上都能轻松搞定。因此你可以像安装windows一样轻松的安装Ubuntu。尽情体验Ubuntu linux带来的乐趣。
1.4  linux作为服务器是发展趋势
在上面的章节中主要介绍了几种最常见的linux发行版本,其实linux的发行版本还有很多很多,比较常见的还有Debian GNU/Linux, Mandriva, Gentoo,Slackware, Knoppix,MEPIS, Xandros,国产的红旗redflag,中标linux等等,这里不再一 一介绍,其实纵观linux的各个发行版,linux发行版本无非是朝着这两个方面而来,一是服务器市场,而是桌面市场。
以Ubuntu Linux为代表的linux发行版走的是桌面市场路线,虽然它们给用户带来很多惊喜,更新也很快,但是由于桌面市场有着windows这样强劲的对手,linux桌面发展举步维艰。
以redhat系列版本为代表的linux发行版现在主要面向企业级linux的服务器市场,重点开发linux的企业版本,suse linux同样主要力量也集中在开发企业级linux上面,其它的例如国产redhat flag,中标linux等都重点投入在了linux服务器市场。linux两大发布厂商现在都走了linux服务器市场的路线,可见linux作为企业级服务器有着巨大的发展前途,据权威部门统计,linux在服务器市场的占有率每年都在持续上升。
其实很多linux的应用都是针对linux服务器的,本书的讲述也是主要针对linux在服务器下的各种应用展开的。

二、 养成良好的linux操作习惯

当你进入linux的学习之后,请不要用windows的工作方式来思考问题,因为它们之间确实有很大的不同,比如它们之间的内存管理机制,进程运行机制等都有很大不同,这些异同点将在下面章节陆续讲述,因此,抛开windows那种思维,用全新的理念尝试去挖掘linux身上特有的潜质,对初学者至关重要。
2.1 一定要习惯命令行方式
Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平,命令行方式的操作永远是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作都离不开命令行。虽然linux也有桌面系统,但是X-window也只是运行在命令行模式下的一个应用程序。
因此,可以这么说,命令是学习linux系统的基础,学习linux,很大程度上就是学习命令,很多linux高手其实都是玩儿命令很熟的人。
也许对于刚刚从windows系统进入linux学习的初学者来说,立刻进入枯燥的命令学习,实在太难,但是你一旦学会就爱不释手。因为它的功能实在太强大了。您未来的学习之路也将会以指数增加的方式增长。
2.2 理论结合实践
有很多初学者都会遇到这么一个问题,说到系统的每个命令,都很熟悉,但是在系统出现故障的时候,面对出现问题的linux系统无从下手了。不知道在什么时候用什么命令去检查系统,这是很多linux新手最无奈的事情了。说到底,就是学习的理论没有很好的与系统实际操作相结合。
很多linux知识,例如每个命令的参数含义,在书本上说的很清楚,看起来也很容易理解,但是一旦组合起来使用,却并不是那么容易,没有多次的动手练习,其中的技巧是无法掌握的。
人类大脑不像计算机的硬盘一样,除非硬盘坏掉或者硬盘被格式化,否则储存的资料将永远而且时刻的记忆在硬盘中。而在人类记忆的曲线中,必须要不断的重复练习才会将一件事情记得比较熟。同样的,学习 Linux 也一样,如果无法经常学习的话,学了后面的,忘记了前面的;还有些linux初学者也学了很多linux知识,但是由于长期不用,导致学过的东西在很短的时间内又忘记了,久而久之,失去了学习的信心。
可见,增加自己Linux 的实战技能,只有勤于动手,勇于实践,这也是学好linux的根本。
2.3 学会使用linux联机帮助
各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者来说往往是不够的, 其实当安装了一个完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现和使用它们的技巧。例如,对于一个linux tar命令的使用,你不是很熟悉,那么只要你在命令行输入man tar, 就会得到tar的详细说明和用法;
主流的linux发行版都自带了非常详细的帮助文档,包括使用说明和FAQ,从系统的安装到系统的维护,再到系统安全,针对不同层次人群的详尽文档。仔细阅读文档后60%的问题都可在这里得到解决。
2.4 学会独立思考问题,独立解决问题
遇到问题,首先想到的应该是如何自己去解决这个问题,解决方式很多,看书查资料,网络搜索引擎,技术论坛等等,通过这几种方式,90%的问题都能得到解决,通过这种方式一方面锻炼了自己独立解决问题的能力。另一方面技术上也能得到快速提高。
如果通过如上方式实在解决不了的话,可以向人询问,得到答案后要考虑为何这么做,然后做笔记记录解决过程。最忌讳的方式是只要遇到问题,就去问人,虽然这样可能会很快解决问题,但是长久下去遇到问题就会依赖别人,技术上也不会进步。
2.5 学习专业英语
如果你想深入学习Linux,一定要尝试去看英文文档。因为,技术性的东西写的最好的,最全面的文档都是英语写的,最先发布的高新技术也都是用英语写的。即便是非英语国家的人发布技术文档,也都首先翻译成英语在国际学术杂志和网络上发表。安装一个新的软件时先看README,再看INSTALL,然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。因此,学习一点专业的英语是很有必要的。
2.6  Linux学习基本步骤
到这里,我们总结一下linux的学习路线图,给各位初学者作为参考。
初级阶段:
1. 命令是必须要学的,linux常用的命令大概在80个左右,这些常用命令一定要熟练掌握。
2. 掌握linux软件包的常用安装方法,例如源码安装,rpm方式安装等等。
3. 学习安装设备驱动程序(比如网卡、显卡驱动)
4. 熟悉Grub/Lilo引导程序及简单的修复操作。
5. 熟悉Linux文件系统和目录结构以及linux基本运行原理。
6. 掌握vi,gcc,gdb等常用编辑器,编译器,调试器。
7. 理解shell别名、管道、I/O重定向、输入和输出以及shell简单脚本编程。
8. 学习Linux环境下的网络基本组建。
高级阶段:
1:尝试阅读linux内核源码:
这需要具有一定的C、C++语言基础,因为C、C++是linux/unix的核心语言,系统代码都是C写的。
2:尝试编译安装和调试自己的linux内核:
在阅读源码了解了linux底层的运行原理后,完全可以编译一个适合自己的linux系统来。
3:深入学习shell, perl,cgi等脚本语言:
这些脚本语言在linux下非常强大,它们能完成你想做的任何事情,熟练掌握这些语言,可以让你在linux系统下游刃有余,如鱼得水。
4:构建企业级linux高可用集群系统:
linux下有很多开源免费的集群软件,利用这些免费的集群软件完全可以构建出与商业unix系统想媲美的集群系统来。

三、用虚拟机软件学习linux

3.1 什么是虚拟机软件
虚拟机软件可以在一台电脑上模拟出来若干台PC电脑,每台PC可以运行单独的操作系统而互不干扰,可以实现一台电脑&ldquo;同时&rdquo;运行几个操作系统,还可以将这几个操作系统连成一个网络。
linux 学习 上图中,是在一台电脑上安装了Windows 2000 Server,再在Win2000 server上安装虚拟机软件VMWare,利用VMWare模拟出来3台PC,在这3台PC上分别运行RedHat Linux、Win2000和Solaris 9 for x86操作系统。这4个操作系统同时在一台电脑上运行,互不干扰,并且同在一个局域网内。
听了上面的基本介绍,你可能知道虚拟机软件到底是做什么用的了。那么好,我们继续做更深入的介绍。
目前PC上的虚拟机软件最常用的有下述两个:
VMWare       网址为:http://www.vmware.com
Virtual PC   网址为:http://www.connectix.com
3.2 使用虚拟机软件的好处
1、如果要在一台电脑上安装linux和windows系统,不用虚拟机的话,有两个办法:一是装多个硬盘,每个硬盘装一个操作系统。这个方法比较昂贵。二是在一个硬盘上装双系统。这个方法不够安全,因为系统盘的MBR是操作系统的必争之地,windows更是霸道,每次重新安装系统都要重写系统的MBR,这样的话搞不好会几个操作系统同归于尽。而使用虚拟机软件既省钱又安全,因此,对于新手来说,利用虚拟机学习linux简直是再好不过了。
2、在虚拟机上安装linux系统,你不用担心会格式化掉自己的硬盘,你甚至可以随意的对虚拟系统进行任何的设置和更改操作,你可以格式化虚拟系统硬盘,重新分区虚拟系统硬盘等等, 因为虚拟机是你真实系统上运行的软件,对虚拟机系统的任何操作都是对软件的操作。
3、利用虚拟机模拟出来的linux系统和真实的linux系统是一摸一样的,现在各个公司专门的linux服务器是不会让新手随意去动的,而供测试的linux服务器一般又很紧缺,在自己电脑上安装虚拟linux系统,可以随意的学习测试,而不受任何环境影响。
3.3 虚拟机的运行环境和硬件需求
1:运行环境
VMWare可运行在Windows(WinNT以上)和Linux操作系统上。
Virtaul PC可运行在Windows(Win98以上)和MacOS上。
注:运行虚拟机软件的操作系统叫Host OS,在虚拟机里运行的操作系统叫Guest OS。
2:硬件需求
虚拟机是将两台以上电脑任务集成到一台电脑上来,因此对硬件要求比较高,主要是内存,硬盘和cpu;内存要足够大,因为每个虚拟机都会占用一定的内存资源,内存的总大小等于各个虚拟系统的总和。可喜的是,现在内存已经很便宜了,内存就不是问题了。同样,硬盘空间也是每个虚拟机都要占用的,cpu现在都到了多核阶段,也不是问题。
3.4 虚拟机的安装与使用
1.VMware虚拟机概述
上面章节讲到,虚拟机软件有VMWare和Virtual PC,它们各有优缺点,其中VMWare在全球占领了80%的市场份额,因此我们也主要讲述VMWare的安装与使用。
VMware是提供一套虚拟机解决方案的软件,主要产品分为如下3个:
(1)VMware-ESX-Server: 这个版本并不需要操作系统的支持。它本身就是一个操作系统,用来管理硬件资源。所有的系统都安装在它的上面。带有远程web管理和客户端管理功能。
(2)VMware-GSX-Server: 这个版本就要安装在一个操作系统下了,这个操作系统叫做HOST OS。 这个HOST OS可以是Windows 2000 Server以上的Windows系统或者是Linux(官方支持列表中只有RH,SUSE,Mandrake很少的几种),和VMware-ESX-Server一样带有远程web管理和客户端管理功能。
(3)VMware-WorkStation: 这个版本和VMware-GSX-Server版本的机构是一样的。也是要安装在一个操作系统下,对操作系统的要求也是Windows 2000以上或者Linux。和Vmware的区别就是没有web远程管理和客户端管理。
Vmware GSX Server不支持虚拟机双CPU,而且已经停止开发新版本, Vmware Server 是Vmware 公司决定将GSX Server免费后,重修代码后发布的, 目前有版本更新。因此我们选择免费的GSX Server作为讲述的版本。
2.虚拟机软件的安装
我们在windows下安装windows版本的VMware server,然后在VMware server上安装linux操作系统。虚拟机软件的安装很简单,只需按照windows常规方法安装即可完成,这里不在讲述。
3.创建一个虚拟机系统
虚拟机软件安装完毕,双击桌面上的 VMware Server 图标以启动应用程序:
(1) 按CTRL-N创建一个新虚拟机,弹出新建虚拟机向导,如图2所示界面,点击下一步:

 linux 学习
图2

(2)选择虚拟机配置,如图3所示,这里选择Custom,点击下一步:

linux 学习
图3
(3) 选择客户机操作系统,如图4所示,这里选择Linux,版本选择Red Hat Enterprise Linux ;,点击下一步:
linux 学习
图4
 

(4) 给虚拟机命名,如图5所示,虚拟机名称设为Red Hat Enterprise Linux 4,虚拟机路径设为C:\Virtual Machines\Red Hat Enterprise Linux,点击下一步:

linux 学习
图5
(5) 设置访问权限,如图6所示,去掉Make this virtual machine private&rdquo;。 这样可以保证系统安装完毕,虚拟机linux系统可以和windows系统互通。点击下一步:
linux 学习
图6
(6) 启动/关闭选项,如图7所示,虚拟机帐户,选择User that powers on the virtual machine,点击下一步:
linux 学习 6
图7
(7) 虚拟机处理器配置,如图8所示,这里选择一个处理器。 如果你有多个处理器可以选择多个,点击下一步:
linux 学习
图8
(8) 设置虚拟机内存大小,如图9所示,可以通过滑竿选择给虚拟机系统分配的内存大小,一般选择是windows系统内存的一半。这里选择800M。点击下一步:
linux 学习
图9

(9) 选择虚拟机网络连接类型,如图10所示,这里选择Use bridged networking网桥方式,点击下一步:

linux 学习
图10

(10) 选择 I/O 适配器类型,如图11所示,这里选择LSI Logic,点击下一步:

linux 学习
图11

(11) 选择虚拟磁盘,如图12所示,选择Create a new virtual disk,点击下一步:

linux 学习
图12

(12) 选择磁盘类型,如图13所示,选择SCSI (Recommended),点击下一步:

linux 学习
图13

(13) 指定虚拟机磁盘容量,如图14所示,磁盘容量,可根据自己的需求选择大小,安装Linux,一般5G即可满足需求,这里输入&ldquo;25GB,选择Split disk into 2 GB files,点击下一步:

linux 学习
图14

(14) 指定磁盘文件路径,如图15所示,可以点击Browse指定磁盘文件的路径,这里的路径为F:\Red Hat Enterprise Linux 4\Red Hat Enterprise Linux 4.vmdk,然后点击完成,即可完成虚拟机的创建。

linux 学习
图15

15)  虚拟机创建完毕后,出现虚拟机控制台界面,如图16所示,这样我们就创建了一个  linux虚拟机系统,接下来就需要在虚拟机下安装linux系统了。

linux 学习
图16

(16) 点击图16虚拟机控制台中的Edit virtual machine settings选项,即可到virtual machine settings界面,如图17所示:
在这个界面中,我们可以添加虚拟机各种资源、编辑虚拟机的各种属性,例如修改虚拟机内存大小、编辑网卡连接方式、添加一个虚拟磁盘、指定光盘的引导方式等。还可以删除虚拟机中的各种资源。

linux 学习
图17

(17) 点击图18中add按钮,出现图18所示界面:在这个界面中,可以给虚拟机添加各种硬件资源,例如,硬盘、光驱、软驱、网卡、声卡等设备。

linux 学习
图18

到此为止,虚拟机的安装和基本配置已经介绍完毕,接下来开始讲述在虚拟机上安装linux的方法。

4.虚拟机上linux安装方式
在虚拟机上安装linux系统,常用的方法有两种:光驱安装和iso镜像文件安装。
(1) 光驱安装方式
在 VMware Server控制台上,双击右面板上的 CD-ROM 设备,然后选择Use physical drive,location选择host,下面下拉框选择Auto detect即可。如图19所示,最后,Linux系统光盘放入光驱,单击Start this virtual machine即可进入Linux安装界面。
(2) iso文件安装方式
在 VMware Server 控制台上,双击右面板上的 CD-ROM 设备,然后选择Use ISO image,然后指定iso文件路径,如图20所示,最后,单击Start this virtual machine即可进入Linux安装界面。

linux 学习
图19
linux 学习
图20

Linux系统的安装,我们将在在后面文章中讲述,这里不在多说。

四、linux学习资源

4.1 网络资源,搜索引擎,论坛
Linux的开源特性决定了linux知识的开放性和充足性。当今,linux非常流行,linux学习资源也非常之多,书店到处可见linux方面的书籍,选择一本适合自己的慢慢去学习,再好不过。
除了书本的知识,网络里也有无限的linux学习资源,各大linux技术门户,linux社区论坛,都是学习linux的好地方;在这里,有一批无私奉献的linux狂热爱好者,他们把自己的学习经验和学习总结无偿的发布出来;他们每天在linux论坛的各个角落热情的回答广大网友提出的问题;他们不求回报,因为他们热爱技术,热爱linux。
遇到学习问题,或者要查找某些linux资料,搜索引擎绝对是第一选择,例如google.cn和baidu.com,99%的技术资料都能在这里搜到。查找linux资料,不要错过这两个优秀的搜索引擎。

4.2 有本书在身边
网络中有很多linux学习资源,丰富的学习资源,虽然给我们学习提供了很好的便捷性,但是也造成了我们学习的盲目性,学习资源的丰富性,引出的另一个问题是资源的混杂,刚入门的新手感觉无从下手,可能今天看了一点内存管理的资料,明天学习了一点磁盘管理的资料,并且总是感觉自己理解了也学会了,但是就是无法灵活的掌握,究其原因,就是没有系统的学习linux。
因此,选择一本好书在自己身边是必须的,一本好书应该是由浅入深,有点及线,有线及面的介绍知识,选择一本好书,同时结合网络资源进行循序渐进的学习,此时,你的学习就不会再有空洞感,进步也会飞快。你会感觉学习linux是一件很快乐的事情。

五、linux的应用领域

很多新手都有一个很疑惑的问题:&ldquo;我学习linux系统,能在上面干什么呢,或者说linux系统具体能做什么&rdquo;,有这样的疑问,也很正常,但是随着对linux了解的加深,这些疑问就会慢慢消除,下面具体讲述下linux操作系统的应用领域(也就是linux到底是干啥的)。

1:服务器领域
现在的服务器市场以linux、unix、windows三分天下, linux可谓后起之秀,从产生发展到现在,在服务器应用领域节节攀升,并且每年增长势头迅猛。
Linux作为企业级服务器应用广泛,利用Linux系统可以使企业构架WWW服务器、代理服务器、邮件服务器、DNS服务器、透明网关、路由器等等,不但给企业降低了运营成本,同时获得了linux系统带来的高稳定性和高可靠性。
随着linux在服务器领域的广泛应用,这几年来,linux已经悄悄进入政府、教育、银行、石油等行业,同时各大unix厂商也推出在unix平台支持linux操作系统,例如IBM AIX。这一切表明,linux在服务器市场前景光明,相信在不久的将来,linux会渗透到社会各个领域。
2.嵌入式Linux系统
由于 Linux系统开放源码,功能强大、可靠、灵活而且具有伸缩性,再加上它广泛支持大量的微处理器体系结构、硬件设备、图形支持和通信协议,因此,在嵌入式应用的领域里,从因特网设备到专用的控制系统,Linux 操作系统的前景都很光明的。
例如,诺基亚和摩托罗拉公司都推出了linux平台的手机。
(原文地址

新手Linux学习路线图终极版

对于刚入门linux学习或者准备学习linux的同学们来说,学习linux该从何学起?有什么好的linux学习入门书籍呢?本文将会给linux新手们展示学习linux的终极路线图, 该路线图分为初级,中级,高级阶段。
1. 初级阶段需要掌握的linux知识要点
 1)学习linux的第一步首先是要下载linux系统iso镜像文件,然后在虚拟机或物理机上去安装。
2)Linux系统的安装,可以先从centos 或者ubuntu系统开始学习安装
3)掌握linux图形界面(Gnome或KDE)的使用,这个很容易,就和windows的差不多
4)linux目录结构的掌握,比如根目录,home 目录, var 目录,etc目录等各个目录主要用来放什么文件
5)linux常用命令的使用
6)Linux系统下常用软件的使用(比如音乐,电影播放,文件浏览,pdf,word等常用办公文档的查看,编辑,创建,压缩文件如何打开,如何安装中文输入法软件等。。)
 
 Lnux常用的基本命令:
linux系统操作命令:login、 shutdown、 halt、 reboot 、mount、umount 、chsh
linux文件操作命令:file、 mkdir、 grep、dd、 find、 mv 、ls 、diff、 cat、 ln
linux系统管理相关命令: df、 top、 free、 quota 、at、 lp、 adduser、 groupadd kill、 crontab、 tar、 unzip、 gunzip 、last
网络操作命令:ifconfig、 ip 、ping 、 netstat 、telnet、 ftp、 route、 rlogin rcp 、finger 、mail 、nslookup
系统安全相关命令: passwd 、su、 umask 、chgrp、 chmod、chown、chattr、sudo、 pswho
掌握了以上的内容后,基本算是对linux入门了。
2. Linux学习中级阶段需要掌握的要点
linux 用户和文件系统管理
linux网络管理(配置各种不同的服务器:Apache, FTP服务器,Samba 服务器, NFS服务器,DHCP 服务器,DNS服务器等)
linux磁盘管理(如何挂在移动硬盘,U盘,光盘,如何卸载移动硬盘,u盘,光盘等)
Linux系统和日志维护管理
shell脚本简单的学习(可以先从bash shell开始学习)
3. Linux 学习高级进阶阶段需要掌握的
等你到达这个阶段的时候,你基本可以在linux操作系统环境下进行日常办公了,那么在这个高级阶段你需要掌握什么更高深的知识呢?
如果你想深入服务器的配置研究, 如何确保各种服务器的配置运行成功,如何解决各种服务器遇到的问题?如何定位问题?也就说从运维的角度去考虑服务器的配置,维护,问题定位。
除了服务器的配置之外,还可以去深入研究shell脚本,如何写一个健壮的shell脚本。如何在linux下进行基于C语言的开发
内核的研究,如何升级内核。
如何基于linux做嵌入式的开发
linux驱动的研究

 linux学习进阶图

4. 在文章最后,我们来了解一下为什么要学习linux系统?
Linux是免费的开源的,你不需要另付费,不像windows系统,我们需要买license或者还得去破解
Linux是开源的,可以去查看linux的源代码并更改
Linux在IT行业里是讨论的最火热的系统,有大量的资料可以学习
Linux是未来发展的趋势,服务器,手机,掌上电脑,平板机很多都采用Linux操作系统,日入安卓系统
Linux有很多的发行版本,你可以根据需要做出不同的选择,不过大多数人喜欢用ubuntuh或者centos系统,因为可以免费升级更新包
Linux的是非常健壮的,安全性高
世界上最快的超级计算机90%以上的都安装的linux操作系统或者类linux的操作系统。

 
 

Linux/CentOS:如何设置日期时间同步

在linux系统下,我们如何让系统的时间跟服务器上时间保持一致呢?如何同步CentOS系统下的时间呢?如何让系统时间和时间服务器时间进行自动同步呢?本文将会介绍如何来设置CentOS下的日期和时间与服务器同步
我们可以使用rdate和ntpdate两个命令来进行时间同步。
首先要通过yum命令来安装这个两个工具。centos logo
[cc lang=”php”] $yum install rdate
or
$yum install ntpdate
[/code]

CentOS 使用rdate工具进行时间同步

rdate命令主要用来获取远程时间服务器上的时间,如果想更新到系统里,就需要使用“-s”选项。
rdate 命令参数介绍:
[cc lang=”php”] NAME
rdate – get the time via the network
SYNOPSIS
rdate [-p] [-s] [-u] [-l] [-t sec] [host…] DESCRIPTION
rdate  connects  to  an  RFC  868 time server over a TCP/IP network, printing the returned time
and/or setting the system clock.
OPTIONS
-p     Print the time returned by the remote machine.
-s     Set the system time to the returned time.
-u     Use UDP instead of TCP as the transport.
-l     Use syslog to output errors (cron.warning) and output (cron.info).
-t     Set timeout in seconds for every attempt to retreive date.
[/code]  
例子: 从网络时间服务器time.nist.gov同步时间并设置为系统时间
[cc lang=”php”] $rdate -s time.nist.gov
[/code]

CentOS 使用ntpdate工具进行时间同步

ntpdate工具会自动从指定的时间服务器进行时间同步。
ntpdate命令参数介绍:
[cc lang=”php”] NAME
ntpdate – set the date and time via NTP
Disclaimer:  The functionality of this program is now available in the ntpd program. See the -q com-mand line option in the ntpd – Network Time Protocol (NTP) daemon page. After a suitable  period  of mourning, the ntpdate program is to be retired from this distribution
SYNOPSIS
ntpdate [ -46bBdqsuv ] [ -a key ] [ -e authdelay ] [ -k keyfile ] [ -o version ] [ -p samples ] [ -t timeout ] [ -U user_name ] server [ … ] [/code] 例子:从时间服务器上同步时间
[cc lang=”php”] $ntpdate time.nist.gov
[/code] 当然你也可以自己搭建一个NTP 服务器用来供其他的主机做时间同步。

如何设置自动同步linux系统的时间

上面的两个命令只会做一次时间同步,那么如何让系统在特定的时间自动同步时间呢,可以通过配置/etc/crontab文件,加入下面的配置:
[cc lang=”php”] 00 0 1 * * root rdate -s time.nist.gov
[/code]  
搞定。。。
 

Linux/CentOS:使用Xmanager工具连接CentOS远程桌面

从windows系统如何访问linux下的系统,大家首先回想到vnc,那么还有其它的好的办法吗?本文将会介绍一个新的工具Xmanager,通过这个工具可以很方便的从windows系统连接linux 系统或CentOS系统的远程桌面。
Xmanager是一个运行于 Windows平台上的高性能的X Server软件。它能把远端Unix/Linux的桌面无缝地带到你的Windows上,甚至电脑是在内网或防火墙后,也能通过SSH协议安全的运行远端的X应用程序。
特点包括:

  • 可通过Xcongfig工具设置多个Xmanager设置;
  • 支持多用户的Windows终端环境;
  • 支持多个IP地址;
  • 支持本地资源数据库;
  • 通过热键转换键盘映射;
  • 支持多窗口下的Windows打印功能等

XManager_info

CentOS下需要做的配置

1.首先通过下面的yum命令安装gdm包
[cc lang=”php”] $yum -y  install gdm
[/code] 2. 更改配置文件/etc/gdm/custom.conf, 添加如下的配置:
[cc lang=”php”] [security] AllowRemoteRoot=true
[xdmcp] Port=177
Enable=1
[/code] 3.关闭centos系统防火墙
[cc lang=”php”] $/etc/init.d/iptables stop
[/code]  

Wiondows系统上配置

首先要下载并安装Xmanager工具,然后打开XBrowser并输入Linux系统的IP地址,就可以连接到CentOS的远程桌面了。
centos 65 remotedesktop