13
为什么学习linux
linux是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界的认可,目前很多中型,大型甚至是巨型项目都在使用linux
linux内核:redhat 、红旗linux、ubuntu、suse、fedora,它们的内核都是一样的(Note:linux其实是一个统称,就比如面条是一个统称,可以有哨子面、阳春面、打卤面等)
linux for工作
- linux系统管理员
- linux系统的维护、配置等
- linux程序员
- 需c/c++、java,php、jsp…
- linux软件工程师(PC)
- linux嵌入式开发(单片机、芯片)
如何学习linux
第一阶段:linux平台上的开发,包括vi,gcc,gdb,make,jdk,tomcat,mysql..和linux基本操作
第二阶段:加厚c语言功底《c专家编程》或是java语言
第三阶段:学习unix环境高级编程《unix环境高级编程》
第四阶段:linux应用系统开发/linux嵌入式开发
内容讲解
基础部分
- linux基础知识
- linux常用命令80个
- linux分区/vi/权限…
实用部分
- Samba安装与配置
- linux网络环境配置
- crontab使用
- jdk/apache/mysql/ssh/rpm安装与配置
- linux下java网络编程
- shell初步介绍
推荐书籍
- 《鸟哥的Linux的私房菜 基础学习篇》 鸟哥、许伟、林彩娥等编著
- 《Linux编程从入门到精通》 宫虎波编著
- 《Linux内核完全剖析》 赵炯编著
- vi的使用.PDF
- 《linux命令、编辑器和shell编程》
- 《linux与unix shell编程指南》 PDF格式
- TCP / IP详解,卷1:协议
TCP / IP详解,卷2:实现
TCP / IP详解,卷3:TCP事物协议 HTTP NNTP和UNIX域协议
-----------------------------------
第一天
-----------------------------------
linux视频教程第1讲.基础介绍
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
linux的第一次接触
关机命令
shutdown ‑h now 立即进行关机
shutdown ‑r now 现在重新启动计算机
reboot 现在重新启动计算机
startx 进入桌面 ----- init 3 也可以进入
用户登录
登录时尽量少用root账户登录,因为它是系统管理员,最大的权限,难免操作失误。可以利用普通用户登录,登录后再用“su -”命令来切换成系统管理员身份
mount
用户注销
在提示符下输入logout即可
linux视频教程第2讲. vi编辑器的使用
什么是vi编辑器
vi编辑器是linux下最有名的编辑器,也是我们学习linux必须掌握的工具,在linux下也可使用vi进行程序的开发,如java程序,c程序
如何使用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
vi的使用.PDF
linux视频教程第3讲.用户管理.目录结构
概述
简单介绍
linux的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录
深刻理解linux文件目录是非常重要的
- /
- root,存放root用户的相关文件
- home,存放普通用户的相关文件
- bin,存放常用命令的目录,如vi,su
- sbin,要具有一定权限才可以使用命令
- mnt,默认挂载光驱和软驱的目录
- etc,存放配置的相关文件
- var,存放经常变化的文件,如网络连接的sock文件
- boot,存放引导系统启动的相关文件
- usr,安装软件的默认目录,相当于windows下的program files
- opt 它式测试一些大软件的安装目录,可以方便的删除
常用命令介绍
- pwd,显示当前在哪个路径下
linux的用户管理
- useradd 用户名,添加用户
【案例】useradd xiaoming
- passwd 用户名,为新用户设密码
【案例】passwd xiaoming,修改小明的密码
- userdel 用户名,删除用户
【案例】userdel xiaoming,删除用户但保存用户主目录
【案例】userdel ‐r xiaoming,删除用户以及用户主目录
- logout,当前用户推出
- who am i,当前用户是谁
linux视频教程第4讲.常用命令
linux的常用命令
root=LABEL=/ 1
- 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,显示当前工作目录
- cd,改变目录
- ls,列出文件和目录
- ls ‐a,显示目录下的所有文件,包括隐藏文件
- ls ‐l,显示长列表格式
- ls ‐la,长列表格式显示包括隐藏文件
- mkdir,建立目录
- rmdir,删除空目录
- touch,建立空文件
- mv,移动文件和改文件名
- rm,删除文件和目录
- rm ‐rf ,删除所有内容,包含目录和文件,r表示递归,f表示强制
- cp,复制命令
【案例】cp ‐r dir1 dir2,递归复制命令(复制子目录信息)
- ln,建立符号连接,类似于建立某个文件的快捷方式
- ln ‐s 源目标
【案例】ln ‐s /etc/inittab inittab,inittab指向实际文件/etc/inittab inittab
- more,显示文件内容带分页,shitf + page up上翻,长空格下翻 more haha.txt
- 分页显示文件 ls –l /etc/ | more C+c退出
- less,显示文件内容带分页 less haha.txt q退出 less /etc/ 可以分页显示文件
- grep,在文本中查询内容 grep –n “sd” hah.txt
【案例】假设存在某个文件aaa.java中含有shunping关键字,此时可以使用grep名命令来查找,grep -n “shunping” aaa.java,n表示在第n行出现
- |,管道命令,在linux和unix系统
- 怎么理解?把上一个命令的结果交给|后面的命令处理
【案例】ls ‐l /etc/ | more
- man [command],帮助,类似于dos中的help man ls
- find,搜索文件及目录。在linux中,因为文件系统是以级别式的结构来组成的,所以要在整个系统中找到特定的文件和目录并不是件容易的事。而“find”命令可以解决上述问题
- 在特定的目录下搜索并显示指定名称的文件和目录
【案例】find / -name man:意思是说从根目录开始搜索名称为man的文件或目录
- 搜索一段时间内被存取/变更的文件或目录
- Find /home/ -name xiao*
- 【案例】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
- 压缩和解压
- 以zip和unzip处理.zip文件
- zip -r daming.zip daming/
- 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”来查看压缩包的内容
- 以gzip和gunzip处理.gz文件
-----------------------------------
第二天
-----------------------------------
linux视频教程第5-6讲.文件权限.用户组
用户组
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念
- 所有者
- 所在组
- 其它组
- 改变用户所在的组
所有者
一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者
用ls ‐ahl命令可以看到文件的所有者
也可以使用chown 用户名 文件名来修改文件的所有者
文件所在组
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组
用ls ‐ahl命令可以看到文件的所有组
也可以使用chgrp 组名 文件名来修改文件所在的组
其它组
除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
创建用户,并且同时分配到制定组
添加组 groupadd policeman
删除组 groupdel policeman
查询组 more /etc/group
Useradd –g policeman yzhi 创建用户yzhi,分配到policeman组
Useradd –g thief zcy 创建用户zcy,分配到thief组
root的管理权限可以改变某个用户所在的组
- usermod ‐g 组名 用户名
你也可以用
- usermod ‐d 目录名 用户名,改变该用户登录的初始目录
chown 用户名 文件名来修改文件的所有者
chgrp 组名 文件名来修改文件所在的组
chmod u=rwx,g=rx,o=rx abc
chmod 改变文件或目录的权限 chmod 755 abc:赋予abc权限
rwxr-xr-x r=4,w=2,x=1 因此rwx=4+2+1=7
文件权限
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 表示文件名
vi 查看和修改文件 vi hah.txt
cat 查看文件 cat hah.txt | more
more 查看文件 more hah.txt
改变权限的命令
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中所有用户信息,只可以看不可以编辑
linux视频教程第8讲. linux分区详解
概述
硬盘的分区主要分为基本分区(Primary Portion)和扩展分区(Extension Portion)两种。只是针对一个硬盘来讲,基本分区和扩展分区的数目之和不能大于4个,且基本分区可以马上被使用但不能再分区。扩展分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区。那么有扩展分区再分下去的是什么呢?它就是逻辑分区(Logical Portion),而且逻辑分区没有数量上限制
对windows用户来说,有几个分区就有几个驱动器,并且每个分区都会获得一个字母标识符,然后就可以选用这个字母来指定在这个分区上的文件和目录。它们的文件结构都是独立的,非常好理解。但对这些用户初上手Redhat Linux,可就有点恼人了。因为对Redhat Linux用户来说无论有几个分区,分给哪一个目录使用,它归根结底就只有一个根目录、一个独立且唯一的文件结构。Redhat Linux中每个分区都是用来组成整个文件系统的一部分。因为它采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,并将一个分区和一个目录联系起来。这时要载入的那个分区将使它的存储空间在这个目录下获得
硬盘
对于IDE硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例如:hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区
对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样
几个重要命令
挂载命令
mount [-parameters] [设备名称] [挂载点]
特别说明:在挂载光驱时,可直接使用 mount /mnt/cdrom
【案例】mount /dev/sda1 /test/
卸载命令
umount [挂载点]
【案例】umount /test/
查看磁盘使用情况
df [-parameters]
- df -h 查看磁盘使用情况
- df ‐l
- df [目录全路径],查看某个目录是在哪个分区
查看linux系统分区具体情况
用u盘
fdisk ‐l
mkdir /mnt/usb
mount /dev/sdb /mnt/usb
cd/mnt/usb dir
mount /dev/sda1 /test/
linux视频教程第9讲.linux安装演示
-----------------------------------
第三天
-----------------------------------
linux视频教程第10讲.shell介绍
概述
每个人在成功登陆linux后,系统会出现不同的提示符号,例如$、~、#等,然后你就可以开始输入需要的命令,若是命令正确,系统就会依据命令的要求来执行,直到注销系统为止;在登录到注销期间,输入的每个命令都会经过解释及执行。而这个负责的机制就是shell
shell编程
其实作为命令语言互动式地解释和执行用户输入的命令只是shell功能的一个方面。shell还可以用来进行程序设计。它提供了定义变量和参数的手段以及丰富的程序控制结构。使用shell编程类似于DOS中批处理文件,称为shell script,又叫shell程序或shell命令文件
shell的分类
Shell名称
开发者
命令名称
Bourne
S.R.Bourne
/bin/sh
C
Bill Joy
/bin/csh
Korn
David
/bin/ksh
shell的使用
命令历史和互动:用上下箭头键可以重复以前所输入的命令
命令完成功能:用tab键能自动完成相关命令,再次按tab可得到清单
显示当前操作系统环境变量 env
改变系统使用的shell chsh -s /bin/bash
命令补全功能 Tab 键 (补讲知识)
在用户输入命令时,并不需要输入完整的命令,而系统会找出最符合的名称,这样可以节省经常输入命令的时间。
如:直接输入“mk” —— 再按两下“Tab”键 —— 按下“y” —— 出现以“mk”开头的命令。cat p 在按两下“Tab”键,回出现开头字母为“p”的全部文件和目录。
查看最近使用过的命令 history命令
1、 history 5 :显示最近执行过的5个命令
2、 !5 :执行历史编号为5的命令
3、 !ls :执行最后一次ls开头的命令
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
shell通配符
- *代表多个字母或数字
- ?代表一个字母或数字
【案例】ls a* ls a? ls f080[1-6].tif
- 转义字符\
【案例】ls /mnt/win1/My\Documents
引号
【案例】export NAME=Michael
echo Welcome $NAME, the date is date
- 单引号:不处理任何变量和命令
【案例】echo ‘Welcome $NAME, the date is date ’
- 双引号:处理变量但不处理命令
【案例】echo “Welcome $NAME, the date is date “
- 反引号:把引号中的每个单词作为一个命令,如果是变量则先求值然后作为一个命令处理
【案例】echo “Welcome $NAME, the date is `date` “
别名
- 命令:alias显示系统当前定义的所有alias
【案例】alias cp=’cp -i’
【案例】alias li=’ls –l –color=tty’
shell的修改
chsh –s 输入新的shell
查阅历史记录
- history,查看使用过的命令的历史记录
- history 5,此项说明会显示最近使用的5个命令
- !5,此项说明执行历史编号为5的命令
- !ls,此项说明执行最后一次以“ls”开头的命令
linux视频教程第11讲.tcp.ip基础
概述
TCP/IP是unix/linux世界的网络基础,在某种意义上,unix网络就是TCP/IP,而且TCP/IP就是网络互联的标准,tcp—传输控制协议,ip—internet协议。它不是一个独立的协议,而是一组协议(TCP、IP、UDP、ARP、rarp等协议)每个Internet上的主机和路由器都有一个IP地址,它包括网络号和主机号,现在所用的IP地址都是32位的。IP地址按照国际标准划分为A、B、C、D、E五种类型
linux视频教程第12讲.网络环境配置
- setup/etc/rc.d/init.d/network restart ifconfig
- ifconfig eth0 x.x.x.x 对网卡进行设置 ifconfig eth0 network x.x.x.x 对子网掩码设置
第一种方法
- 用root身份登录,运行setup命令进入到text mode setup utility对网络进行配置,这里可以进行IP、子网掩码、默认网关、DNS的配置
- 这时网卡的配置没有生效,运行/etc/rc.d/init.d/network restart命令我们刚才做的设置才生效
- ifconfig
第二种方法
- ifconfig eth0 x.x.x.x 对网卡进行设置
- ifconfig eth0 network x.x.x.x 对子网掩码设置
- 对广播地址和DNS使用默认的
Note:这样配置网络将会立即生效,但是是临时生效
第三种方法
- 修改/etc/sysconfig/network-scripts/ifcfg-eth0这个文件里各个属性可以修改,包括IP、子网掩码、广播地址、默认网关等
- 这时网卡的配置没有生效,运行/etc/rc.d/init.d/network restart命令我们刚才做的设置才生效
Note:
- 这种方法是最底层的修改方法
- 在linux中,所有设备都是文件
linux视频教程第13讲.rpm包.samba配置
rpm ‐i RPM包全路径名称:安装包到当前系统
rpm ‐ivh RPM包全路径名称:安装包到当前系统,有提示信息
rpm ‐e RPM包的名称 删除RPM包
若让RPM忽略这个错误继续卸载,请使用‐‐nodeps命令行选项 【案例】rpm ‐e ‐‐nodeps foo
rpm ‐U RPM包全路径名 【案例】rpm ‐U cvs-1.11.2-10.i386.rpm
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 查询软件包里面含有x软件包
- rpm ‐q 软件包名:查询软件包是否安装 如rpm ‐q xinetd
- 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 ‐qp jdk-1_5_0-linux-i586.rpm
- rpm ‐qpi jdk-1_5_0-linux-i586.rpm
- rpm ‐qpl jdk-1_5_0-linux-i586.rpm
安装RPM包
rpm ‐i RPM包全路径名称:安装包到当前系统
rpm ‐ivh RPM包全路径名称:安装包到当前系统,有提示信息
- i=install,安装
- v=verbose,提示,即有提示信息
- h=hash,进度条
删除RPM包
rpm ‐e RPM包的名称
【案例】rpm ‐e jdk
如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息,如:
【案例】rpm ‐e foo
removing these packages would break dependencies:foo is needed by bar-1.0-1
若让RPM忽略这个错误继续卸载,请使用‐‐nodeps命令行选项
【案例】rpm ‐e ‐‐nodeps foo
升级RPM包
rpm ‐U RPM包全路径名
【案例】rpm ‐U cvs-1.11.2-10.i386.rpm
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 ‐‐nodeps samba
- 把安装文件挂载到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
- rpm ‐ivh samba-client-2.2.7a-7.9.0.i386.rpm
- rpm ‐ivh samba-2.2.7a-7.9.0.i386.rpm
- 创建一个用户youyou
- useradd youyou
- passwd youyou
- 给youyou设置samba密码
- 将/etc/passwd 中的所有用户添加到smbpasswd用户中
- cat /etc/passwd 显示系统的所有用户
- cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
- smbpasswd youyou,设置密码
- 启动samba服务器,测试
- service smb start,启动
- service smb stop,停止
- service smb restart,重启
wind 下面 cmd \\192.168.121.2地址,可连接samba
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:不仅仅只读,也就是说可以写入
-----------------------------------
第四天
-----------------------------------
linux视频教程第14讲.crontab详解
概述
任务调度:是指系统在某个时间执行的特定的命令或程序
任务调度分类:
- 系统工作:有些重要的工作必须周而复始地执行,如病毒扫描等
- 个别用户工作:个别用户可能希望执行某些程序
-
任务调度命令
设置任务调度文件:/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编程)
Vi mytask.sh 内容 date >> /home/mydate2 cp /home/mydate2 /root
chmod 744 mytask.sh crontab –e * * * * * /home/mytask.sh
- 终止任务调度
- crontab ‐r:终止任务调度(终止所有任务调度)
- crontab ‐l:列出当前有哪些任务调度
linux视频教程第15讲.进程的介绍和管理
概述
查看电子邮件 cat /var/spool/mail/root
- 在linux 中,每个执行的程序都称为一个进程,每一个进程都分配一个ID号
- 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程,例如www服务器
- 每个进程都可能以两种方式存在的,前台与后台。所谓前台进程就是用户目前的屏幕上可以进行操作的,后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行
- 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束
- 进程与线程
- 进程:就是正在执行的程序
- 线程
- 轻量级的进程
- 进程有独立的地址空间,线程没有
- 线程不能独立存在,它是由进程创建
- 相对讲,线程耗费的CPU和内存要小于进程
进程的管理
ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的情况,可以不加任何参数,显示详细的进程信息
- ps ‐a:显示当前终端的所有进程信息
- ps ‐u:以用户的格式显示进程信息
- ps ‐x:显示后台进程运行的参数
- ps ‐aux:显示查看的信息最全
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命令来更改系统的时间
- date MMDDHHMMCCYY.SS:月月日日时时分分年年.秒秒
- 查看月历
- cal 3 2002:查看2002年3月的月历
- 查看年历
- cal 2008:查看2008的年历
linux视频教程第16讲.监控网络状态
几个监控命令
显示网络统计信息的命令netstat
此命令用来显示整个系统目前的网络情况。例如目前的连接、数据包传递数据、或是路由表内容,此命令直接输入即可使用
- netstat ‐anp
- an,按一定顺序排列输出
- p,表示显示哪个进程在调用
检测主机连接命令ping
是一种网络检测工具,它主要是用检测远程主机是否正常,或是两部主机间的介质是否为断、网线是否脱落或网卡故障
- ping 对方ip地址
显示数据包经过历程命令traceroute
此命令可以直接输入使用,用来检测数据包在网络上传输的过程,从本机到远程的主机完整路径,帮助管理员解决问题
显示路由表route
所谓路由是指将数据由来源网络送往目的网络的操作。在大型网络中,路由是非常复杂的,因为数据包在抵目的地时,可能经过的节点有很多,路由表是存储在路由器或一些其他链接设置上的窗体。其中记录着了到指定目的的网络路径,以及这些路径的相关数值
此命令可以直接输入使用,来查看本机路由的情况
linux视频教程第17讲.mysql安装.配置.使用
概述
mysql数据库在linux下可以充分发挥威力,mysql数据库越来越受到软件公司的青睐,为什么呢?
免费、跨平台、轻、支持多并发
在北京很多软件公司属于创业型的中、小公司,从节约成本的角度考虑,mysql特别适合中、小项目
mysql安装
rm –samba-* 删除前缀为samba的文件
- 创建mysql组
- groupadd mysql
- 创建bestsoft用户,并放入到mysql组中
- useradd -g mysql bestsoft
- 进入到mysql文件夹
- 初始化数据库
- scripts/mysql_install_db ‐user=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和密码之间没有空格
-----------------------------------
第五天
-----------------------------------
linux视频教程第18讲.ssh安装.配置.使用
概述
ssh(secure shell)是一款集远程操作linux和进行文件上传和下载的软件,在软件公司几乎所有的linux程序员都会使用ssh。安全、方便是它最大的特点
linux上默认安装ssh服务,且默认是启动的sshd,监听的端口是22。在windows系统上安装SSH客户端 集成了secureCRT与FTP的作用
linux视频教程第19讲.补充linux重要内容
linux视频教程第20讲.linux启动过程分析
runlevel命令,可以查看当前的运行级别
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执行本地特殊配置
- 其他特殊服务
linux视频教程第21讲. java网络编程
linux下网络编程是linux最让程序员着迷的地方,我们看看如何在linux进行网络编程。最终大家可以在这个基础上扩展为my QQ的程序,并且会使用到mysql数据库
你将学习到:
- 如何使用java进行socket编程
- 如何在java中对mysql数据库操作
- windows和linux网络通讯
- 了解什么是网络服务这个晦涩的概念
linux系统作为服务端,代码如下:
windows作为客户端,代码如下:
后记
VM上的Redhat Linux 9.0共享文件夹
步骤如下:
- 启动虚拟机LINUX操作系统,打开Vmware→工具栏→VM→Install Vmware Tools,出现对话框,选择Install,这时在mnt目录下的cdrom目录就可以看到我们要装的软件:
- VMwareTools-5.5.0-13124.i368.rpm
- VMwareTools-5.5.0-13124.tar.gz
- 打开超级终端,输入命令:cd /mnt/cdrom 进入到光驱的目录下
- cp VMwareTools-5.5.0-13124.tar.gz /tmp 把这个文件拷贝到tmp下
- cd /tmp 进入tmp目录,输入ls查看刚才的文件是否在这个目录下
- tar zxvf VMwareTools-5.5.0-13124.tar.gz 解压这个文件
- cd vmware-tools-distrib 进入tmp目录下的vmware-tools-distrib目录
- ./vmware-install.pl 执行这个文件,所有提示都按“Enter”键。安装结束后重启
- 打开Vmware→工具栏→VM→Settings→出现对话框,选择工具栏Options→选左边Shared Folders→选右边的Add→下一步→在出现的对话框的里点Browse(Host folder),来选择所要共享的目录→下一步→选择Enable this share,单击“完成”。在/mnt/hgfs下就有你共享的文件夹