linux基础

 

 

1.1为什么学习linux

linux是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界的认可,目前很多中型,大型甚至是巨型项目都在使用linux

linux内核:redhat 、红旗linux、ubuntu、suse、fedora,它们的内核都是一样的(Note:linux其实是一个统称,就比如面条是一个统称,可以有哨子面、阳春面、打卤面等)

 

-         linux系统管理员

-           linux系统的维护、配置等

-         linux程序员

-           需c/c++、java,php、jsp…

-           linux软件工程师(PC)

-           linux嵌入式开发(单片机、芯片)

1.3如何学习linux

第一阶段:linux平台上的开发,包括vi,gcc,gdb,make,jdk,tomcat,mysql..和linux基本操作

第二阶段:加厚c语言功底《c专家编程》或是java语言

第三阶段:学习unix环境高级编程《unix环境高级编程》

第四阶段:linux应用系统开发/linux嵌入式开发

1.4内容讲解

基础部分

-         linux基础知识

-         linux常用命令80个

-         linux分区/vi/权限…

实用部分

-         Samba安装与配置

-         linux网络环境配置

-         crontab使用

-         jdk/apache/mysql/ssh/rpm安装与配置

-         linux下java网络编程

-         shell初步介绍

1.5推荐书籍

-         《鸟哥的Linux的私房菜基础学习篇》 鸟哥、许伟、林彩娥等编著

-         《Linux编程从入门到精通》宫虎波编著

-         《Linux内核完全剖析》赵炯编著

 基础介绍

 

linux的特点

-         免费的/开源

-         支持多线程/多用户

-         安全性好

-         对内存和文件管理优越

 

linux的缺点

-         操作相对困难

 

linux的历史

-         1960时期左右,MIT,即麻省理工学院有一台电脑,使用分时操作系统,只能同时允许30个人通过终端登录

-         1965年,MIT、GE、Bell实验室,决定将30è300个人分时系统,multis计划,即火星计划

-         1969年,火星计划失败。但Bell的Ken Thompson开发了一个file server system文件系统,在Bell实验室很受欢迎

-         在Dennis Ritchie的加入下,1973年,unix诞生,开源,源码内核共享

-           IBM:AIX

-           Sun:Solaris

-           HP: HP unix

-           伯克利分校:BSD

-         minix系统出现

-         Linus Torvalds,芬兰读书,拥有PC 386,1991年计划把minix移植到pc上,1994发布linux 1.0版  linux is not unix,完全没有桌面

-           redhat红帽子

-           s.u.s.e

-           红旗linux

2.2 linux的第一次接触

关机命令

shutdown‑h now 立即进行关机

shutdown‑r now 现在重新启动计算机

-t sec : -t后面加秒数,即”过几秒后关机”

-k      : 不是要真的关机,只是发送警告信息

-r      : 在将系统的服务停掉之后就重新启动

-h      : 将系统服务停掉后,立即关机

-n      : 不经过init程序,直接以shutdown关机

-f       : 关机并启动之后,强制略过fsck的磁盘检查

-F      : 系统重新启动之后,强制进行fsck的磁盘检查

-c      : 取消已经在进行的shutdown命令内容




reboot现在重新启动计算机

 

进入桌面

startx

 

用户登录

登录时尽量少用root账户登录,因为它是系统管理员,最大的权限,难免操作失误。可以利用普通用户登录,登录后再用“su -”命令来切换成系统管理员身份

 

用户注销

在提示符下输入logout即可

  vi编辑器的使用

3.1什么是vi编辑器

vi编辑器是linux下最有名的编辑器,也是我们学习linux必须掌握的工具,在linux下也可使用vi进行程序的开发,如java程序,c程序

3.2如何使用vi进行开发?

在linux下使用vi开发一个简单的java程序Hello.java,并且在linux下运行成功

-         开发步骤

-           java程序

-           vi Hello.java

-           输入i,进入到插入模式

-           输入Esc键,进入命令模式

-           输入冒号:[wq 表示退出保存,q!表示退出不保存]

-           编译javac Hello.java

-           运行java Hello

-           c程序

-           gcc o Hello Hello.cpp[参数o表示可自定义生成的out文件名,否则默认为a. out]

-           ./Hello

 用户管理.目录结构

4.1概述

简单介绍

linux的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录

深刻理解linux文件目录是非常重要的

-         /

-           root,存放root用户的相关文件

-           home,存放普通用户的相关文件

-           bin,存放常用命令的目录,如vi,su

-           sbin,要具有一定权限才可以使用命令

-           mnt,默认挂载光驱和软驱的目录

-           etc,存放配置的相关文件

-           var,存放经常变化的文件,如网络连接的sock文件

-           boot,存放引导系统启动的相关文件

-           usr,安装一个软件的默认目录,相当于windows下的program files

相对路径与绝对路径:

-         只要开头不是/就是属于相对路径的写法.

-         绝对路径为:由根目录/,起的文件名或目录名称.如:/home/dmtsai/.bashrc

常用命令介绍

-         pwd,显示当前在哪个路径下

linux的用户管理

-         useradd 用户名,添加用户

【案例】useradd xiaoming

-         passwd 用户名,为新用户设密码

【案例】passwd xiaoming,修改小明的密码

-         userdel 用户名,删除用户

【案例】userdel xiaoming,删除用户但保存用户主目录

【案例】userdel ‐r xiaoming,删除用户以及用户主目录

-         logout,当前用户推出

-         who am i,当前用户是谁

4.2目录、文件默认属性: 的umask使用

一 权限掩码umask

umask是chmod配套的,总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常用到的是后3个,例如你用chmod 755 file(此时这文件的权限是属主读(4)+写(2)+执行(1),同组的和其它用户有读写权限)

二 umask的作用

默认情况下的umask值是022(可以用umask命令查看),此时你建立的文件默认权限是644(6-0,6-2,6-2),建立的目录的默认 权限是755(7-0,7-2,7-2),可以用ls -l验证一下哦 现在应该知道umask的用途了吧,它是为了控制默认权限,不要使默认的文件和目录具有全权而设的

三 修改umask值

知道了umask的作用后,你可以修改umask的值了,例如:umask 024则以后建立的文件和目录的默认权限就为642,753了

四 将umask值保存到环境文件

若要长期修改umask的值,可以把它写进/etc/profile或~/.profile或~/.bash_profile中,大家应该知道这几个文件是干什么用的吧。

 

您知道当你建立一个新的档案或目录时,他的预设属性会是什么吗?呵呵!那就与 umask 有关了!那么 umask 是在搞什么呢?基本上, umask 就是指定『目前使用者在建立档案或目录时候的属性默认值』,那么如何得知或设定 umask 呢?他的指定条件以底下的方式来指定:语法:

[root @testroot]# umask
0022
[root@vbird test]# umask 002 <==后面接 3 个数字!
[root@vbird test]# umask
0002

说明:查看 umask 数值为直接输入 umask 即可,而设定呢?没错!就是 umask 之后接三个数字!那么如何来指定呢?主要还是跟 Linux 的档案属性(那九个属性, r, w, x )有关的,而且是以分数的那一个关系为例的,而有底下的规则为辅:

若使用者建立为『档案』则预设『没有可执行 ( x ) 项目』,亦即只有 rw 这两个项目,也就是最大为 666 分

–rw-rw-rw-

若使用者建立为『目录』,则由于 x 与是否可以进入此目录有关,因此预设为所有权限均开放,亦即为 777 分

drwxrwxrwx

 

 常用命令

5.1 linux的常用命令

-         init [0123456],指定系统运行级别,类似windows的正常运行模式或安全模式

