Linux系统基本命令

作为程序员来说,除了掌握开发语言之外,能够掌握一些服务器端的知识那就更好了,因为我们开发的项目都是部署在服务器中的,而且大多都是 Linux 服务器,这样当在生产中出现问题时,我们就能在服务器当中更快地定位问题,并进行解决,因此掌握一些服务器方面的知识还是很有用的。

1.Linux介绍

LinuxWindows 一样,也是一种操作系统,只是因为我们平常使用习惯的原因,更多的是使用 Windows 操作系统,但是在服务器端,更多的还是使用 Linux 操作系统,因为 Linux 是完全开源的,因此相对来说更加安全,对于我们程序员来说,平时开发时通常还是在 Windows 系统中进行开发,但是开发完成后则会部署在 Linux 系统中,因为总是要与 Linux 系统打交道的,因此掌握它的一些基本命令对于我们来说是非常实用的,掌握基本命令之后还可以接着学习 Shell 脚本,作为 Java 程序员来说,可能解决问题的第一思路就是使用 Java 了,但是也许学习了 Shell 脚本之后,我们就可以学会以其它方式解决问题了,对于某些问题来说,使用 Shell 脚本可能会十分高效,因此掌握好 Linux 系统相关的命令是十分有用的。

2.Linux的目录结构

Linux 系统中的文件都是采用目录结构来进行管理的,下面我们就来看 Linux 系统中常用的目录,了解了这些之后,也便于我们后续的学习。

bin(binaries):存放二进制可执行文件
sbin(super user binaries):存放二进制可执行文件,只有root用户才能访问
etc(etcetera):存放系统配置文件
usr(unix shared resources):用于存放共享的系统资源
home:存放用户文件的根目录
root:超级用户目录
dev(devices):用于存放设备文件
lib(library):存放文件系统中的程序运行所需要的共享库及内核模块
mnt(mount):系统管理员安装临时文件系统的安装点
boot:存放用于系统引导时使用的各种文件
temp(temporary):用户存放各种临时文件
var(variable):用于存放运行时需要改变数据的文件

3.常用命令

下面我们就开始学习 Linux 系统中一些常用的命令,熟练使用之后还是非常实用的。

3.1 切换目录

Linux 系统中,文件都是保存在目录当中的,当我们在使用时,便需要切换目录去查看以及操作文件,因此这时候我们便可以使用 cd 命令来进行操作了。

cd app:切换到app目录
cd ..:切换到上一级目录
cd /:切换到系统根目录
cd ~:切换到用户主目录
cd -:切换到上一个所在目录

需要说明一下的是最后一个命令,也就是 cd - 命令了,它的作用是切换回上一个所在目录,其实意思也非常简单,比如先进行一次 cd bin 命令进入到 bin 目录,然后再进行一次 cd usr 进入到了 usr 目录,这时候如果执行 cd - 命令的话,那就会切回到 bin 目录了。

3.2 列出文件列表

下面要介绍的命令,则是列出文件列表的命令了,我们一般都会使用 ls 命令,这个命令是可以搭配一些参数使用的,关于这个命令参数的说明,我们可以使用 ls --help 来查看,其中查看文件列表时使用比较多的两个命令为:

ls -a:显示所有的文件和目录(包含隐藏文件)
ls -l:以较长格式列出文件和目录信息,可以简写为ll

需要说明一下的是,Linux 中的隐藏文件通常都是以点号 . 开头的文件,最后需要说明的就是,列出文件列表,其实还可以使用 dir 命令,并且同样可以带上一些参数,具体的参数说明可以使用 dir --help 查看的。

3.3 创建目录和移除目录

下面我们再看如何在 Linux 系统中创建目录以及移除目录,创建目录我们可以使用 mkdir 命令,其实也就是 make directory 的缩写,而移除目录则是使用 rmdir 命令,也就是 remove directory 的缩写了,下面我们看具体命令的使用。

mkdir aaa:在当前目录下创建aaa目录
mkdir -p aaa/bbb:在当前目录下创建多级目录,也就是aaa目录下面再创建bbb目录
rmdir aaa:移除空目录,当aaa为空目录时进行移除操作

关于创建多级目录,需要说明一下的,这里是使用了 -p 参数,也就是在需要时再创建一级目录,其实这个参数的说明,我们也可以使用 mkdir --help 命令查看的,最后关于移除目录的,其实 rmdir 命令只有当要移除的目录为空时才能移除成功,否则是移除不了的,关于如何移除一个包含文件和子目录的目录,我们在下面再进行说明。

3.4 浏览文件的命令

下面则是介绍查看文件中内容的命令了,主要是 catmoreless 以及 tail 这些,其实掌握了这些查看文件内容的命令,在实际开发过程中查看日志是十分方便的,下面具体来看每个命令。

先看 cat 命令,cat 命令后面直接接文件名就可以查看文件中的内容了,如:

cat time.log

这样我们就能看到文件中的内容了,不过有一点需要注意的就是,如果文件中的内容过多,使用这个命令效果就不是很好了,因为会将所有的内容进行展示,而内容如果过多,其实我们是看不到重点的,不过如果文件内容不是很多的话,还是可以使用的。

下面再看 more 命令,使用的话其实也是直接在后面加文件名,这样就能查看到文件内容了,不过使用 more 命令时,一般只会展示一页的内容,如果我们需要查看更多的内容,则可以使用空格键或者回车键,空格键则是查看下一页的内容,而回车键则是查看下一行的内容,因此阅读内容的体验也就会更好,当我们想停止阅读时,则可以按 q 键退出。

less 命令的话,使用起来则是和 more 命令类似,后面也是直接接文件名进行查看,同样一次也只是展示一页的内容,需要查看更多内容的话则可以通过 PgUpPgDn 进行翻页操作,PgUp 则是向上翻页,而 PgDn 则是向下翻页操作,这样的话也是可以满足我们的阅读需要的,同样,当我们想停止阅读时,则可以按 q 键退出。

最后进行说明的则是 tail 命令了,这个命令的主要作用则是查看文件最后一行的内容,具体事宜如下:

tail -10 time.log:查看文件中最后10行内容
tail -f time.log:动态查看文件增加内容

这个命令在我们的实际开发中是用的比较多的,因为当我们监控某个服务是否正常时,可能就会直接查看它对应的日志输出,那这时候我们就可以使用如下命令了。

tail -50f time.log

这个命令其实融合了上面的两个命令,起到的作用就是查看日志文件最后面的 50 行内容,而且当有新的日志写入到该文件时,也会进行输出。

3.5 文件操作

下面我们再来看对于文件的操作,主要就是复制,移动以及删除了,对应的命令也就是 cpmv 以及 rm 了,首先先看复制命令。

