韩顺平_linux_随堂笔记

这还是自己3年前(2011年)整理的笔记,记得当时那会儿自己对Linux还特别的憧憬,也很喜欢韩老师的讲课风格,边看边做笔记乐此不彼,现在开通了技术博客,所以把当年的笔记也放上来和大家分享。同时推荐没有Linux基础又看不下去书的童鞋们也去看看韩老师的视频,入门还是非常不错滴。

一、linux的两个发展方向:
1.linux 系统管理员

2.linux 程序员{linux 软件工程师(PC)

               linux 嵌入式开发(单片机,芯片)}

二、我个人认为学习linux的流程
1.linux 平台上的开发,包括vi,gcc,gdb,make,jdk,tomcat,mysql.. 和linux基本操作

2.加厚C语言功底《C专家编程》或是java语言

3.学习Unix环境高级编程《Unix环境高级编程》

4.linux应用程序开发/linux嵌入式开发

三、成为linux高手的秘诀
思考----实践----再思考----再实践。。

 

1.高效而愉快的学习

2.整体的框架然后细节

3.用到什么学习什么

4.先know how,再know why

5.做了才会

6.适当的囫囵吞枣

7.学习linux是在琢磨别人怎么做,而不是我认为应该怎么做

四、课程内容
1.基础部分

a)linux基础知识

b)linux的常用命令80个

c)linux分区/vi/权限…

 

2.实用部分

a)Samba安装

b)jdk/apache/mysql/ssh/rpm安装与配置

c)linux下网络环境配置

d)linux下java网络编程

e)crontab使用

f)Shell初步介绍

五、3本书(由浅至深)
1.鸟哥的linux私房菜

2.linux编程从入门到精通

3.linux内核完全剖析

 
--第一天、第二天课程
1.Linux关机、重启、注销等基本操作
最最基本的命令:关机、重启、注销当前用户、切换到图形界面、vi编辑

shutdown -h now, poweroff

shutdown -Fr now, reboot

logout, exit

startx

vi



ps:生产环境的关机或重启之前,要输入三次以上sync命令,强制把内存中数据写到磁盘.

2.开发流程,如何在Linux的命令行下开发一个程序
1.vi Hello.java

2.i进入输入状态,

3.esc进入命令模式

4.保存或不保存,:wq或:q!

5.编译Hello.java

 

--如何开发c程序,cpp程序

1.gcc Hello.cpp

2../a.out

gcc -o name Hello.cpp



链表,数组

丢手帕问题,

约瑟夫问题最后一个谁出列

3.Linux常用目录
root,home,bin,sbin,mnt,etc,var,boot,usr

var,存放经常变化的数据,如sock文件

pwd命令查看当前目录

4.linux用户的管理
useradd 

password

userdel   (删除用户,但系统下的用户文件夹还在)

userdel -r username (删除用户且删除用户文件夹)

su 切换用户(只切换用户,不切换用户的环境变量,如需要切换环境变量,用su -)

5.init 指定运行级别,3和5最常用
3.多用户状态有网络服务

5.图形界面

选择默认运行级别 /etc/inittab

 

进入单用户运行级别修改错误配置

redhat在进入grub引导界面的时候,e

高亮第二行 e

空格1 回车

b 启动

6.常用命令:
ls -la

mkdir,rmdir

touch

cp -r 文件 路径

rm 文件名

more

less

grep

|

帮助man

 

find / -name aaa.java

find /root -name aaa.java

 

管道重定向命令

>,>>,<

7.文件所有者,所在组,其他组
ls -ahl

rwx r-x r-x

8.Windows上利用WinISO 软件,制作ISO镜像文件
制作的iso文件可以挂载到Linux中

mount -o loop -t iso9660 /tmp/xxx.iso /mnt/jyzhao

9.linux系统安装软件
1.安装.bin文件