-         0:关机

-         1:单用户

-         2:多用户状态没有网络服务

-         3:多用户状态有网络服务

-         4:系统未使用保留给用户

-         5:图形界面

-         6:系统重启

常用运行级别是3和5,要修改默认的运行级别可改文件/etc/inittab的id:5:initdefault:这一行中的数字

FAQ:不小心设置了6,导致系统启动-重启-启动循环,怎么办?

-         在进入grub引导界面时,在数秒的时候,请输入 e

-         然后选中第二行,输入e

-         在出现的界面里,输入1【1表示单用户级别】,1的前面需要加一个空格,单用户模式既可以修改模式,又可以修改密码,Enter

-         返回后,按b

-         pwd,显示当前工作目录(print working directory)

-           pwd -p 显示出实际路径,而非使用link路径.

-         cd,改变目录

          

-         ls,列出文件和目录

-           ls a,显示目录下的所有文件,包括隐藏文件

-           ls l,显示长列表格式




-         mkdir,建立目录(make directory)

-           -m :设置文件的权限,直接设置,不要管默认权限.如:mkdir –m 711 test2

-           -p :帮助你完成直接建立所需要的目录递归.(建立多级目录,如:test1/test2/test3/test4)

-         rmdir,删除空目录(注:只能删除目录,删除目录下所有文件可用:rm –rf test)

-         touch,建立空文件与修改文件时间

-           mtime (modification time) : 当该文件的”文件的内容”更改时,就会更新这个时间。

-           ctime (status time) : 当文件的”状态”改变时,就会更新这个时间,如:更改权限与属性时。

-           atime (access time) : 当”读取文件内容”时,就会更新这个读取时间.

-           例ls -l/etc/man.config 默认是显示mtime 修改时间

-           ls -l --time=atime/etc/man.config 显示访问时间

-           ls -l --time=ctime/etc/man.config 显示状态时间

-           touch [-acdmt] 文件名

-           -a: 仅修改access time

-           -c: 仅修改时间,而不建立文件

-           -d: 后面可以接日期,也可以使用 --date=”日期或时间”

-           -m: 仅修改mtime

-           -t: 后面可以接时间,格式为 [YYMMDDhhmm]

-         cp,复制命令

-           -a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目

  录,其作用等于-pdr选项的组合。

-           -d 若源文件为连接文件的性情(link file),拷贝时保留链接而不是所指向的文件。

-           -f 删除已经存在的目标文件而不提示。

-           -i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目

  标文件将被覆盖,是交互式拷贝。

-           -p 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新

文件中。

-           -r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录

和文件。此时目标文件必须为一个目录名。

-           -l 不作拷贝,只是链接文件。

-           -s 复制成符号连接文件(symbolic link),即”快捷方式”文件.

-           -u 若目标文件比源文件旧,更新目标文件

-           需要说明的是,为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp命令拷贝文件后,这个文件就会被新源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用i选项。备份一般用–a, 复制文件给他人时一般用不加参数.

【案例】cp ‐r dir1 dir2,递归复制命令(复制子目录信息)

-         mv,移动文件和改文件名(重命名)       (鸟哥linux第二版 p123)

-         rm,删除文件和目录

-           rm rf *,删除所有内容,包含目录和文件,r表示递归,f表示强制

-         ln,ln [-sf] 源文件 目标文件  (建立符号连接,类似于建立某个文件的快捷方式)

( 鸟哥linux第二版 p153)

-           s 如果ln不加任何参数就进行硬连接,      -s 就是符号连接

-           -f 如果目标文件存在时,就主动将目标文件直接删除后再建立.

【案例】ln ‐s /etc/inittab inittab,inittab指向实际文件/etc/inittab inittab

-         more,显示文件内容带分页,ctrl + page up上翻,长空格下翻

-         less,显示文件内容带分页

-         grep,在文本中查询内容                        

-         grep  [-acinV] ‘搜索字符串’  filename                         (鸟哥linux第二版 p233)

-           -a :   将二进制文件以文本文件的方式搜索数据 

-           -c :    计算找到’搜索字符串’的次数

-           -i :     忽略大小写不同,所以大小写视为相同

-           -n :   顺便输出行号

-           -v :    反向选择,即显示出没有’搜索字符串’内容的那一行

【案例】假设存在某个文件aaa.java中含有shunping关键字,此时可以使用grep名命令来查找,grep -n “shunping”aaa.java,n表示在第n行出现

-         |,管道命令,在linux和unix系统

-           怎么理解?把上一个命令的结果交给|后面的命令处理

【案例】ls ‐l /etc/ | more

-         man [command],帮助,类似于dos中的help; man实际为manual (操作说明),

5.2搜索文件find、which、whereis、locate:

-         which 寻找“执行文件”

-           -a 将所有可找到的命令均列出,而不仅仅列出第一个找到的命令名称

-         whereis 寻找特定文件         whereis [-bmsu] 文件或目录

-           -b :   只找二进制文件

-           -m :  只找在帮助文件manual路径下的文件

-           -s : 只找源文件

-           -u : 没有帮助文件的文件

-         locate [filename]

-           例:  locate passwd

-         find,搜索文件及目录。在linux中,因为文件系统是以级别式的结构来组成的,所以要在整个系统中找到特定的文件和目录并不是件容易的事。而“find”命令可以解决上述问题                                                  (鸟哥linux第二版 p137)

-           在特定的目录下搜索并显示指定名称的文件和目录

【案例】find / -name man:意思是说从根目录开始搜索名称为man的文件或目录

-           搜索一段时间内被存取/变更的文件或目录

【案例】find /home -amin -10:十分钟内存取的文件或目录

【案例】find /home -atime -10:十小时内存取的文件或目录

【案例】find /home -cmin -10:十分钟内更改过的文件或目录

【案例】find /home -ctime +10:十小时前更改过的文件或目录

-           搜索指定大小的文件

【案例】find /home -size +10k:意思是说查找/home目录下大小为10k的文件

 

-         重定向命令

-           ls -l >a.txt,列表的内容写入文件a.txt中(覆盖写)

-           ls -al >>aa.txt,列表的内容追加到文件aa.txt的末尾

-           从文件中输入信息:database_program< database_data

-         en,查看环境变量

 

-         压缩和解压

-           zipunzip处理.zip文件

-           zip命令的基本使用方法

-           zip file.zip *:zip后接压缩后的文件名,在它的后面输入要压缩的文件即可

-           压缩后,自动删除原文件

【案例】zip m file.zip to.txt:把to.txt文件压缩成file.zip文件,to.txt会自动删除的

-           将子目录一起压缩

【案例】zip ‐r file.zip *:将当前目录下的子目录一起压缩

-           忽略子目录的内容

【案例】zip ‐j file.zip *

-           将已压缩的或没有必要压缩的文件去掉

【案例】zip ‐n .mpg: .jpg: .gif:第一种文件中间要用“:”分开

-           压缩某一日之后的文件

【案例】zip ‐t 102002 file.zip:将当前目录下在2002年10月20日之后文件压缩

-           不压缩链接文件的原文件

【案例】zip ‐y file.zip *

-           压缩率问题,-1~-9,其中-9的压缩率最高

【案例】zip -9 file.zip *

-           将不需要压缩的文件排除在外

【案例】zip file.zip * -x file2.txt:在压缩时,将当前目录内的file2.txt文件排除在外

-           unzip命令进行.zip文件的解压缩

-           直接解压缩文件

【案例】unzip file.zip

-           排除不需要解压缩的文件