cp a.txt b.txt:将a.txt复制为b.txt文件
cp a.txt ../:将a.txt文件复制到上一级目录

其实在实际开发中,复制命令还是非常有用的,比如我们想要对某个文件进行处理,而又怕因为操作失误对文件造成无法复原的损坏,因此这时候我们就可以先将该文件备份一下,然后再进行操作,这样就能保证不出问题,接下来我们再看移动命令,常用形式为:

mv a.txt b.txt:将a.txt文件重命名为b.txt文件
mv a.txt ../:将a.txt文件移动到上一级目录

其实移动命令有时候就是重命名操作,最后我们再看删除操作,也就是 rm 命令的操作,因为删除命令都是无法回退的,因此在操作时还是应该多加仔细,以免造成损失,下面看具体的使用(下面的 a.txt 是一个文件,而 a 则是一个目录)。

rm a.txt:删除a.txt文件,会进行提示是否确认删除,y表示是,n表示否
rm -f a.txt:强制删除a.txt文件,不进行询问
rm -r a:删除a目录中的所有文件,每个文件都会提示是否确认删除
rm -rf a:循环强制删除a目录中的所有文件
rm -rf *:删除所有文件
rm -rf /*:删除根目录下面的所有文件

还是想提醒一句,删除操作具有强大的破坏力,因此在使用时应该格外小心,以免造成不必要的损失,上述列出的最后两个命令最好不要使用。

3.6 打包压缩与解压

下面我们开始介绍如何在 Linux 系统中进行打包并压缩或解压操作,其实这些操作在我们平时还是用的非常多的,因为如果需要在网络中传输某个文件的话,这时候先将文件压缩一下速度肯定是会有很大提高的,特别是在文件比较大的情况下,而这些操作我们都可以使用 tar 命令来完成,我们先看具体的使用。

tar -cvf a.tar ./*:将当前目录下的所有文件打包成一个新文件a.tar
tar -zcvf a.tar.gz ./*:将当前目录下的所有文件打包并压缩成一个新文件a.tar.gz
tar -xvf a.tar:将a.tar这个包文件解压到当前文件夹
tar -xvf a.tar.gz -C ./b:将a.tar.gz压缩文件解压到当前目录的b目录中

上面的这几个操作便是我们平时会经常使用到的命令了,因此还是要牢记的,不过也不用太过担心,因为我们使用的多了之后就自然会记住了,同时,我们需要多关注一下 tar 命令后面可以接的参数有哪些,这样在实际中就能灵活运用了。

-c:创建一个新tar文件
-v:显示运行过程的信息
-f:指定文件名
-z:调用gzip压缩命令进行压缩
-t:查看压缩文件的内容
-x:解开tar文件

需要说明一下的是,其实 tar 命令是只做打包操作的,即将多个文件打包到一个文件当中,而不做压缩命令的,需要压缩时是在 tar 命令的参数中加上 -z 参数调用的 gzip 压缩文件命令,同时需要注意的一点就是,在使用 tar 命令解压压缩文件时,如果需要指定解压到哪个目录中,是需要使用 -C 进行指定的,而且这里的 C 是大写的,并且需要预先创建好目录,否则会解压失败。

3.7 查找文件

下面我们再来看查找文件的命令,查找文件其实是可以分为两种的,一种是查找符合条件的文件,第二种则是在文件中查找符合条件的字符串,这两种查找也就分别对应我们下面将要介绍的两种命令,也就是 findgrep 了。

先看 find 命令,这个命令主要的就是用来查找符合条件的文件了,我们可以使用这个命令根据文件名称、所属用户以及文件权限来进行查找,下面先看具体的使用:

find / -name "log*":查找根目录下文件名以log开头的文件和目录
find / -name "log*" -ls:查找到根目录下文件名以log开头的文件和目录,并展示其详细信息
find / -user laucloud -ls:查找根目录下所属用户为laucloud的文件和目录,并展示其详细详细
find / -user laucloud -type d -ls:查找根目录下所属用户为laucloud的目录,并展示其详细详细
find / -perm 777 -type f -ls:查找根目录下权限为777的文件

这里需要说明的是,上面的例子中 find 后面直接跟的 /,代表的是查找范围为根目录下,如果只是想查找本目录的话,则可以指定为 ./,同时有的命令后会跟着 -ls,这是表示在查找到符合条件的文件或目录之后,会展示它的详细信息,最后一个便是 -type 参数,如果后面跟的是 d,则表明查找的只是目录,而如果是 f 的话,则表示查找的只是文件。

下面再看 grep 命令,这个命令则是用来查找文件中符合条件的字符串,在实际的开发过程中,我们可能会经常使用这个命令来查找日志文件,以便得到我们想要的信息,下面先看具体的使用:

grep exception time.log:在time.log文件中查找exception这个字符串
grep exception time.log --color:在time.log文件中查找exception这个字符串,并将找到的字符串高亮显示
grep exception time.log --color -A5 -B5:找到对应的关键字之后,高亮显示,并显示关键字前面的5行信息和后面5行信息

这里需要说明的是,如果我们需要查找的关键字中是包含空格的,那我们可以使用引号将关键字引起来,这样就可以检索多个单词了,还有就是上面命令中的参数说明,其中的 --color 是表示在查找到对应的字符串之后需要将它高亮显示,而 -A5-B5 则是表示显示查找到对应关键字的前 5 行信息和后 5 行信息,其实这里的 A 就是表示的 After,而 B 则是表示的 Before,这样就很好理解了。

3.8 其它常用命令

下面我们再看一些常用的实用命令,掌握了这些可以使我们使用 Linux 时更加熟练,下面先看具体的使用:

pwd:显示当前所在目录
touch a.txt:创建一个空文件a.txt
ll -h:友好的显示文件大小
wget http://nginx.org/download/nginx-1.9.12.tar.gz:下载nginx安装包

下面逐一的进行说明一下,pwd 命令用于显示当前所在目录,我们在 Linux 系统中进行操作时,一般都是在某个目录中,而有时候则需要跳转到其它目录,当我们跳转目录次数多了之后,很可能已经无法准确知道自己现在是在哪个目录下面了,那这时候使用 pwd 命令,就能知道当前所在目录的绝对路径了;touch 命令则是可以创建空文件,比如上面我们就创建了一个 a.txt 的空文件;下面再看 ll -h 命令,这个命令可以用于展示当前目录中所有文件的大小,而且是十分友好的进行展示,单位会根据文件实际大小来确定,比如 KM 以及 G,简单点说,就是以便于人类阅读的方式进行展示;最后则是 wget 命令了,这个命令主要是用来下载网络中的文件,在 Windows 系统中,我们下载网络中的文件时,主要是通过浏览器来进行的,其实也是获取到相应链接之后然后传输文件,而在 Linux 系统中的话,我们就可以直接使用 wget 命令进行下载了,只要后面跟上网络中资源的链接的地址便可以下载了。

3.9 vi和vim编辑器

下面我们开始介绍 vivim 编辑器,其实就有点类似于我们 Windows 系统中的 EditPlus,也就是用来专门编辑文本文件的,而 vim 相当于是对 vi 升级的工具,因此在 vi 中可以使用的操作方法在 vim 中同样也是可以使用的,其实我们平时经常使用的一些操作方法对于 vivim 来说都是相同的,因此掌握了一种,另一种也是可以灵活运用的,下面开始具体介绍。

首先需要说明的是,vi 编辑器一共有 3 中模式,分别为:

命令行模式:使用命令对文件中内容进行操作
插入模式:使用键盘对文件中内容增加和修改
尾行模式:保存对文件的修改并退出或直接退出

下面我们根据 vi 编辑器操作一个文件的流程来具体讲解一下 vi 编辑器应该如何使用,可以假设操作的文件名为 a.txt,首先我们开始编辑该文件,我们可以直接使用 vi a.txt 或者 vim a.txt 进入编辑状态,要是 a.txt 文件根本不存在也不要紧,使用上面的命令时,如果操作的文件不存在,系统会自动帮我们新建一个空文件,同时我们现在也就进入到了命令模式,如果此时文件中已经有内容的话,我们这时候就可以根据相关命令对文件中内容进行操作了,常用的命令有:

dd:快速删除一行
yy:复制当前行
nyy:从当前行开始向后复制n行
p:粘贴
R:替换

上面需要说明的就是关于复制的命令,yy 复制命令常和 p 粘贴命令一起使用,这样就相当于把光标所在行进行了复制并粘贴,同样的,如果是复制多行的话,那就是 nyy 命令和 p 粘贴命令一起使用了,最后说一下 R 替换命令,在我们按下替换命令之后,我们就可以在文件中输入了,而输入的字符则会直接替换掉光标所在行的字符,这样也就完成了替换操作。

上面就是在命令模式下我们会使用到的常用命令,下面我们开始介绍插入模式,可以直接按一个 i 键进入插入模式,这样我们就能对文件进行编辑了,其实想要从命令行模式到插入模式不止可以按一个 i 键,也可以按下面这些键,下面一一进行说明:

i:在光标所在位置前面插入字符
I:在光标所在行行首插入字符
a:在光标所在位置后面插入字符
A:在光标所在行行尾插入字符
o:在光标所在行下面插入一行
O:在光标所在行上面插入一行

这些按键都可以使我们由命令模式转入到插入模式,在插入模式中我们就可以使用键盘对文件中的内容进行编辑了,当我们编辑完了之后,想要保存应该怎么办呢?这时候我们就需要先按键盘左上角的 Esc 键由插入模式退回到命令模式,这时我们便可以进入到尾行模式进行保存退出操作了,如何才能由命令模式进入到尾行模式呢?其实也很简单,只需要在键盘中输入一个冒号 : 就行了,其实也就是 Shift+: 的组合按键了,如果这时候我们想要保存刚才我们对文件的操作并退出,则可以在尾行中输入 wq,然后回车就行了,其实 wq 也就是 writequit 的简写了,如果我们不打算保存刚才对文件的操作而直接退出呢?那就可以在尾行中输入 q! 了,这样的话就是直接退出对文件的编辑,而不进行保存了。

其实 vi 编辑器就相当于是 Windows 系统中的各种文本编辑器了,只是它还提供了一些命令来供我们使用,只要我们经常使用的话,就会慢慢地熟悉它的使用规则了。

3.10 重定向和管道操作

下面我们再来看重定向和管道操作,先看重定向命令,它的作用便是将一个命令所得到的结果输出到一个文件当中,重定向命令有两种写法,分别如下:

>:重定向输出,会覆盖之前已有的内容
>>:重定向输出,会在之前已有的内容后面追加写

其实 >>> 两者最大的区别也就是一个会覆盖之前已有的内容,而另外一个则是追加写,使用方式也是十分简单,如下:

ls -l > a.txt:将当前目录下所有文件以及目录的列表详细信息写入到a.txt文件中

上面的例子中如果将 > 直接换为 >>,那么得到的效果就是将得到的列表信息追加写到 a.txt 文件当中,重定向命令还是十分有用的,比如可以将 Shell 脚本中的日志输入到某个文件中,以便我们后续进行查看。

下面我们再看管道命令,也就是 | 符号了,它的作用就是将前一个命令的输出用作后一个命令的输入,可以看下面这些具体的使用。

ls --help | more:分页展示ls命令的说明文档
ps -ef | grep java:查询名称中包含java的进程

其实在实际开发中,上面这个命令我们是经常使用的,即查看进程,ps -ef 命令是查看当前系统中所有的进程,而后面 grep java 则是在这所有的进程当中查询名称中包含 java 的进程,也就是将前一个命令所得到的结果作为后一个命令的输入了。

下面我们最后看一个 && 命令,它的作用是连接两个命令的,实现逻辑与的功能,只有当左边的命令返回真,也就是执行成功,才会执行右边的命令,比较好理解的例子就是下面这个了。

mkdir test && cd test

上面这个命令的作用就是创建一个 test 目录,并进入到该目录当中,如果创建目录失败的话,就不会执行进入目录命令了。

3.11 系统管理命令

下面我们再来看一些系统常用的管理命令,掌握了这些命令的使用,可以让我们更好地在 Linux 系统中管理相关程序,下面具体来看:

date:显示系统当前时间
date -s "2008-01-01 00:00:00":设置系统当前时间

上面的 date 命令则是与当前系统时间相关的命令了,可以直接获取得到系统当前时间,也可以设置系统当前时间。

df:显示磁盘信息
df -h:友好地显示磁盘信息
free:显示内存状态
free -m:以MB为单位显示内存状态
free -g:以GB为单位显示内存状态
top:显示正在执行中的程序

上面这些命令都是用来显示系统相关信息的,比如磁盘和内存的相关情况,同时还可以查看当前系统中正在运行的程序,下面我们再看进程管理的命令:

ps -ef:查看所有进程
ps -ef | grep java:查找进程名中包含java的进程
kill 2868:杀掉PID为2868的进程
kill -9 2868:强制杀掉PID为2868的进程

上面查看进程和杀掉某个进程在实际开发中还是很有用的,因为有可能我们需要及时地结束掉某个进程,这时候就需要使用上面的命令了。

du:显示目录的大小
du -h:友好的展示目录的大小
who:显示当前登录用户的信息
uname:显示系统信息
uname -a:显示系统详细信息,信息依次为:内核名称(类别),主机名,内核版本号,内核版本,内核编译日期,硬件名,处理器类型,硬件平台类型,操作系统名称

上面的这些命令中显示目录大小可能是经常会使用的,其它命令可能不是那么常用,了解一下就好。

3.12 用户管理

下面我们开始介绍 Linux 系统中的用户,很显然的,只有有了用户,才能登录并使用 Linux 系统,否则是无法使用的,下面我们就来看在 Linux 系统中是如何管理用户的,首先,我们最开始登录系统时,一般是使用的 root 用户,这个用户也是系统中权限最大的用户了,但是我们在实际开发过程中,一般都是有多个用户的,这也是为了系统的安全性,那怎样才能新增用户呢?就是使用下面的命令:

useradd test:增加一个test用户

在系统中,每次增加一个用户,系统都会在 /home 目录下新建一个和用户名相同的目录,用来存放该用户的数据,如果想要指定用户的目录,则可以使用 -d 参数,具体使用如下:

useradd test -d /home/t1

这样的话,在 /home 目录下,为 test 用户分配的目录便不是 test 目录了,而是 t1 目录了,那如果是 root 用户呢,它对应的用户目录又是什么呢?其实 root 用户所对应的用户目录就直接是 /root 了,当创建了一个用户之后,我们便需要为这个用户设置密码,以便后续可以登录使用,设置密码则可以使用如下命令:

passwd test test123

上面命令的作用则是为 test 用户分配 test123 的密码,这样后面我们就可以使用该用户来登录系统了,那如果想要切换用户的话,我们应该使用什么命令呢?其实可以使用下面这两个:

ssh -l 用户名 -p 端口号 ip地址
su 用户名

其实如果将上面这两种方式登录的环境具体一些的话,就可以是下面这样的:

ssh -l test -p 22 192.168.1.112
su test

使用上面两种方式时,输入上面的命令之后,系统都会提示输入密码,这时输入正确的密码就能够正常切换用户了,同时也可以使用 who 命令查看当前登录的用户是谁。

最后需要介绍的就是删除用户了,当某个用户不再需要时,我们便需要对用户进行删除操作了,这时候我们就可以使用 userdel 命令了,比如我们想删除 test 用户的话,那我们就可以使用如下的命令:

userdel test

这时候我们便删除掉系统中的 test 用户了,但需要注意的是,这时候虽然删除掉了该用户,但是该用户所对应的用户目录是没有被删除的,也就是 /home 目录下面的 /test 目录是没有被删除的,如果我们想要在删除用户时,连带它的用户目录也一起删除,那应该怎么办呢?其实是可以使用下面这个命令的:

userdel -r test

这样的话,当我们在删除 test 用户时,就不仅删除掉了 test 用户了,而且其对应的用户目录也一起被删除了。

3.13 组管理与账户文件

上面是介绍的 Linux 中的用户,我们现在便介绍系统中用户所属的组,其实系统中的每一个用户都属于一个组,当我们创建一个用户,却没有为它指定所属的组时,系统会自动创建一个和该用户名相同的私有组的,并将该用户划分为该组中的成员,比如我们上面新建的用户 test,新建时是没有为它指定所属组的,那么系统就会新建一个 test 的私有组,并将 test 用户划分到这个组中,其实我们是可以使用 id 命令进行查看的,也就是 id test 命令,这样我们就可以看到用户的 uidgid,这里我们通过 gid,也就是组 id 就可以知道 test 用户是在 test 组中的。

下面我们再看如何在创建用户时为它指定所属组,也就是将用户划分到哪个组中,其实只需要先创建一个组,然后在创建用户的时候指定所属组就好了,这样就能达到我们想要的效果了。

groupadd public
useradd test -g public

通过上面的命令,我们就能在创建用户时指定用户所属组了,在执行完之后也是可以通过 id 命令来查看用户所属的组的,接着再看一下如何管理组呢?上面我们已经知道了如何添加一个组,那应该如何删除一个组呢?其实也是很简单的:

groupdel public

这样的话就能将 public 这个组删除掉了,需要注意的一点是,在删除某个组时,如果某个组中还有用户成员的话,那么就应该先将用户删完,然后再删除组。

下面我们再看一个命令,那就是 su 命令,上面我们已经知道这个命令是用来切换用户登录的,使用方式为:

su test

然后系统就会提示我们输入密码,当输入正确的密码之后,系统就会切换到 test 用户了,这里需要注意的一点是,当我们在 /home 目录执行命令进行用户切换时,切换到了之后我们就还是在 /hmoe 目录,也就是说当我们在哪个目录执行命令进行用户切换,那切换完成之后也会在哪个目录当中,而这里如果我们加入一个参数的话,也就是 - 的话,就会有另外的效果:

su - test

不管我们在哪里执行命令进行用户切换时,切换完成之后都会自动跳转到用户所对应的用户目录当中,比如上面的 test 用户,当用户切换成功之后,目录就会切换到 /home/test 目录了,那如果是 root 用户呢?也是切换到对应用户的用户目录当中,也就是 /root 目录下了。

最后我们再介绍一下账户文件,其实账户文件一共有三种,名称以及它们对应的目录为:

/etc/passwd:用户文件
/etc/shadow:密码文件
/etc/group:组信息文件

其实我们可以打开这三个文件进行查看的,使用 cat 命令就行,文件中的数据每一行表示一个信息,而且数据都是使用冒号 : 分割,下面我们就具体来看一下这三种文件中的每一行数据都是由什么组成的。

用户文件:

root:x:0:0:root:/root:/bin/bash
账号名称:在系统中是唯一的
用户密码:此字段存放加密口令
用户标识码(User ID):系统内部用它来标示用户
组标识码(Group ID):系统内部用它来标识用户属性
用户相关信息:例如用户全名等
用户目录:用户登录系统后所进入的目录
用户环境:用户工作的环境

密码文件:

shadow文件中每条记录用冒号间隔的9个字段组成.
用户名:用户登录到系统时使用的名字,而且是惟一的
口令:存放加密的口令
最后一次修改时间:标识从某一时刻起到用户最后一次修改时间
最大时间间隔:口令保持有效的最大天数,即多少天后必须修改口令
最小时间间隔:再次修改口令之间的最小天数
警告时间:从系统开始警告到口令正式失效的天数
不活动时间:口令过期少天后,该账号被禁用
失效时间:指示口令失效的绝对天数(从1970年1月1日开始计算)
标志:未使用

组信息文件:

root:x:0:
组名:用户所属组
组口令:一般不用
GID:组ID
用户列表:属于该组的所有用户

上面的这三种账户文件只要了解一下就好,因为我们平时开发过程中,操作用户或者组时通常都是使用的命令进行操作的,因此这些账户文件了解一下就行。

3.14 文件权限管理

Linux 系统中,每一个文件和目录都有它所具有的权限,根据所具有的权限,我们就能知道该文件和目录是否能够被我们查看、修改或者运行,当我们使用 ll 命令查看某个目录下所有的文件和目录时,就能看到所有文件和目录的详细详细,在这些信息中,第一列数据便是权限信息了,举个简单的权限信息例子:

-rwxrwxrwx

这个便是一个普通文件所具有的的权限信息了,下面我们具体来看上面的符号都代表的是什么意思,先看这里的第 1 个字符,是一个 - 符号,那这个是代表什么意思呢?其实就是表示是一个普通文件,那这第 1 个位置有哪些符号可以选择呢?并且它们所代表的意思又都是什么呢?

-:普通文件
d:目录
l:符号链接
c:字符设备文件
b:块设备文件
s:套接字
p:命名管道

其实我们在这里只需要记住前面 3 种就好了,也就是普通文件、目录和符号链接,因为在平时的开发中最常见到的也就是这三类。

普通文件:文本文件、数据文件和可执行的二进制程序文件等
目录:在Linux系统中,目录会被看成为一种特殊的文件
符号链接:类似于Windows系统下的快捷方式
设备文件:Linux系统中将每一个设备看做一个文件

介绍完了权限信息中的第 1 个字符以后,我们再来看后面的 9 个字符分别代表的是什么意思,其实后面的 9 个字符应该分为 3 组,每组 3 个字符,第一组表示的是当前用户对该文件或目录所具有的权限,第二组表示的是同一个组中的用户对该文件或目录所具有的权限,最后第三组则是表示其它用户对该文件或目录所具有的权限,而且这三组数据所表示权限的方式是完全一样的,这样的话,只要我们弄懂了一组中字符所代表的权限信息,那其余的两组权限信息我们也就懂了,那我们就直接看第一组数据所表示的权限信息吧。

根据上面的例子,第一组数据应该是 rwxr 表示的是该文件可读,w 表示的是该文件可写,x 表示的则是该文件可以执行,因此这三个位置的符号分别代表了一种权限,那如果没有某种权限呢?应该如何表示呢?其实就是在对应的位置使用 - 符号来表示了,比如某个文件可写并且可以执行,但是不能被读,那它的权限应该就是 -wx 了,其它的两个位置也是类似的道理了。

需要说明一下的是,上面所说的三个权限,可读、可写以及可执行,它们对于文件和目录来说代表的意思可能是有点不一样的。

r:可读权限。对文件来说是可以读取其中的内容,对目录来说则是可以执行ls命令进行查看
w:可写权限。对文件来说是可以修改其中的文件内容,对目录来说是可以在其中新建和删除子节点(文件和子目录)
x:可执行权限。对文件来说是可以运行这个文件,对目录来说则是可以使用cd命令进入该目录

还有一点需要注意的是,对于 3 种权限,是可以使用数字来进行表示的,比如对于可读权限,可以使用 4 这个数字来进行表示,对于可写权限来说,则可以使用 2 这个数字来进行表示,而对于可执行权限来说的话,则可以使用 1 来进行表示了,感觉这个确实设计的蛮巧妙的,因为它是根据数字的二进制表示来的,4 的二进制表示为 100,其中 1 的位置和 r 的位置刚好是相对应的,而且 1 也可以理解为拥有权限,而 0 则是表示不拥有权限,可写权限使用 2 来表示也是一样了,2 的二进制表示为 010,其中的 1 也是和 w 的位置相对应,最后可执行权限使用 1 来进行表示,1 的二进制表示为 001,其中的 1 也是和 x 所处的位置相对应,这样来看的话,确实设计的简单好记,后面我们修改文件或目录的权限信息时也可以使用数字来进行修改,其中的原理也就是上面所说的了。

下面我们便来看如何修改文件或目录的权限信息,上面的一段也说了,我们是可以根据数字来修改文件的权限的,修改权限使用的命令就是 chmod 命令了,比如我们想要给某个文件所属用户、同组用户和其它用户都都赋上可读、可写以及可执行权限,那我们就可以使用以下命令:

chmod 777 a.txt

因为数字 7 的二进制表示就是 111,所以对应到一组权限信息的话就是三种权限都是拥有的,三个数字 7 的话,则就是表明对于三组用户都是具有三种权限的,除了使用数字这种方式之外,我们还可以分组去指定权限,文件所属用户组是使用的 u 来表示的,同组用户则是使用的 g 表示的,其它用户则是使用 o 来进行表示的,因此我们可以使用如下方式来进行权限修改:

chmod u=rwx,g=rwx,o=rwx a.txt

上面命令的意思就是对于 a.txt 文件,对于三组用户为它们赋上所有的权限,其实除了这种赋上全部权限以外,我们还可以根据用户组再增减权限:

chmod u-x,g+r a.txt

这样操作我们也是可以达到修改权限的目的的,其实 chmod 命令修改权限信息真的是蛮灵活的,比如还可以下面这些操作:

chmod u=x,g=r a.txt
chmod 000 a.txt
chmod -R 777 laucloud

上面的第 1 个命令是让 a.txt 文件对于所属用户来说,只有可执行权限,对于同组用户来说只有可读权限;第 2 个命令则是对于三组用户来说都完全去掉对 a.txt 文件的操作权限;第 3 个命令则是相当于递归赋予权限,当 laucloud 是一个目录时,使用上面的命令,不仅会为 laucloud 目录赋予所有的权限,而且会为 laucloud 目录里面的所有文件和子目录赋予相同的权限,经过上面的介绍,应该可以很容易看出,修改文件和目录的权限还是非常简单的。

最后我们再介绍一个命令,用于改变文件或目录的所属用户和组,用到的命令就是 chown 了,具体使用方式为:

chown 用户名:所属组 所要操作的文件或目录

使用上面这个命令就可以完成对文件或者目录所属用户和所属组的修改了,为了看得更清晰,可以将上面命令中的文字换成具体的对象,如:

chown test:public a.txt

上面这条命令的意思就是将文件 a.txt 的所属用户修改为 test,所属组修改为 public,和修改权限信息的 chmod 命令一样的,如果上面这条命令是作用的目录的话,那么上面的命令只会修改当前目录的所属用户和所属组,而不会修改目录中文件和子目录的所属用户和所属组,那为了能够实现递归修改的效果,也是需要加一个 -R 参数就好了。

chown -R test:public laucloud

上面的这条命令则是不仅修改 laucloud 目录的所属用户和所属组,而且也会修改该目录当中文件和子目录的所属用户和所属组,因此我们可以根据自己想要的效果来选择执行不同的命令。

3.15 登录ftp和sftp服务器

在我们平时的开发过程中,有时候是需要将数据传到别人的服务器上面的,比如将我们服务器上面生成的一个文件上传到别人的服务器上,这时候就要看对方服务器开通的服务是 ftp 还是 sftp 的,然后我们根据不同的方式去登录别人的服务器,然后进行上传文件操作,这里的登录方式也就是 ftpsftp 这两种了,如果对方服务器开通的是 ftp 服务,那我们就使用 ftp 方式登录,当然 sftp 方式也是同样的道理了,下面我们具体来看两种方式应该如何登录:

ftp方式:ftp ip地址 端口号
sftp方式:sftp 用户名@ip地址

使用上面的命令,在使用 ftp 方式进行登录时,系统就会提示我们输入用户名和密码,输入正确的用户名和密码,我们就能登录成功了,而使用 sftp 方式登录的话,则系统会提示我们输入密码,输入密码之后就能登录系统了。

4.常用网络操作

下面我们再来看在 Linux 系统中的一些常用网络操作,主要就是主机名设置,IP 地址配置,域名映射以及网络服务管理,掌握了这些可以使我们对 Linux 中的网络设置有更加清晰的了解,以后有需要时也能轻松地进行修改,因此掌握还是十分有用的。

4.1 主机名配置

我们这里就来看如何获取得到主机名以及如何修改主机名,其实获取和修改主机名我们都可以使用 hostname 这个命令,具体使用如下:

hostname:获取当前系统的主机名
hostname laucloud:将当前系统的主机名修改为laucloud

但是需要注意的是,使用 hostname 修改主机名这种方式只是暂时的修改,也就是只是在内存中做了修改,如果重启系统的话,修改就会失效了,而如果想要永久性地修改主机名的话,我们可以采用修改配置文件的方式,也就是修改下面这个文件:

/etc/sysconfig/network

打开这个文件可以看到里面有一行主机名配置的数据,如 hostname=laucloud,所以我们只需要修改这里键值对中的值,就能永久地修改主机名。

4.2 IP地址配置

下面我们再看如何获取和修改 IP 地址,同样的,我们也可以使用一个命令来办到,那就是 ifconfig 命令,具体的使用如下:

ifconfig:获取ip地址
ifconfig 设备名称 ip地址:设置ip地址

2 条命令也就是用来设置 IP 地址的了,通常的设备名称都为 eth0,因此我们修改 IP 地址的命令可以为:

ifconfig eth0 ip地址

不过这种修改只是暂时的,也就是只在内存当中做了修改,如果我们重启系统的话,那么修改就会失效了,下面我们就来介绍如何永久性地修改 IP 地址,Linux 系统中一共提供了两种方式,一种是通过界面的方式,另一种则是直接修改配置文件的方式,下面我们先看使用界面修改的方式。

想要通过界面的方式来修改 IP 地址,其实只需要使用一个命令就好了,那就是 setup,此时就会出现一个界面,界面中有一个 网络配置 的选项,选择它,然后再进入一个界面,会有一个 设备配置 的选项,再选择它,然后就会看到一个 eth0 的设备了,同样的也是选择它,这时候我们就能看到真正的修改界面了,这时候会看到界面中有很多项目,有一个是 使用DHCP,意思就是是否是自动分配 IP 地址,界面中默认的值是 [*],我们将这个值中的第一个符号,也就是 [ 使用空格替换掉,然后我们就可以修改界面中下面的一些配置了,其实也就是可以设置静态 IP 地址了,需要设置的项为:静态 IP,子网掩码,默认网关 IP 以及主 DNS 服务器了,下面是一个示例的修改:

静态IP:192.168.19.100
子网掩码:255.255.255.0
默认网关IP:192.168.19.1
主DNS服务器:192.168.19.1

这时候做好修改之后我们就可以选择确认按钮进行保存了,保存好了之后系统界面就会自动退出到显示设备的界面了,这时候也应该选择保存,如果发现光标移动不到下面的话,可以按一下 Tab 键,就可以进行保存了,同样的,后面界面弹出的界面我们也应该依次进行保存操作,这样我们就修改好 IP 地址了,如果我们这时候使用 ifconfig 命令查看 IP 地址的话,可能还并没有修改,那这时候我们可以重启一下网络服务,也就是下面这个命令了。

service network restart

我们再介绍最后一种修改 IP 地址的方式,也就是修改配置文件的方式了,相应的配置文件为:

/etc/sysconfig/network-scripts/ifcfg-eth0

我们这时候就可以进入该文件对该文件进行修改了,修改完之后进行保存操作就好了,当然了,最好也是要重启一下网络服务的。

4.3 域名映射

我们再来看一下关于域名映射的内容,其实我们在平时上网浏览网页时,也会经常使用域名访问网站,比如百度网站,其实在服务器端,接受到我们请求的服务器也是需要将域名转换为 IP 地址,然后再去获取相关请求资源的,为什么要这样呢?为什么不让用户直接使用 IP 地址访问呢?这是因为 IP 地址不容易记忆,而域名便于记忆,其实不管是在 Windows 系统还是在 Linux 系统,我们都是可以进行域名映射的配置的,这里我们就介绍在 Linux 系统中应该如何进行设置了,其实非常简单,只需要下面这个配置文件就好了。

/etc/hosts

我们可以直接打开该文件,并进行编辑,可以直接为我们本地 IP 地址添加一个域名,这里我们就直接在这个配置文件的后面进行添加了,比如:

192.168.19.100 laucloud

这样就添加好了,然后如果我们执行 ping laucloud 命令的话,就相当于是在连接我们自身主机了,很显然是可以连接到的。

4.4 网络服务管理

下面我们再看对于系统中服务的管理,当然还是使用命令来进行管理了,下面我们就以网络服务为例,来看看应该如何使用命令来对网络服务进行管理。

service network status:查看网络服务的状态
service network stop:停止网络服务
service network start:启动网络服务
service network restart:重启网络服务

上面这些便是我们可能会使用到的对网络服务进行管理的命令了,还有下面这两个命令我们可能也会用到:

service --status–all:查看系统中所有后台服务
netstat –nltp:查看系统中网络进程的端口监听情况

最后我们看一下 Linux 系统中关于防火墙的设置,防火墙的存在主要是为了我们系统的安全,所以它会根据设置来限制用户对系统的请求,防火墙的配置文件就是:

/etc/sysconfig/iptables

有时候我们在 Linux 系统中安装了软件之后,我们远程却无法进行访问,这时候就有可能是因为了防火墙限制了软件所需要使用的端口号,我们就可以先暂时关闭防火墙,然后测试一下是否是因为这个原因,不过在生产中一般都只会开放对端口号的访问,而不会完全关闭防火墙。下面是关于防火墙的一些常用命令,大家可以了解一下:

service iptables status:查看防火墙状态
service iptables stop:关闭防火墙
service iptables start:启动防火墙
chkconfig iptables off:禁止防火墙自启

5.Linux中安装软件

下面我们来看如何在 Linux 系统中安装一些软件,比如 JDKMySQL 这样的软件,因为我们将开发的项目部署到 Linux 服务器当中后,同样也是需要安装这些软件的,所以掌握安装的步骤还是很有用的。

5.1 安装方式和上传下载工具

我们先看一下在 Linux 系统中安装软件的话有哪几种方式,并对每种方式进行一下简单的说明,然后就是介绍一下上传和下载工具,因为有时候我们下载的软件是在 Windows 系统当中的,所以需要将软件从 Windows 系统中传到 Linux 系统中,因此上传下载工具是必不可少的。

首先看一下在 Linux 系统中安装软件有哪几种方式,其实一共是有 4 种方式的,下面我们分别来看:

1.二进制发布包
软件已经针对具体平台编译打包发布,只需要解压,修改配置文件就可以使用了
2.RPM包
软件已经按照redhat的包管理工具规范RPM进行打包发布,需要获取到相应的软件RPM发布包,然后用RPM命令进行安装,但是使用这种方式并不会安装软件所需要的依赖包
3.Yum在线安装
软件已经以RPM规范打包,但发布在了网络上的一些服务器上,可用yum在线安装服务器上的rpm软件,并且会自动解决软件安装过程中的库依赖问题
4.源码编译安装
软件以源码工程的形式发布,需要获取到源码工程后用相应开发工具进行编译打包部署

上面便是对在 Linux 系统中安装软件方式的简单说明,下面我们再看有哪些使用的上传下载工具,主要是有两个,分别为:

1.FileZilla
2.lrzsz

先说 FileZilla 这个工具,它是专门用来在 Windows 系统和 Linux 系统之间互传文件的工具了,只需要在工具界面中输入主机 IP,用户名,密码和端口号这些信息,就可以连接到远程的 Linux 主机了,连接到主机之后我们就可以在工具中上传或下载文件了,工具的界面中左边是 Windows 系统下的目录,而右边则是 Linux 系统下的目录,因此当我们在上传或者下载文件时,只需要选择好相应的文件与目录便可以进行操作了,可以说是非常简单了。

第二个工具便是 lrzsz 了,不过它不是一个独立的软件,而是 SecureCRT 软件中安装的一个工具,SecureCRT 主要是用来连接远程 Linux 系统主机的,在其中借助于 lrzsz 这个小工具,我们也是可以完成 Windows 系统与 Linux 系统之间互传文件的,首先来看如何安装这个工具。

yum install lrzsz:安装lrzsz
yum remove lrzsz:卸载lrzsz

这样的话,通过上面的命令,我们就可以安装 lrzsz 工具了,卸载的命令了解一下就好了,因为这个工具很好用,大概你是不会想要卸载的,当安装好之后,我们便可以使用 rz 命令进行上传,而 sz 文件名 进行下载了,使用 rz 命令进行上传时需要注意的一点是,当我们执行 rz 命令之后,会弹出一个界面,让我们选择 Windows 中的哪个文件进行上传,选择好之后进入下面的选择框之后,就可以确认进行上传了,需要注意的一点是,千万不要选择界面中的 以ASCII方式上传文件 选项。

5.2 安装JDK

我们现在来看如何在 Linux 系统中安装 Java 的开发以及运行环境 JDK,其实安装的步骤是非常简单的,首先我们需要先检查一下 Linux 系统中有没有安装别的 JDK,这是因为 Linux 系统中可能会有自带的 open-JDK,如果是这样的话,我们就需要先卸载掉 open-JDK,下面就开始介绍如何卸载 open-JDK,首先是查询当前系统中已经安装的 JDK,可以使用如下命令:

rpm -qa | grep java

这个命令便能查出来当前系统中已经安装的 JDK 了,可能会安装了以下这个 JDK:

java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.i686

那这时候我们就需要将上面这个 open-JDK 先卸载掉,卸载的命令为:

rpm -e --nodeps java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.i686

这时候我们就成功将之前安装的 open-JDK 卸载了,其实最开始判断当前系统中是否安装了 JDK,还可以使用 Java 的一个命令,那就是 java –version,即查看所安装的 JDK 版本的命令,如果有版本信息的话,那也就说明是有 JDK 安装的,没有版本信息的话则是没有安装的。

接下来我们来看如何进行安装 JDK,首先我们需要将下载到本地的安装包上传到 Linux 系统中,我们在 Linux 系统中安装软件一般都会安装在 /usr/local 目录,因此我们也就把安装包上传到该目录,如果是使用 SecureCRT 根据进行上传的话,那我们就先进入到上面的目录,然后输入 rz 命令,在弹出的界面中选择相应的安装包上传就好了,上传完成后,我们需要对压缩包进行解压操作,可以直接在当前目录创建一个 jdk 目录,然后将压缩包解压在其中,命令为:

tar –xvf jdk.tar.gz -C ./jdk

解压完成后,我们就只需要在配置文件中配置一下 JDK 的环境变量就好了,假设上面安装的 JDK 版本为 jdk1.7.0_71,那么在上面进行解压操作时,应该也会在 jdk 目录中新建一个 jdk1.7.0_71 的目录,这样的话,这个 JDK 的安装目录就是 /usr/local/jdk/jdk1.7.0_71 了,下面我们开始配置环境变量,其实就是 /etc/profile 这个文件了,只需要在这个文件的末尾加上下面这些配置就好了。

#set java environment
JAVA_HOME=/usr/local/jdk/jdk1.7.0_71
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

保存好文件之后,然后再使用 source /etc/profile 命令使刚才修改的配置文件立即生效,这样的话,我们的 JDK 就配置好了,可以使用查看 Java 版本的命令测试一下的。

5.3 安装MySQL

现在我们来看如何在 Linux 系统中安装数据库 MySQL,和之前安装 JDK 类似的,我们要先看一下系统中是否已经安装了别的 MySQL,如果有的话,我们要先进行卸载操作,首先我们还是使用下面的命令查看有没有安装 MySQL 数据库:

rpm -qa | grep mysql

使用这个命令的话,我们就能查出来当前系统中安装的 MySQL 数据库了,可能会安装了以下这个 MySQL 数据库:

mysql-libs-5.1.73-5.el6_6.i686

这时候我们就需要先将上面这个数据库卸载掉了,使用的命令为:

rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.i686

卸载完之前已经安装的 MySQL 数据库之后,我们下面就可以开始安装自己的 MySQL 数据库了,首先还是先上传安装包,因为 Linux 中安装软件一般都是在 /usr/local 目录,所以我们还是将 MySQL 数据库的安装包上传到该目录,上传好了之后,可以在该目录中新建一个 mysql 的目录,然后将数据库 MySQL 的安装包解压到 mysql 目录中,解压命令为:

tar –xvf MySQL-5.6.22-1.el6.i686.rpm-bundle.tar -C ./mysql

解压好安装包之后,我们就可以进行安装操作了,MySQL 的安装需要安装两部分,那就是服务端和客户端,先看服务端,在上面解压的 mysql 目录中,会有一个 MySQL-serverrpm 包,我们就需要安装这个包了,名称可能为:

MySQL-server-5.6.22-1.el6.i686.rpm

这样的话,我们就可以执行下面的命令进行服务端的安装操作了。

rpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm

执行该命令就可以进行服务端的安装操作了,这里需要注意的是,有可能因为环境不一样,有时候会缺乏相关的依赖包,导致安装服务端时报错,所以我们需要先安装相应的依赖包,如下:

yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6

进行安装依赖包操作时可能会报 libstdc++-4.4.7-4.el6.x86_64 的版本太低了,因此我们需要先升级一下版本,操作命令为:

yum update libstdc++-4.4.7-4.el6.x86_64

这样的话,安装所需要的依赖包也安装好了,就可以再执行一次上面的安装服务端操作了,安装成功时会提示我们已经生成了一个随机的密码供我们第一次登录 MySQL 数据库时使用,并且是保存在 /root/.mysql_secret 中,当然该密码是针对于 root 用户的,所以我们第一次登录 MySQL 数据库时也是需要修改密码的,不过想要登录 MySQL 的话,还需要安装 MySQL 数据库的客户端,其实在之前的 mysql 解压目录中,也是有一个 MySQL 的客户端 rpm 包的,名称可能为:

MySQL-client-5.6.22-1.el6.i686.rpm

同样的,也是和安装服务端一样的操作,我们也可以使用下面的命令来安装客户端:

rpm -ivh MySQL-client-5.6.22-1.el6.i686.rpm

这样的话,我们的 MySQL 数据库的服务端和客户端就都已经安装好了,下面我们就可以使用安装的数据库了,那怎样才能使用呢?当然是要先把 MySQL 数据库的服务启动了,所以我们就可以执行下面这个命令启动服务了:

service mysql start

服务启动之后,为了验证我们的数据库是否成功启动,我们可以采用查看端口号的方式来验证,也就是:

netstat -nltp

这时候我们就可以看到 3306 端口已经被占用了,而我们知道 3306 其实是 MySQL 数据库默认使用的端口号,因此是可以证实 MySQL 数据库已经启动了。

数据库启动了之后,我们便可以使用登录命令登录 MySQL 数据了,执行如下命令:

mysql -u 用户名 -p密码

当然了,这里的密码就是上面数据库为我们随机生成的密码了,登录进去之后我们就可以执行操作数据库的命令了,比如 show databases 查看数据库的操作,但是这时候 MySQL 会给出提示,就是在执行任何操作之前必须要先修改 root 的密码,确实,因为之前的登录密码还是数据库为我们随机生成的,因此我们就可以使用下面的命令来设置 root 用户的密码了。

set password=password('123456')

这样的话我们 root 用户的密码就会修改为 123456 了,下面我们执行操作数据库的命令就都是可以的了。

通过上面的操作我们就能正常使用 Linux 系统中的 MySQL 数据库了,下面还有一些细节需要说明一下,为了每次我们想要使用 MySQL 数据库时都不用手动进行启动操作,我们可以将 MySQL 的服务加入到系统服务中并设置成自动启动的,需要使用的命令如下:

chkconfig --add mysql:加入系统服务
chkconfig mysql on:设置为自动启动

这样的话我们便设置好了,当然我们也可以使用 chkconfig 命令进行查询系统服务列表的操作的。

还需要说明的一点是,我们的 MySQL 数据库是安装在 Linux 系统当中的,我们在平时开发时则是在 Windows 系统环境下面使用数据库,这时候便需要使用 Navicat 这样的工具来连接 Linux 系统中安装的 MySQL 数据库了,但是一般是不能连接的,因为我们还未在 MySQL 数据库中设置允许远程访问,如果要设置的话,则需要登录 MySQL 数据库之后执行如下命令:

grant all privileges on *.* to 'root' @'%' identified by '123456';
flush privileges;

这样设置的话,MySQL 便允许我们进行远程访问了,最后还需要注意的一点就是,防火墙可能会限制我们对 3306 端口的访问,因此我们还需要放开防火墙对 3306 端口的限制,操作如下:

/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables status

这样的话,我们在 Windows 系统也就可以使用 Navicat 工具对 Linux 系统中的 MySQL 数据库进行访问了,其实最后关于防火墙的设置,如果是自己机器上面使用的话,是可以直接关掉防火墙的。

5.4 安装Tomcat

下面我们来看如何在 Linux 系统中安装 Tomcat 服务器,同样的我们还是需要先将 Tomcat 安装包上传到 /usr/local 目录中,假设安装包名称为 apache-tomcat-7.0.57.tar.gz,我们先在当前目录下新建一个 tomcat 目录,然后将安装包解压到该目录中:

tar –xvf apache-tomcat-7.0.57.tar.gz -C ./tomcat

解压好了之后,我们在 tomcat 目录下看到一个 apache-tomcat-7.0.57 目录,里面便是 Tomcat 服务器的文件了,其实 Linux 系统下的 Tomcat 使用起来和 Windows 下的是一样的,都是进入到 bin 目录,然后执行启动命令,稍微不同的一点在于 Linux 系统下的命令是以 .sh 结尾的,而 Windows 系统下的是以 .bat 结尾的,所以要启动 Tomcat 服务器的话,我们直接执行 ./startup.sh 命令就好了,这样就启动好了,当然关于 Tomcat 操作的命令其实都是在 bin 目录下面的,如果想要查看日志的话,是可以进入 bin 的同级目录 logs 目录进行查看的,如其中的 catalina.out 文件。

启动好了之后,我们便可以在浏览器中输入 http://ip:8080 这样的方式进行访问了,我们知道 Tomcat 服务器默认的端口号为 8080,因此就可以使用上面的网址进行访问了,不过在 Windows 系统中进行访问时,需要注意的就是,防火墙对 8080 端口是没有进行限制的,否则则需要进行放开限制操作,或者直接关闭防火墙。

6.总结

关于 Linux 系统的知识就先总结到这里了,其实关于 Linux 的知识还有很多很多,这里写的只是目前我所了解到的,以后当然还会学习更多的知识,后面再做加强补充,在实际开发过程中,Linux 的知识还是十分有用的,特别是在生产环境中,熟悉 Linux 的操作能够快速地定位问题,所以掌握 Linux 系统的使用还是非常必要的,应该一边学习一边实践的,这样才能理解地深入。

坚持原创技术分享,您的支持将鼓励我继续创作!