./***.bin

2.安装.tar.gz文件

tar -zxvf ***.tar.gz

3.安装realplayer,qq

4.安装jdk,eclipce,myeclipce.tomcat.

5.安装mysql数据库,oracle数据库

10.分区相关
fdisk -l

df -h

建议新手练习机分以下3个区:

/

/boot

swap



ps:由于LVM的优势明显(可弹性调整文件系统的容量),所以现在生产环境Linux主机的分区基本都是采用LVM的管理方式。

 
--第三天课程
1.Linux下的shell
    查看当前使用的shell种类:env |more

    改变shell命令:chsh -s /bin/bsh

2.TCP/IP基础
    由来:美国国防部

    TCP/IP协议是一组协议:TCP,IP,UDP,ARP,RARP ;

    推荐参考书:TCP/IP详解:协议;    实现;    TCP事物协议 HTTP.NNTP和UNIX域协议    --作者:(美国)史蒂文斯(Seves,W.R.)

    案例:QQ间互相通信(qq1发送“您好” 经过应用层,传输层,网络层,链路层  分别加上了app头,tcp段,ip头,帧头与帧尾,传到网卡,然后经过路由等设备,传到qq2所在的网卡,然后经过4层,
分别去掉加上的东西,发送到qq2上。) ip地址与包的路由传递: 1.ip地址由 网络号 和 主机号 组成,由此分为A,B,C,D,E五类。 2.tracert追踪路由命令 3.ping 测试网络是否畅通 4.在Unix/Linux下查看ip命令 ifconfig 5.netsend "Don't play CS!" 192.168.255.255(广播地址) 6.127.0.0.1 回路,测试自己的。 7.子网, 网关封杀
3.Linux下网络环境配置
    1.(1)setup进入图形界面,然后选择网络配置

       (2)/etc/rc.d/init.d/network restart 命令生效

    2.ifconfig eth0 192.168.88.88(临时生效)

    3.(1)修改/etc/sysconfig/network-scripts/ifcfg-eth0

       (2)/etc/rc.d/init.d/network restart 命令生效

    linux修改主机名:

    (1)hostname newname

    (2)vi /etc/sysconfig/network,修改hostname

    (3)vi /etc/hosts,修改对应的hostname.

linux中所有的设备都是一个文件
4.rpm 红帽包管理
    1.如何查询Linux中安装了那些rpm软件

        rpm -qa

    2.查询是否装mysql

        rpm -q mysql

    3.安装rpm包

        rpm -i RPM包全路径名称

        rpm -ivh RPM包全路径名称

        参数说明:i=install;v=verbose;h=hash.

    4.卸载rpm包

        rpm -e 

        rpm -e --nodeps samba

5.samba安装与配置
Windows之间 网络邻居

Linux 之间 NFS

Windows 和 Linux之间 samba

samba安装步骤

    1.rpm -q samba

    2.如有,卸载

        rpm -e samba

    3.把自己的安装文件,挂载到Linux下

    4.把samba开头的文件,拷贝到/home下

    cp /mnt/cdrom/samba* /home

    5.开始安装

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

    rpm -ivh samba-client-…… .rpm

    rpm -ivh samba-2.2.7…… .rpm

    6.创建一个用户youyou

    useradd youyou

    passwd youyou

    123

    7.设置youyou的samba密码

    (1)cat /etc/passwd | mksmbpasswd.sh >/etc/samba/smbpasswd

    (2)smbpasswd youyou

    8.启动samba服务器测试

    service smb start

    service smb stop

    service smb restart

    9.Windows下输入Linux的ip地址

    //192.168.*.*

    10.samba的详细配置

    某个用户只读权限

 
--第四天课程
1.设置任务调度命令crontab
    1.设置任务crontab -e

    2.每隔一定时间执行命令

        每天2点备份mysql数据库

        0 2 * * * date>>/home/mytest1

        调度文件的规则:

        分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6)

    3.怎样调度多个任务

        1).直接crontab -e 添加 * * * * * cp /home/mytest1 /root  (不推荐)

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

            vi mytask.sh

            赋予mytask.sh 文件可以执行的权限 chmod 744 mytask.sh

            任务调度文件加入调度命令 * * * * * /root/mytask.sh

        3).如何终止任务调度 crontab -r

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

进程的介绍和管理
进程 就是 正在执行的程序;

线程 就是 1)轻量级的进程;

         2)进程有独立的地址空间,线程没有;

         3)线程不能独立存在,它是由进程创建;

         4)相对讲,线程耗费的cpu,内存小于进程。

ps -aux 查看进程

kill 进程号,终止进程

kill -9 进程号,强制终止进程

killall 进程号,终止进程以及子进程

 

top 动态显示进程 

输入u 可以选择输入指定用户;

输入k 可以选择杀掉指定进程;

指定系统状态更新时间 top -d 10(10秒更新);

 

date命令更改系统时间

date MMDDHHMMCCYY.SS  月月日日时时分分年年年年.秒秒

查看月历 cal 3 2003

查看年历 cal 2008

2.监控网络状态信息
netstat -an    netstat -anp

ping

traceroute 

route

3.Mysql数据库在Linux下的使用
1)Mysql的安装
    a.1个安装文件tar.gz,1个jar驱动包;

        解压安装文件

    b.mv 命令 改名文件/文件夹 

    c.继续安装

        (1)groupadd mysql

        rpm -qa mysql 查询是否已经安装

        rpm -e mysql    强制删除:rpm -e --nodeps mysql

        (2)useradd -g mysql mysql 创建mysql用户并把它放入mysql组

        (3)初始化数据库:进入到mysql的文件夹内,输入命令 scripts/mysql_install_db  --user=mysql

        (4)修改文件的所有者:chown -R root .

            修改data文件夹的所有者:chown -R mysql data

            改变用户组:chgrp -R mysql .

        (5)启动mysql

            bin/mysqld_safe --user=mysql &   (&代表后台启动)

            查看mysql的3306端口 netstat -anp |more 

            进入mysql目录下的bin目录下:cd bin

            ./mysql -u root -p

            进入mysql命令行:mysql> show databases;

            》》如果想在任何目录下都可以输入命令直接访问,需要配置环境变量

                    env |more   看到PATH的配置信息

                    在 /root/ .bash_profile  添加/home/mysql/bin

                    任意路径直接输入 mysql -u root -p 即可成功

                    如果在 /etc/.bash_profile 添加,就是系统环境变量

2)Mysql的使用
    注意mysql驱动要存放的位置( 放在主目录下/bin/jre/lib/ext)
    a.建立数据库和表    
        mysql> show databases;

        mysql> create database spdb1;

        mysql> use spdb1;

        mysql> create table users (userID varchar(4),userName varchar(8));

    b.加入部分数据
        mysql> insert into users values('0001','shunping');

        mysql> select * from users;

        mysql> desc users;

    c.编写一个ShowUser.java 文件,在控制台显示用户
        #vi ShowUser.java
import java.sql.*;

class ShowUser 

{

	public static void main(String[] args) 

	{

		//System.out.println("Hello World!");

		//connect to mysql database;

		try{

			Class.forName("com.mysql.jdbc.Driver");

			Connection ct = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/spdb1?user=root&password=");

			Statement sm = ct.createStatement();

			ResultSet rs = sm.executeQuery("select * from users");

			while(rs.next()) {

				System.out.println("username="+rs.getString(1));

			}

		}catch(Exception e) {

			e.printStackTrace();

		}

	}

}

        #javac ShowUser.java
        #java ShowUser
    d.如何使用命令行来备份和恢复mysql数据库
        #mysqldump -u root -p 密码 数据库名 > data.bak        (备份)

        #mysql -u root -p 密码 数据库名 < data.bak        (恢复)

            恢复时,新建一个数据库即可..

            循环备份,例如备份10份,第11份覆盖第一份。

3)Mysql的特点
    免费    跨平台    轻    支持多并发

4)Mysql 在linux下开机自启动设置;
echo "/usr/local/mysql/bin/mysql">>/etc/rc.local  --待验证

 

 
--第五天课程
1.上节回顾(补讲)
    4.ssh(secure shell)的使用
        linux默认安装sshd的服务,并且默认启动,监听的端口是22。

        使用ssh客户端登陆到linux(前提是linux的sshd服务启动)

        踢人:  kill -9 进程号(PID)

    5.ftp的安装与配置
        ╮(╯_╰)╭     课上没有讲哈,ssh太强大,功能都有了..

2.补充讲解linux下的一些重要内容
    a.linux目录结构    当前目录(pwd),相对路径(以当前目录为基点),绝对路径(以/目录为基点),工作目录(tomcat的工作目录是:  ……/bin)

    b.init 运行级别

    c.cd命令什么都不写,会切换到当前用户目录下

    d.常用命令mkdir,rmdir,rm -rf ,touch建立空文件,重定向命令>,>>,< ...

    e.mysql 数据库每天凌晨2点备份,生成的文件名如何以日期命名,确保原来备份的数据不会被后来的覆盖,如果做成循环3天备份更好.

    f.关于shell的补讲:

        (1)环境变量配置

        /etc/profile (配置系统环境变量jdk,tomcat)

        /home/xiaobei/.bath_profile(配置用户的环境变量)

        (2)登录自启动

        把希望用户登录的时候就启动 配置

        /home/xiaobei/.bathrc

        希望所有用户登录时都启动,/etc/.bathrc

        (3)当你希望临时加入一个路径的时候,可以使用export

            比如:export PATH=$PATH:/root

        (4)echo命令

            echo $PATH

            echo $USER

            echo $SHELL

        (5)通配符

            * 多个字符

            ? 一个字符

            [1-6] 范围    ls 100[1-5].gif

        (6)alias用法

             别名:

            mysqldump -u root -p spdb1 >yy.bak

            ls -l /home  

            alias llh='ls -l /home'

3.linux启动过程分析
    a.BIOS自检

    b.启动GRUB/LILO

    c.运行linux内核并检测硬件

    d.运行系统的第一个进程init

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

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

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

        终止以“K”开头的服务

        启动以“S”开头的服务

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

    i.其他特殊服务

4.压缩和解压方法
    a.使用zip,unzip处理.zip文件

        zip aa.zip 文件名

        zip aa.zip 文件名1 文件名2

        zip -r aa.zip 文件夹路径

        unzip aa.zip

    b.使用gzip和gunzip处理.gz文件

5.linux下java网络编程-->myqq
    a.如何使用java进行socket编程

        qq聊天,经过服务器中转.

6.linux面试题评讲
……

你可能感兴趣的:(linux)