【案例】unzip file.zip ‐x file2:除了file2文件外,其他的文件都解压缩

-           查看压缩包的内容

【案例】unzip ‐Z file.zip:查看file.zip压缩包的内容,也可以使用“-l”

“-v”来查看压缩包的内容

-           gzipgunzip处理.gz文件

 

-         chattrlsattr命令详解

-         chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多功能不能实现。同样-D检查压缩文件中的错误的功能,需要2.5.19以上内核才能支持。另外,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var
目录。

-          lsattr比较简单,只是显示文件的属性
【案例】 [root]# lsattr

----ia---j---./lsattr_test

这两个命令是用来改变文件、目录属性的,和chmod,ls这些命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

-         chattr命令的用法:chattr [+ - =] [ASacdistu]

最关键的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu]这些字符组合的,这部分是用来控制文件的属性。

-           + 在原有参数设定基础上,追加参数。

-          - 在原有参数设定基础上,移除参数。

-          = 更新为指定参数设定。

-           A文件或目录的 atime (accesstime)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。

-           S硬盘I/O同步选项,功能类似sync。

-           a即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。

-           c即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。

-           d即no dump,设定文件不能成为dump程序的备份目标。

-           i设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。

-           j即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。

-           s保密性地删除文件或目录,即硬盘空间被全部收回。

-           u与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion.

各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。

【案例】1、用chattr命令防止系统中某个关键文件被修改

# chattr +i/etc/fstab

然后试一下rm mv rename等命令操作于该文件,都是得到Operation not permitted 的结果【案例】2、让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作    # chattr +a /data1/user_act.log

5.3 linux系统中last命令的用法

1.作用
linux系统中last命令的作用是显示近期用户或终端的登录情况,它的使用权限是所有用户。通过last命令查看该程序的log,管理员可以获知谁曾经或企图连接系统。

2.格式

last [—R] [—n][ffile][t tty][—h 节点][I —IP][—1][y][ID]

3.主要参数

- R: 省略hostname 的栏位

n:指定输出记录的条数。

f file:指定用文件file作为查询用的log文件。

t tty:只显示指定的虚拟控制台上登录情况。

h 节点:只显示指定的节点上的登录情况。

i IP:只显示指定的IP上登录的情况。

1:用IP来显示远端地址。

y:显示记录的年、月、日。

ID:知道查询的用户名。

x:显示系统关闭、用户登录和退出的历史。

范例:
shell>> last -R -2
user3 pts/1 Mon Aug 14 20:42 still logged in
user3 pts/0 Mon Aug 14 19:59 still logged in
wtmp begins Tue Aug 1 19:01:10 2007 ### /var/log/wtmp

shell>> last -2 user1
user1 pts/0 140.119.217.115 Mon Aug 14 18:37 - 18:40 (00:03)
user1 pts/0 140.119.217.115 Mon Aug 14 17:22 - 17:24 (00:02)
wtmp begins Tue Aug 1 19:01:10 2007

5.4 linux wc命令详解

功能说明:计算字数。

语   法:wc [-clw][--help][--version][文件…]

补充说明:利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定任何文件名称,或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。假设不给予其参数,wc指令会一并显示列数、字数和Byte数

  参   数:-c 只显示Byte数,亦即字符数;

-l 只显示列数;

     -w 只显示字数;

     --help 在线帮助;

     --version 显示版本信息。

例:

计算文本文件TopGun的列数、字数和字符数:

$ wc TopGun

 

 文件权限.用户组

6.1用户组

在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念

-         所有者

-         所在组

-         其它组

-         改变用户所在的组

 

所有者

一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者

ls ahl命令可以看到文件的所有者

也可以使用chown 用户名文件名来修改文件的所有者

 

文件所在组

当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组

ls ahl命令可以看到文件的所有组

也可以使用chgrp 组名文件名来修改文件所在的组

 

其它组

除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

6.2文件权限

ls

 -l中显示的内容如下:

-rwxrw-r‐-1 root root 1213 Feb 2 09:39 abc

-         10个字符确定不同用户能对文件干什么

-           第一个字符代表文件(-)、目录(d),链接(l)

-           其余字符每3个一组(rwx),读(r)、写(w)、执行(x)

-           第一组rwx:文件所有者的权限是读、写和执行

-           第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行

-           第三组r--:不与文件所有者同组的其他用户的权限是读不能写和执行

也可用数字表示为:r=4,w=2,x=1  因此rwx=4+2+1=7

-         1 表示连接的文件数

-         root 表示用户

-         root表示用户所在的组

-         1213 表示文件大小(字节)

-         Feb 2 09:39 表示最后修改日期

-         abc 表示文件名

 

改变权限的命令

chmod 改变文件或目录的权限

chmod 755 abc:赋予abc权限rwxr-xr-x

chmod u=rwx,g=rx,o=rx abc:同上u=用户权限,g=组权限,o=不同组其他用户权限

chmod u-x,g+w abc:给abc去除用户执行的权限,增加组写的权限

chmod a+r abc:给所有用户添加读的权限

 

 

改变所有者(chown)和用户组(chgrp)命令

chown xiaoming abc:改变abc的所有者为xiaoming

chgrp root abc:改变abc所属的组为root

chown root ./abc:改变abc这个目录的所有者是root

chown R root ./abc:改变abc这个目录及其下面所有的文件和目录的所有者是root

 

改变用户所在组

在添加用户时,可以指定将该用户添加到哪个组中,同样用root的管理权限可以改变某个用户所在的组

-         usermod g 组名用户名

你可以用

-         usermod d 目录名用户名,改变该用户登录的初始目录

 

【综合案例】

【题1.1】建立两个用户组group1和group2,以及三个用户dennis、daniel、abigale,并且将前2个用户分配在group1用户组下,后一个分配在group2用户组下




【题1.2】以dennis用户登录,创建一个Hello.java文件

【题1.3】以daniel用户登录,观察是否可以访问/home/dennis目录以及读或写其创建的Hello.java文件

【题1.4】以dennis用户登录,修改目录/home/dennis及Hello.java文件的读写权限(更正:修改目录权限的时候,应该使用770,而不是760,否则权限不足


【题1.5】重复【题1.3】

【题1.6】改变abigale的用户组由group2变为group1



然后,可以使用cat /etc/passwd查看并确定


【参考】

-         groupadd 组名,在linux中添加组

-         vi /etc/group,查看linux中所有组信息,可以看可以编辑

-         cat /etc/group,查看linux中所有组信息,只可以看不可以编辑

-         useradd g 组名用户名,创建用户的同时指定将该用户分配到哪个组下

-         vi /etc/passwd,查看linux中所有用户信息,可以看可以编辑

-         cat /etc/passwd,查看linux中所有用户信息,只可以看不可以编辑

 J2EE环境配置

7.1 J2EE环境搭建

jdk安装步骤

-         把mypackage.iso挂载到linux操作系统上

-           在vm做好配置

-           mount /mnt/cdrom,挂载光驱

-           unmount /mnt/cdrom,卸载光驱

-         把安装文件拷贝到/home

-           cp 文件 /home

-         安装

-           ./j2sdk-1_4_2_19-linux-i586.bin

-         查看一个文件/etc/profile [环境配置文件]

-         配置先前安装的jdk

  

eclipse安装步骤

-         挂载共享文件

-         把安装文件拷贝到/home

-           cp 文件 /home

-         安装

-           tar ‐zxvf eclipse-SDK-3.2.1-linux-gtk.tar.gz

-         进入图形界面,运行eclipse需要桌面支持

-           startx

-         启动eclipse

-           ./eclipse

MyEclipse安装步骤

-         挂载共享文件

-         把安装文件拷贝到/home

-           cp 文件 /home

-         安装

-           ./MyEclipseEnterpriseWorkbenchInstaller_5_1_0GA_E3_2_1.bin

-         注意点

-           进入图形界面安装支持,否则报错

-           选择已安装的eclipse的主目录

-         重新启动eclipse

-           ./eclipse &

-           这时会发现,菜单栏上多了一个MyEclipse选项

 

tomcat安装步骤

我们知道java ee的服务器有tomcat、jboss、weblogic、websphere、resin…这些都可以安装到linux下,我们给人家安装tomcat,安装步骤如下:

-         挂载共享文件

-         把安装文件拷贝到/home

-           cp 文件 /home

-         安装

-           tar ‐zxvf jakarta-tomcat-5.0.30.tar.gz

-         测试

-           编写一个简单的jsp页面

-           配置tomcat和jdk

 linux分区详解

8.1概述

硬盘的分区主要分为基本分区(Primary Portion)和扩展分区(ExtensionPortion)两种。只是针对一个硬盘来讲,基本分区和扩展分区的数目之和不能大于4个,且基本分区可以马上被使用但不能再分区。扩展分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区。那么有扩展分区再分下去的是什么呢?它就是逻辑分区(Logical Portion),而且逻辑分区没有数量上限制

对windows用户来说,有几个分区就有几个驱动器,并且每个分区都会获得一个字母标识符,然后就可以选用这个字母来指定在这个分区上的文件和目录。它们的文件结构都是独立的,非常好理解。但对这些用户初上手Redhat Linux,可就有点恼人了。因为对RedhatLinux用户来说无论有几个分区,分给哪一个目录使用,它归根结底就只有一个根目录、一个独立且唯一的文件结构。Redhat Linux中每个分区都是用来组成整个文件系统的一部分。因为它采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,并将一个分区和一个目录联系起来。这时要载入的那个分区将使它的存储空间在这个目录下获得

8.2硬盘

对于IDE硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例如:hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区

对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样

8.3几个重要命令

8.3.1读取文件系统的信息可以用:dumpe2fs命令来读取.

         【案例】dumpe2fs /dev/sda1

8.3.2挂载命令

mount[-a] [设备名称] [挂载点]                                                              (鸟哥linux第二版 p162)

mount[-tonL] 设备名称代号  载入点

特别说明:在挂载光驱时,可直接使用 mount /mnt/cdrom

【案例】mount /dev/sda1 /test/

 

卸载命令

umount[挂载点]

【案例】umount /test/

 

8.3.3查看磁盘使用情况

df [-ahikHTm] [目录或文件名]

-         -a :     列出所有的文件系统,包括系统挺有的 /proc 等文件系统

-         -k :     以KB为单位显示各文件系统.

-         -m :   以MB为单位显示各文件系统.

-         -h :     以GB、MB、KB等格式显示。

-         -H 以M=1000K取代M=1024K 的计算方式。

-         -T :连同该分区的文件系统名(例如ext3)一起列出。

-         -i : 不用硬盘容量,而以inode的数量来显示。

-         ‐l

-         df [目录全路径],查看某个目录是在哪个分区

du     [-ahskm] [文件或目录名称] (鸟哥linux第二版 p151)

-         -a :     列出所有的文件与目录容量,因为仅统计目录下面的文件量而已

-         -h :     以人们易读的容量格式(G/M)显示

-         -s :     列出问题,不列出每个目录占用的容量

-         -k :     以KB列出容量显示

-         -m :   以MB列出容量显示

8.3.4查看linux系统分区具体情况

fdisk [l] 设备名称                         (鸟哥linux第二版 p155)

-         不加 –l 时就会进入fdisk,里面可以n新建分区,d删除分区,p列出当前的分区,q不存储离开,这很重要,w写入分区表后离开,这个比较危险,要注意.

8.3.5磁盘格式化

mke2fs[-bicLj] 设备名称                                    (鸟哥linux第二版 p159)

-         -b :     可以设置每个块的大小,当前支持1024、2048、4096字节3种。

-         -I :      给一个inode多少容量

-         -c :     检查磁盘错误,仅执行一次–c 时,会进行快速读取测试,如果执行两次 -c –c,会测试读写(read-write)会很慢。

-         -L :     后面可以接卷材(Labe1),这个卷材是有用的。

-         -j :      本来mke2fs是EXT2,加上-j后,会主动加入日志而灰飞烟灭ext3.

8.3.6磁盘检验:fsck、badblocks

fsck [-AtCary] 设备名称                                                                           (鸟哥linux第二版 p161)

badblocks [-svw] 设备名称

linux安装演示

shell介绍

10.1概述

每个人在成功登陆linux后,系统会出现不同的提示符号,例如$、~、#等,然后你就可以开始输入需要的命令,若是命令正确,系统就会依据命令的要求来执行,直到注销系统为止;在登录到注销期间,输入的每个命令都会经过解释及执行。而这个负责的机制就是shell

10.2 shell编程

其实作为命令语言互动式地解释和执行用户输入的命令只是shell功能的一个方面。shell还可以用来进行程序设计。它提供了定义变量和参数的手段以及丰富的程序控制结构。使用shell编程类似于DOS中批处理文件,称为shell script,又叫shell程序或shell命令文件

10.3 shell的分类

Shell名称

开发者

命令名称

Bourne

S.R.Bourne

/bin/sh

C

Bill Joy

/bin/csh

Korn

David

/bin/ksh

10.4 shell的使用

命令历史和互动:用上下箭头键可以重复以前所输入的命令

命令完成功能:用tab键能自动完成相关命令,再次按tab可得到清单

[Ctrl]+c 中断当前命令的组合键,

[Ctrl]+d 键盘输入结束,可以用来取代exit的输入.

shell脚本文件:

-         是一个文本文件

-         命令的集合

-         有执行的权限

-         执行方式(./文件名)

用户登录后自动执行的shell脚本文件

-         .bashrc位于主目录下,它之前执行系统的脚本/etc/bashrc主要是基本配置数据

-           配置.bashrc文件可以指定某些程序在用户登录的时候就自动启动

-         .bash_profile位于主目录下,它之前执行系统的脚本/etc/profile主要是配置环境变量

 

export可以临时加入一个系统路径,如export PATH=$PATH:$HOME/bin:/root/test/t1,输出环境PATH,引用原来的值$PATH,$HOME表示工作主目录,:是路径分隔符

-         已经定义好的环境变量

-           SHELL:默认shell

-           PATH:路径

-           USER:当前登录用户的用户名

-         显示变量内容

-           echo $SHELL

-           echo $USER

-           echo $PATH

 

变量键盘读取、数组、与声明:readarraydeclare

-         read                     格式:read  [-pt]  variable                       (鸟哥linux第二版 p213)

-           -p :   后面可以接提示符

-           -t :    后面可以接等待秒数

【案例】read -p “Please keyin your name: ” –t 30 name

-         declare/typeset                           格式: declare  [-aixr] variable

-           -a :   将后面的variable定义为数组(array)

-           -i :   将后面的variable定义为整数数字(integer)

-           -x :    用法与export一样,就是将后面的variable变成环境变量

-           -r :    将一个variable的变量设置成只读,变量不可以更改内容,也不能取消设置

【案例】delare –i sum=100+200+300

-         array                             格式:var[index]=content

-           输入:

-           var[1]=”small min”

-           var[2]=”big min”

-           var[3]=”nice min”

-           读取:        echo “${var[1]}, ${var[2]}, ${var[3]}”

 

shell通配符

-         *代表多个字母或数字

-         ?代表一个字母或数字

【案例】ls a*   ls a?    ls f080[1-6].tif

-         转义字符\

【案例】ls /mnt/win1/My\Documents

 

引号

【案例】export NAME=Michael

                   echo Welcome $NAME, the dateis date       

-         单引号:不处理任何变量和命令

【案例】echo ‘Welcome $NAME, the date is date ’

-         双引号:处理变量但不处理命令

【案例】echo “Welcome $NAME, the date is date “

-         反引号:把引号中的每个单词作为一个命令,如果是变量则先求值然后作为一个命令处理

【案例】echo “Welcome $NAME, the date is `date` “

 

Linux    echo命令。

功能说明:显示文字。

语   法:echo [-ne][字符串]或 echo [--help][--version]

补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。

参   数:-n 不要在最后自动换行

         -e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

-         \a 发出警告声;

-         \b 删除前一个字符;

-         \c 最后不加上换行符号;

-         \f 换行但光标仍旧停留在原来的位置;

-         \n 换行且光标移至行首;

-         \r 光标移至行首,但不换行;

-         \t 插入tab;

-         \v 与\f相同;

-         \\ 插入\字符;

-         \nnn 插入nnn(八进制)所代表的ASCII字符;

-         --help 显示帮助

-         --version 显示版本信息

 

别名

-         命令:alias显示系统当前定义的所有alias

【案例】alias cp=’cp -i’

【案例】alias li=’ls –l –color=tty’

补充说明:用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。 alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在/etc/profile或自己的~/.bashrc中设定指令的别名。

    还有,如果你想给每一位用户都生效的别名,请把alias la='ls -al' 一行加在/etc/bashrc最后面,bashrc是环境变量的配置文件 /etc/bashrc~/.bashrc 区别就在于一个是设置给全系统一个是设置给单用户使用有,如果你想给每一位用户都生效的别名,请把alias la='ls -al' 一行加在/etc/bashrc最后面,bashrc是环境变量的配置文件 /etc/bashrc~/.bashrc 区别就在于一个是设置给全系统一个是设置给单用户使用 

 

shell的修改

chsh–s 输入新的shell

查阅历史记录

-         history,查看使用过的命令的历史记录

-         history 5,此项说明会显示最近使用的5个命令

-         !5,此项说明执行历史编号为5的命令

-         !ls,此项说明执行最后一次以“ls”开头的命令

 

环境变量的说明: envset 可以用这两个命令查看一些环境变量的说明,直接输入即可。

提示符的设置:PS1=’[\u@\h \W \]\$’   具体参考:  (鸟哥linux第二版 p208\p210)

 

$系统变量

$#:  命令行参数个数

$n:  命令行参数,n为非负整数.

$0:  表示程序名称

$1:  表示第一个命令行参数

$?:  前一条命令的返回码

$$:  本进程的进程ID

$!:   上一进程的进程ID

 

tcp.ip基础

11.1概述

TCP/IP是unix/linux世界的网络基础,在某种意义上,unix网络就是TCP/IP,而且TCP/IP就是网络互联的标准。它不是一个独立的协议,而是一组协议(TCP、IP、UDP、ARP等协议)

每个Internet上的主机和路由器都有一个IP地址,它包括网络号和主机号,现在所用的IP地址都是32位的。IP地址按照国际标准划分为A、B、C、D、E五种类型

.网络环境配置

12.1第一种方法

-         用root身份登录,运行setup命令进入到text mode setuputility对网络进行配置,这里可以进行IP、子网掩码、默认网关、DNS的配置

-         这时网卡的配置没有生效,运行/etc/rc.d/init.d/network restart命令我们刚才做的设置才生效

-         ifconfig

12.2第二种方法

-         ifconfig eth0x.x.x.x 对网卡进行设置

-         ifconfig eth0network x.x.x.x 对子网掩码设置

-         对广播地址和DNS使用默认的

Note:这样配置网络将会立即生效,但是是临时生效

12.3第三种方法

-         修改/etc/sysconfig/network-scripts/ifcfg-eth0这个文件里各个属性可以修改,包括IP、子网掩码、广播地址、默认网关等

-         这时网卡的配置没有生效,运行/etc/rc.d/init.d/network restart命令我们刚才做的设置才生效

Note:

-         这种方法是最底层的修改方法

-         在linux中,所有设备都是文件

-         Tracert +”ip” 可以查看,访问所经过的路由器

-          

.rpm包.samba配置

13.1 RPM

概述

一种用于互联网下载包的打包及安装工具,它包含在某些linux分发版中。它生成具有.RPM扩展名的文件。RPM是Redhat Package Manager(Redhat软件包管理工具)的缩写。这一文件格式虽然打上了Redhat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用。可以算是工人的行业标准了

 

RPM包的名称格式

apache-1.3.23-11.i386.rpm

-         “apache”:软件名称

-         “1.3.23-11”:软件的版本号,主版本和此版本

-         “i386”:是软件所运行的硬件平台

-         “rpm”:文件扩展名,代表RPM包

 

RPM常用命令

-         rpm qa:查询所安装的所有rpm软件包

-           rpm ‐qa | more

-           rpm ‐qa | grep X

-         rpm q 软件包名:查询软件包是否安装

-           rpm ‐q xinetd

-           rpm ‐q foo

-         rpm qi 软件包名:查询软件包信息

-           rpm ‐qi file

-         rpm ql 软件包名:查询软件包中的文件

-           rpm ‐ql file

-           rpm ‐ql jdk

-         rpm qf 文件全路径名:查询文件所属的软件包

-           rpm ‐qf /etc/passwd

-           rpm ‐qf/root/install.log

-         rpm qp 包文件名:查询包的信息对这个软件包的介绍

-           rpm ‐qpjdk-1_5_0-linux-i586.rpm

-           rpm ‐qpijdk-1_5_0-linux-i586.rpm

-           rpm ‐qpljdk-1_5_0-linux-i586.rpm

 

安装RPM包

rpmivh RPM包全路径名称:安装包到当前系统

-         i=install,安装

-         v=verbose,提示,即有提示信息

-         h=hash,进度条

 

删除RPM包

rpme RPM包的名称

【案例】rpm ‐e jdk

如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息,如:

【案例】rpm ‐e foo

removing thesepackages would break dependencies:foo is neededby bar-1.0-1

若让RPM忽略这个错误继续卸载,请使用‐‐nodeps命令行选项

【案例】rpm ‐e ‐‐nodeps foo

 

升级RPM包

rpmU RPM包全路径名

【案例】rpm ‐U cvs-1.11.2-10.i386.rpm

13.2 samba配置

什么是samba

这些年来,windows与linux操作系统各自拥有自己的用户群和市场。然而在一般公司或学校里,可能同时有windows和linux主机,windows主机彼此之间可以利用“网上邻居”来访问共享资源。NFS也能使linux主机之间实现资源访问。而samba服务软件能够使windows与linux之间实现资源共享

SMB通信协议采用的是C/S结构,所以SAMBA软件可分阶段客户端及服务端两部分。通过执行samba客户端程序,linux主机使可使用网络上的windows主机所共享的资源。而在linux主机上安装samba服务器,则可以使windows主机访问samba服务器共享的资源

 

samba安装

samba的安装步骤

-         看看是否已经安装了samba

-           rpm ‐q samba

-         如果有的话,就先卸载

-           rpm ‐e ‐‐nodepssamba

-         把安装文件挂载到linux下

-           samba-common-2.2.7a-7.9.0.i386.rpm

-           samba-client-2.2.7a-7.9.0.i386.rpm

-           samba-2.2.7a-7.9.0.i386.rpm

-         拷贝samba的rpm包到/home,准备安装

-         开始安装

-           rpm ‐ivh samba-common-2.2.7a-7.9.0.i386.rpm

-         创建一个用户youyou

-           useradd youyou

-           passwd youyou

-         给youyou设置samba密码

-           cat/etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

-           smbpasswdyouyou,设置密码

-         启动samba服务器,测试

-           service smbstart,启动

-           service smbstop,停止

-           service smbrestart,重启

 

samba配置

共享资源的基本配置  /etc/samba/smb.conf

-         comment:针对共享资源所做的说明文字。默认值为空字符串

【案例】comment=dir for todayhero:共享这个目录是为了todayhero这个用户

-         path:若共享的资源是目录,是指定该目录的位置

【案例】path=/tmp:共享tmp这个目录

-         guest ok:是否允许用户不使用账号和密码访问此资源

【案例】guest ok=yes:允许用户不使用账号和密码访问此资源

【案例】guest ok=no:不允许用户不使用账号和密码访问此资源

-         hosts allow:设置连接主机的地址

【案例】hosts allow=192.168.2.1 server.abc.com:允许来自192.168.2.1 或server.abc.com

-         hosts deny:设置禁止连接的主机地址

【案例】hosts deny=192.168.2.1:不允许192.168.2.1的主机访问samba服务器的资源

-         read only:用于设置共享的资源是否为可读

【案例】read only=yes:允许只读

【案例】read only=no:不仅仅只读,也就是说可以写入

3,用windows上访问linux的共享目录

    回到windows,打开网络(我用的是win7以前这个东西叫网上邻居),在地址栏输入\\linux ip 比如,\\192.168.100.13 ,根本找不到?!

有搜索了老半天,好在这个问题还是很普遍的,

关闭linux的防火墙:#service iptables stop

     终于可以找到linux……

 

.crontab详解

14.1概述

任务调度:是指系统在某个时间执行的特定的命令或程序

任务调度分类:

-         系统工作:有些重要的工作必须周而复始地执行,如病毒扫描等

-         个别用户工作:个别用户可能希望执行某些程序

 

任务调度命令

设置任务调度文件:/etc/crontab

设置个人任务调度,执行crontab ‐e命令,接着输入任务到调度文件

【案例】5 * * * * ls ‐l /etc/ > /tmp/to.txt,意思说每小时的第五分钟执行ls命令

 

调度文件的规则

字段名称

说明

范围

分钟

每小时中的第几分钟执行

0-59

小时

每天的第几个小时执行

0-23

日期

每月的第几天执行

1-31

月历

每年的第几个月执行

1-12

星期

每周的第几天执行

0-6

 

使用任务调度

-         设置任务

-           crontab ‐e

-         每隔一定时间去执行date> /home/mydate2

-           希望每天凌晨2:00去执行 date >>/home/mydate2,可以在crontab ‐e中加入:0 2 * * * date >> /home/mydate2

-           希望每分钟去执行:在crontab‐e中加入:* * * * * date>> /home/mydate2

-         怎样去调度多个任务

-           在crontab ‐e中直接写多个命令(不推荐)

-           可以把所有的任务,写入到一个可执行文件(shell编程)

-         终止任务调度

-           crontab ‐r:终止任务调度

-           crontab l:列出当前有哪些任务调度

进程的介绍和管理

15.1概述

-         在linux 中,每个执行的程序都称为一个进程,每一个进程都分配一个ID号

-         每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程,例如www服务器

-         每个进程都可能以两种方式存在的,前台与后台。所谓前台进程就是用户目前的屏幕上可以进行操作的,后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行

-         一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束

-         进程与线程

-           进程:就是正在执行的程序

-           线程

-           轻量级的进程

-           进程有独立的地址空间,线程没有

-           线程不能独立存在,它是由进程创建

-           相对讲,线程耗费的CPU和内存要小于进程

 

进程的管理

ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的情况,可以不加任何参数,显示详细的进程信息                  (鸟哥linux第二版 p344n)

-         ps ‐a:显示当前终端的所有进程信息

-         ps ‐u:以用户的格式显示进程信息

-         ps ‐x:显示后台进程运行的参数

ps显示的信息选项:

字段

说明

PID

进程识别号

TTY

终端机号

TIME

此进程所消CPU时间

CMD

正在执行的命令或进程名

 

终止进程kill/killall

若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程,使用kill命令来完成此项任务

终止某个进程:kill 进程号

【案例】kill 16251:终止进程号为16251的进程

【案例】kill -9 16251:因为有些进程会捕捉某些信号,如果直接不能结束进程可以用“-9”传送信息

killall:杀死同名的所有进程

 

动态监控进程

top命令与ps命令很相似。它们都用来显示正在执行的进程。top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程

-         监视特定用户

-           top:输入此命令,按回车键,查看执行的进程

-           u:然后输入“u”回车,再输入用户名,即可

-         终止指定的用户

-           top:输入此命令,按回车键,查看执行的进程

-           k:然后输入“k”回车,再输入要结束的进程ID号

-         指定系统状态更新的时间

-           top d 10:指定系统更新进程的时间为10秒

 

top显示选项解释


-         1:52,表示系统启动了多久

-         1 user,用户数

-         load average:0.00 0.00 0.00,当前系统负载情况,一般来说,参数越小,系统运行的越轻松,当平均数>0.6时,系统就很紧张了

-         38 processes,进程数

-         0 zombie,僵尸进程数,相当于这个进程没有用了,还占用资源,比如父进程来不及收回子进程

-         CPU states:99.3% idle,闲置的CPU

-         Mem,内存

-         Swap,类似于虚拟内存

 

设置系统时间

-         date命令:显示系统的时间,可以在直接输入“date”命令来查看系统的时间

-           date+%y/%m/%d

-           2005/06/23

-           date +%H:%M

-           17:25

-         利用date命令来更改系统的时间

-           dateMMDDHHMMCCYY.SS:月月日日时时分分年年.秒秒

-         查看月历

-           cal 3 2002:查看2002年3月的月历

-         查看年历

-           cal 2008:查看2008的年历

计算器

-         bc命令调出计算器

-           

-           scale=3为输出小数的位数,linux计算器,默认输出的是为整数.

-           quit 退出计算器

监控网络状态

16.1几个监控命令

显示网络统计信息的命令netstat

此命令用来显示整个系统目前的网络情况。例如目前的连接、数据包传递数据、或是路由表内容,此命令直接输入即可使用

-         netstat anp

-           an,按一定顺序排列输出

-           p,表示显示哪个进程在调用

 

检测主机连接命令ping

是一种网络检测工具,它主要是用检测远程主机是否正常,或是两部主机间的介质是否为断、网线是否脱落或网卡故障

-         ping 对方ip地址

 

显示数据包经过历程命令traceroute

此命令可以直接输入使用,用来检测数据包在网络上传输的过程,从本机到远程的主机完整路径,帮助管理员解决问题

 

显示路由表route

所谓路由是指将数据由来源网络送往目的网络的操作。在大型网络中,路由是非常复杂的,因为数据包在抵目的地时,可能经过的节点有很多,路由表是存储在路由器或一些其他链接设置上的窗体。其中记录着了到指定目的的网络路径,以及这些路径的相关数值

此命令可以直接输入使用,来查看本机路由的情况

mysql安装.配置.使用

17.1概述

mysql数据库在linux下可以充分发挥威力,mysql数据库越来越受到软件公司的青睐,为什么呢?

免费、跨平台、轻、支持多并发

在北京很多软件公司属于创业型的中、小公司,从节约成本的角度考虑,mysql特别适合中、小项目

17.2 mysql安装

-         创建mysql组

-           useradd mysql

-         创建mysql用户,并放入到mysql组中

-           useradd -g mysql mysql

-         进入到mysql文件夹

-           初始化数据库

-           scripts/mysql_install_dbuser=mysql

-           修改文件的所有者

-           chown ‐R root .

-           修改date文件夹的所有者

-           chown ‐R mysql date

-           改变用户组

-           chgrp ‐R mysql .

-         启动mysql

-           bin/mysqld_safe–user=mysql &

-           &表示以后台的方式启动

-           检查一下进程,netstat ‐anp,查看监听端口是3306的是不是打开了

-         如何进入mysql

-           cd bin

-           ./mysql u root p 回车

Notes:如果希望在任何一个目录下都可以进入mysql,则需在用户变量/root/.bash_profile中添加路径

-         测试mysql数据库是否可以在linux下正确使用

-           建立数据库和表

-           加入部分数据

-           编写一个ShowUser.java文件,在控制台显示用户

Note:特别注意mysql的驱动要存放的位置,放在jdk的主目录下的/jre/lib/ext/

 

备份与恢复

备份:mysqldump u root p密码数据库名 > data.bak

恢复:mysql u root p密码数据库名 < data.bak

Note:‐p和密码之间没有空格

ssh安装.配置.使用

18.1概述

ssh(secure shell)是一款集远程操作linux和进行文件上传和下载的软件,在软件公司几乎所有的linux程序员都会使用ssh。安全、方便是它最大的特点

linux上默认安装ssh服务,且默认是启动的sshd,监听的端口是22。在windows系统上安装SSH客户端,集成了secureCRT与FTP的作用

补充linux重要内容

linux启动过程分析

runlevel命令,可以查看当前的运行级别

20.1 linux启动过程

-         BIOS自检

-         启动GRUB/LILO

-         运行linux内核并检测硬件

-         运行系统的第一个进程init

-         init读取系统引导配置文件/etc/inittab中的信息进行初始化

-         /etc/rc.d/rc.sysinit系统初始化脚本

-         /etc/rc.d/rcX.d/[KS] * -根据运行级别X配置服务

-           终止以“K”开头的服务

-           启动以“S”开头的服务

-         /etc/rc.d/rc.local执行本地特殊配置

-         其他特殊服务

 java网络编程

linux下网络编程是linux最让程序员着迷的地方,我们看看如何在linux进行网络编程。最终大家可以在这个基础上扩展为myQQ的程序,并且会使用到mysql数据库

         你将学习到:

-           如何使用java进行socket编程

-           如何在java中对mysql数据库操作

-           windows和linux网络通讯

-           了解什么是网络服务这个晦涩的概念

 

linux系统作为服务端,代码如下:

 

windows作为客户端,代码如下:


linux内核编程 目 录 雷蒙序 简介 Linux文档工程小组“公告” 译者序 第一部分 Linux内核 前言 第1章 硬件基础与软件基础 6 1.1 硬件基础 6 1.1.1 CPU 7 1.1.2 存储器 8 1.1.3 总线 8 1.1.4 控制器和外设 8 1.1.5 地址空间 9 1.1.6 时钟 9 1.2 软件基础 9 1.2.1 计算机语言 9 1.2.2 什么是操作系统 11 1.2.3 内核数据结构 13 第2章 内存管理 15 2.1 虚拟内存抽象模型 15 2.1.1 请求调页 17 2.1.2 交换 17 2.1.3 共享虚拟内存 18 2.1.4 物理寻址模式和虚拟寻址模式 18 2.1.5 访问控制 18 2.2 高速缓存 19 2.3 Linux页表 20 2.4 页分配和回收 21 2.4.1 页分配 22 2.4.2 页回收 22 2.5 内存映射 22 2.6 请求调页 23 2.7 Linux页缓存 24 2.8 页换出和淘汰 25 2.8.1 减少缓冲区和页缓存大小 25 2.8.2 换出System V共享内存页 26 2.8.3 换出和淘汰页 27 2.9 交换缓存 27 2.10 页换入 28 第3章 进程 29 3.1 Linux进程 29 3.2 标识符 31 3.3 调度 32 3.4 文件 34 3.5 虚拟内存 35 3.6 创建进程 36 3.7 时间和定时器 37 3.8 执行程序 38 3.8.1 ELF 39 3.8.2 脚本文件 40 第4章 进程间通信机制 41 4.1 信号机制 41 4.2 管道 42 4.3 套接字 44 4.3.1 System V的进程间通信机制 44 4.3.2 消息队列 44 4.3.3 信号量 45 4.3.4 共享存储区 47 第5章 PCI 49 5.1 PCI的地址空间 49 5.2 PCI配置头 50 5.3 PCI的I/O和存储地址空间 51 5.4 PCI-ISA桥 51 5.5 PCI-PCI 桥 51 5.5.1 PCI-PCI桥:PCI I/O和存储地址 空间的窗口 51 5.5.2 PCI-PCI桥:PCI配置周期和PCI 总线编号 52 5.6 Linux PCI初始化 53 5.6.1 Linux内核PCI数据结构 53 5.6.2 PCI设备驱动程序 53 5.6.3 PCI的BIOS函数 56 5.6.4 PCI修正过程 57 第6章 中断处理与设备驱动程序 60 6.1 中断与中断处理 60 6.1.1 可编程中断控制器 61 6.1.2 初始化中断处理数据结构 61 6.1.3 中断处理 62 6.2 设备驱动程序 63 6.2.1 测试与中断 64 6.2.2 直接存储器访问(DMA) 65 6.2.3 存储器 66 6.2.4 设备驱动程序与内核的接口 66 6.2.5 硬盘 69 6.2.6 网络设备 74 第7章 文件系统 77 7.1 第二个扩展文件系统EXT2 78 7.1.1 EXT2系统的inode节点 79 7.1.2 EXT2系统的超级块 80 7.1.3 EXT2系统的组描述符 80 7.1.4 EXT2系统的目录 81 7.1.5 在EXT2文件系统中查找文件 81 7.1.6 在EXT2文件系统中改变文件 的大小 82 7.2 虚拟文件系统 83 7.2.1 VFS文件系统的超级块 84 7.2.2 VFS文件系统的inode节点 84 7.2.3 注册文件系统 85 7.2.4 装配文件系统 85 7.2.5 在虚拟文件系统中查找文件 87 7.2.6 卸载文件系统 87 7.2.7 VFS文件系统的inode缓存 87 7.2.8 目录缓存 88 7.3 缓冲区缓存 88 7.3.1 bdflush内核守护进程 90 7.3.2 update进程 90 7.4 /proc文件系统 91 7.5 特殊设备文件 91 第8章 网络 92 8.1 TCP/IP网络概述 92 8.2 Linux中的TCP/IP网络层次结构 95 8.3 BSD套接字接口 96 8.4 INET的套接字层 97 8.4.1 创建BSD套接字 98 8.4.2 为INET BSD Socket绑定地址 99 8.4.3 建立INET BSD Socket连接 99 8.4.4 INET BSD Socket侦听 100 8.4.5 接受连接请求 100 8.5 IP层 100 8.5.1 套接字缓冲区 100 8.5.2 接收IP报文 101 8.5.3 发送IP报文 102 8.5.4 数据分片 102 8.6 地址解析协议 103 8.7 IP路由 104 第9章 内核机制与模块 107 9.1 内核机制 107 9.1.1 Bottom Half控制 107 9.1.2 任务队列 108 9.1.3 定时器 109 9.1.4 等待队列 110 9.1.5 自旋锁 110 9.1.6 信号量 110 9.2 模块 111 9.2.1 模块载入 112 9.2.2 模块卸载 113 第10章 处理器 115 10.1 X86 115 10.2 ARM 115 10.3 Alpha AXP处理器 115 第11章 Linux内核源代码 117 11.1 怎样得到Linux内核源码 117 11.2 内核源码的编排 117 11.3 从何处看起 118 第12章 Linux数据结构 120 附录A 有用的Web和FTP站点 138 附录B 词汇表 139 第二部分 Linux内核模块编程指南 致谢 前言 第1章 Hello, World 145 1.1 内核模块的Makefiles文件 146 1.2 多重文件内核模块 147 第2章 字符设备文件 149 第3章 /proc文件系统 158 第4章 把/proc用于输入 162 第5章 把设备文件用于输入 170 第6章 启动参数 182 第7章 系统调用 185 第8章 阻塞处理 190 第9章 替换printk 199 第10章 任务调度 202 第11章 中断处理程序 207 第12章 对称多处理 211 第13章 常见错误 212 附录A 2.0和2.2之间的差异 213 附录B 其他资源 214 附录C 给出你的评价 215 第三部分 Linux程序员指南 第1章 Linux操作系统 219 第2章 Linux内核 220 第3章 Linux libc包 221 第4章 系统调用 222 第5章 “瑞士军刀”:ioctl 223 第6章 Linux进程间通信 224 6.1 介绍 224 6.2 半双工Unix管道 224 6.2.1 基本概念 224 6.2.2 用C语言创建管道 225 6.2.3 简便方法 229 6.2.4 管道的原子操作 233 6.2.5 关于半双工管道需要注意的几个 问题 233 6.3 命名管道 234 6.3.1 基本概念 234 6.3.2 创建FIFO 234 6.3.3 FIFO操作 235 6.3.4 FIFO上的阻塞动作 236 6.3.5 SIGPIPE信号 237 6.4 系统V IPC 237 6.4.1 基本概念 237 6.4.2 消息队列 239 6.4.3 信号量 251 6.4.4 semtool:交互式信号量操作 程序 260 6.4.5 共享内存 267 第7章 声音编程 274 7.1 内部扬声器编程 274 7.2 声卡编程 274 第8章 字符单元图形 276 8.1 libc中的I/O函数 277 8.1.1 格式化输出 277 8.1.2 格式化输入 278 8.2 termcap库 278 8.2.1 前言 278 8.2.2 获得终端描述 279 8.2.3 查看终端描述 279 8.2.4 termcap权能 280 8.3 Ncurses简介 280 8.4 初始化 282 8.5 窗口 283 8.6 输出 284 8.6.1 格式化输出 285 8.6.2 插入字符/行 286 8.6.3 删除字符/行 286 8.6.4 方框和直线 287 8.6.5 背景字符 287 8.7 输入 288 8.8 选项 289 8.8.1 输出选项 289 8.8.2 输入选项 290 8.8.3 终端属性 291 8.8.4 使用选项 291 8.9 更新终端 292 8.10 视频属性与颜色 293 8.11 光标和屏幕坐标 294 8.12 滚动 294 8.13 小键盘 295 8.14 软标签 295 8.15 杂项 295 8.16 低级访问 296 8.17 屏幕转储 296 8.18 Termcap模拟 296 8.19 Terminfo函数 296 8.20 调试函数 297 8.21 Terminfo权能 297 8.21.1 布尔型权能 297 8.21.2 数值型权能 298 8.21.3 字符串型权能 299 8.22 [N]Curses函数概述 306 第9章 I/O端口编程 307 9.1 鼠标编程 307 9.2 调制解调器编程 308 9.3 打印机编程 308 9.4 游戏杆编程 308 第10章 把应用程序移植到Linux上 309 10.1 介绍 309 10.2 信号处理 309 10.2.1 SVR4、BSD和POSIX.1下 的信号 310 10.2.2 Linux信号选项 310 10.2.3 Linux下的信号 310 10.2.4 Linux支持的信号 311 10.3 终端I/O 311 10.4 进程信息和控制 311 10.4.1 kvm过程 312 10.4.2 ptrace和/proc文件系统 312 10.4.3 Linux下的进程控制 312 10.5 可移植条件编译 313 10.6 补充说明 314 附录 以字母顺序排列的系统调用 315 第四部分 Linux内核概念系统结构 摘要 323 前言 324 第1章 系统结构 325 1.1 系统概述 325 1.2 内核的目标 325 1.3 内核结构的概述 325 1.4 支持多个开发人员 327 1.5 系统数据结构 328 1.5.1 任务列表 328 1.5.2 内存映射 328 1.5.3 索引节点 328 1.5.4 数据连接 329 第2章 子系统的系统结构 330 2.1 进程调度程序系统结构 330 2.1.1 目标 330 2.1.2 模块 330 2.1.3 数据表达 331 2.1.4 依赖性、数据流和控制流 331 2.2 内存管理程序系统结构 331 2.2.1 目标 331 2.2.2 模块 331 2.2.3 数据表示 331 2.2.4 数据流、控制流和依赖性 332 2.3 虚拟文件系统系统结构 333 2.3.1 目标 333 2.3.2 模块 333 2.3.3 数据表示 333 2.3.4 数据流、控制流和依赖性 334 2.4 网络接口系统结构 334 2.4.1 目标 334 2.4.2 模块 334 2.4.3 数据表示 335 2.4.4 数据流、控制流和依赖性 335 2.5 进程间通信系统结构 335 第3章 结论 336 附录A 术语定义 337 附录B 参考文献 338 第五部分 Linux内核具体系统结构 摘要 341 第1章 前言 342 1.1 目标 342 1.2 Linux介绍 342 1.3 软件系统结构的背景知识 342 1.4 方法与途径 343 1.5 适用本书的读者 344 1.6 本部分的章节安排 344 第2章 系统结构 345 第3章 子系统结构 346 3.1 进程调度程序 346 3.1.1 目标 346 3.1.2 外部接口 346 3.1.3 子系统描述 346 3.1.4 数据结构 347 3.1.5 子系统结构 348 3.1.6 子系统依赖性 348 3.2 内存管理程序 348 3.2.1 目标 348 3.2.2 外部接口 349 3.2.3 子系统描述 349 3.2.4 数据结构 350 3.2.5 子系统结构 350 3.2.6 子系统依赖性 351 3.3 虚拟文件系统 352 3.3.1 目标 352 3.3.2 外部接口 352 3.3.3 子系统描述 353 3.3.4 设备驱动程序 353 3.3.5 逻辑文件系统 354 3.3.6 模块 354 3.3.7 数据结构 355 3.3.8 子系统结构 355 3.3.9 子系统依赖性 355 3.4 进程间通信 355 3.4.1 目标 355 3.4.2 外部接口 357 3.4.3 子系统描述 357 3.4.4 数据结构 358 3.4.5 子系统结构 359 3.4.6 子系统依赖性 359 3.5 网络接口 360 3.5.1 目标 360 3.5.2 外部接口 361 3.5.3 子系统描述 361 3.5.4 数据结构 362 3.5.5 子系统结构 363 3.5.6 子系统依赖性 363 第4章 结论 365 附录A 术语定义 366 附录B 参考文献 368 第六部分 附 录 附录A Linux文档工程拷贝许可证 372 附录B GNU通用公共许可证 374
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值