前言: 这个教学视频使用的软件环境是:
Red Hat Linux(Kernel 2.4.20-8)红帽Linux系统[release 9 shrike],在虚拟机中运行
1.成为一个Linux专家的秘籍是:
思考-实践-再思考-再实践……
2.Linux学习方法:
1.高效而愉快地学习:边看视频边操作效率不错;
2.先建立一个整体框架,再细节:高屋建瓴,从宏观上把握知识体系,然后再逐个突破;
3.用到什么学什么:不可能把一个技术事无巨细地都学完,掌握一个基础,其他的等用到了再去学习;
4.先Know How,再Know Why:有些事情不是说做之前都会知道为啥要那样做,先学会,用到的时候就知道为什么了;
5.计算机是一门“做中学”的学科,不是会了再做,而是做了才会:要注重动手能力的培养,想当然是根本行不通的;
6.适当的囫囵吞枣:碰到一些小的牵绊,可以不在此花太多时间被绑在那里,也许你学着学着后边的,会悟懂前边的知识,但是前提是要思考;
7.学习Linux系统是在琢磨别人怎么做,而不是我认为怎么做的过程:站在开发者的角度看问题-他为何那样做,那样设计有什么好处和优势?多思考一下子。
3.linux特点
1.免费的/开源:(大学讲的都是Linux,windows不开源)
2.支持多线程/多用户的
3.安全性好
4.对内存和文件管理优越
4.Linux系统最小只需要4M,就可以跑起来:嵌入式开发
5.缺点:
操作相对困难(困难另一个层面说明有价值)
6.Linux写Java:
VI Hello.java
输入i
输入esc
输入:[wq表示退出保存 q!退出不保存]【注意:一定别忘了输入“:”】
编译Hello.java
运行Hello.class
7.Linux编写C程序:
VI Hello.cpp
输入i
#include <stdio.h>
int main(){
printf("Hello,World!");
return 0;
}
输入esc
输入:[wq表示退出保存 q!退出不保存]【注意:一定别忘了输入“:”】
编译 gcc -v (查看版本) gcc Hello.cpp 【或者可以使用:gcc -o hello Hello.cpp指定别名】
运行 ./a.out 【或: ./hello】
[注:写完之后,再输入“vi Hello.cpp”就会重新打开刚刚写的C++文件]
[注:Linux终端中写程序,是区分大小写的]
[注:这说明,Linux下可以进行Java语言和C语言的开发]
8.shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其它应用程序所调用。用户在提示符下输入的命令都由shell先解释(解释成内核可以执行的代码)然后传给Linux核心。
(相当于中间的翻译官)
shell还可以用来进行程序设计,它提供了定义变量和参数的手段以及丰富的程序控制结构。使用Shell编程类似于Dos中的批处理文件,成为ShellScript,又叫Shell程序或者Shell命令文件。
9.ls 可以看到不同颜色的文件和目录
蓝色→目录
绿色→可执行文件
红色→压缩文件
浅蓝色→链接文件
灰色→其他文件
如果在一些终端下没有颜色,可以使用
ls -color(always,auto,never)
10.cat可以直接将文字文件的内容显示在屏幕上。它反过来写就是tac,而tac恰巧也是一个Linux命令,它的功能就是把文件内容反过来显示,文件内容的最后一行先显示,第一行最后显示
有几种方法:
(1)显示单个文件
例如:显示单个文件file的内容
cat file
(2)在一次显示多个文件时,按顺序处理每个文件
例如:依次显示三个文件file1、file2、file3的内容
cat file1 file2 file3
(3)用户可以将cat命令的执行结果改向到终端或某个文件中去
例如:将三个文件file1、file2、file3的内容依次串接起来,存放到文件file中
cat file1 file2 file3 > file
11.Linux的目录结构
root :存放root用户的相关文件
home :存放普通用户的相关文件
bin :存放常用命令的目录
sbin:要具有一定权限才能使用的命令
mnt:默认挂载光驱和软驱的目录
etc:存放配置相关文件(有关系统设置和管理的文件)
var:存放经常变化的文件
boot:存放引导相关的文件
usr:安装软件时的默认文件夹
dev:接口设备文件目录,如had表示硬盘
proc:当前系统核心与程序执行的信息
tmp:用来存放暂存盘的目录
12.公司服务器上一般不会装图形界面,原因是太耗费cpu和内存资源
13.Linux中,执行命令之后,如果没有任何提示,说明执行成功
14.Linux的运行级别:
0:关机
1:单用户
2:多用户状态无网络
3:多用户状态有网络
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用的运行级别是3和5
要修改系统启动时默认的运行级别可修改文件/etc/inittab 的 id:5:initdefault: 这一行中的数字
*解决错误配置的方法:在进入CRUB引导界面时,输入e,会进入一个选择界面,选择第二行 然后再输入 e ,进入修改界面
在最后输入 1[单用户级别] (输入1的原因:单用户启动的时候不用读 inittab)
然后输入 b ,启动
进入单用户模式,然后再修改配置文件进行恢复
[注:输入1的时候,是有一个空格的]
在图形界面下,切换到root用户:输入“su”命令,然后输入密码即可
15.Linux的命令很多,每个命令还有很多参数,所以,希望大家多问问Google大神
16. 输入命令的时候,按“Tab”键可以智能补全
17.在Linux和Unix系统中|就是管道命令
如何理解?
:把上一个命令的结果交给|后面的命令来处理
例如:ls -l /etc 命令会把etc目录下的文件都展示出来,但是一屏幕展示不完,我们可以这样写:
ls -l /etc | more
这样子,目录内容就会分页显示
18.在现实世界中,有问题找警察;
在Linux世界中,有问题,找男人
man 命令相当于Windows Dos中的help (manual 手册)。 或者使用: logname --help [man logname] 查看命令“logname”的帮助文档
注:输入“:q”退出帮助手册
19.Linux 中的每一个用户必须属于一个组,不能独立于组外。一个用户可以同时属于多个组。
查看Linux所有组的信息:
cat /etc/group
[注:查询结果分析
policeman:X:502:
policeman:组名
X:加密的一个权限
502:组的ID号,唯一
]
查看Linux中所有的用户信息:
cat /etc/passwd
[注:查询结果分析
mikey:x:500:500:mikey:/home/mikey:/bin/bash
用户名:加密过的密码:用户ID:组ID:注释:用户的组目录:该用户使用的shell解析器
]
添加组:
groupadd policeman
创建用户,并同时指定将该用户分配到哪个组:
useradd -g 组名 用户名[注:中间是有空格的]
HomeWork: 建立policeman警察组和bandit土匪组
在policeman组中添加 police110、police111 用户
在bandit组中添加bandit001、bandit002 用户
给新加用户添加统一的密码:123
在police110下创建police110.txt文件并分配权限,然后切换到其他用户查看权限
然后,在root下(自己改不了),把弃暗投明的bandit001改到police组下
20.查看一些Linux的关键配置文件时,建议使用cat命令而不是vi命令,vi命令有可能把文件修改了,从而导致不必要的麻烦。
21. ls -l 查看文件的时候,列出来的文件名前面的数字含义:如果是文件,就是1;如果是文件夹,就显示这个文件夹里面有几个文件,及文件夹里面文件的个数
22.chmod 可以对文件权限进行修改
chmod 777 police110 :777 第一个7代表:修改当前所有者的权限
第二个7代表:修改当前所有者所在组的权限
第三个7代表:修改其他组成员的权限
注:修改一个文件夹的权限之后,里面的文件默认权限不会随着修改
0 表示无权限
1表示可执行 x
2表示可写 w
4表示可读 r
7=1+2+4 即:rwx
23.修改用户所在组:
usermod -g police bandit001 :把bandit001修改到police组下
这样做会使你离开其他用户组,仅仅做为 这个用户组 groupA 的成员。
应该用 加上 -a 选项:
usermod -a -G groupA user
-a 代表 append, 也就是 将自己添加到 用户组groupA 中,而不必离开 其他用户组。
24.jdk的安装步骤:
1)把mypackage.iso挂载到Linux操作系统上 mount /mnt/cdrom/ 然后 cd /mnt/cdrom/ 切换到那个目录下,ls查看,会发现iso文件中的文件内容
卸载:退到根目录,然后使用 umount /mnt/cdrom/
2)把安装文件拷贝到 /home 目录
cp 文件 /home (可以使用tab快捷提示)[在一个系统中可以有两个jdk]
3)cd /home [切换目录到home]
4)安装
./文件名.bin (解压缩)
5)看一个文件 /etc/profile [环境配置文件,非常重要]
6) 配置刚才自己安装的jdk
JAVA_HOME=/usr/java/jdk1.7.0
JRE_HOME=/usr/java/jdk1.7.0/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
使修改生效
[[email protected] local]# source /etc/profile //使修改立即生效
[[email protected] local]#echo $PATH //查看PATH值 查看系统环境状态
7)注销然后重新登录一下
eclipse的安装
1)把mypackage.iso挂载到Linux操作系统上 mount /mnt/cdrom/ 然后 cd /mnt/cdrom/ 切换到那个目录下,ls查看,会发现iso文件中的文件内容
卸载:退到根目录,然后使用 umount /mnt/cdrom/
2)把安装文件拷贝到 /home 目录
cp 文件 /home (可以使用tab快捷提示)[在一个系统中可以有两个jdk]
3)cd /home [切换目录到home]
4)使用 tar -zxvf **.tar.gz (有空格)解压,会发现多了一个eclipse的文件夹,查看这个文件夹下的文件,发现有一个eclipse的可执行文件(绿色的)
tar -zxvf [巧计:他章旭飞 张飞]
5)startx 命令切换到图形化界面
6)./eclipse 运行程序 (注:没有空格;在图形界面点击“注销”,可以退到命令行界面)
myeclipse 的安装:
参照eclipse的安装过程
Tomcat的安装:
参照eclipse的安装过程
启动eclipse(./eclipse) 的时候,若加上一个“&”符号,会释放控制台的控制权给用户(即用户可以使用控制台进行输入,而不是被占用)
安装娱乐软件 realplay.bin
然后一路回车,最后./运行
安装好之后,挂载一个光盘就可以看电影了
然后安装一个QQ for linux
25.Linux好多文件中,是使用“#”来注销的
26.fdisk -l查看的含义:[查看Linux系统分区情况] 列出指定的外围设备的分区表状况。
查询的结果:/dev/sda1
解释:
“sd” 值scss硬盘 “a” 代表第一块硬盘
1 表示第一个分区
注:IDE硬盘使用“hd”表示
例如:hda3 表示:第一个IDE硬盘上的第三个主分区或者扩展分区
展示格式为:hdx~
x表示盘号 (a为基本盘 b为基本从属盘 c为辅助主盘 d为辅助从属盘)
~表示分区 前四个分区用数字1到4表示,他们是主分区或扩展分区,从5开始就是逻辑分区。
如:hdb2 指的是第二个IDE硬盘上的第二个主分区或者扩展分区
主分区不一定只有一个,可以拿来直接使用
27.Linux下磁盘的主分区和扩展分区加起来的数量不能超过4个
扩展分区中可以有逻辑分区
扩展分区不能直接使用,需要分成逻辑分区
逻辑分区的数量没有限制
可以参照Windows的磁盘分区加深理解,计算机-->>管理-->>磁盘管理 分区使用了不同的颜色进行区分
28. 查看某一个目录是在哪一个分区下面
df /boot/
如果我们 umount /boot/ 之后,会发现cd 到/boot/目录下之后,没有文件显示了
mount /boot/ 之后,文件又恢复了显示
说明Linux是使用挂载、卸载的方式使用磁盘中的文件的
我们可以新建一个 test 文件夹 :mkdir test
然后把sda1挂载到test下:mount /dev/sda1 /test/
转到test目录下:cd /test/
查看:ls,会发现sda1盘的内容显示出来了
注:df + 回车 可以查看磁盘使用情况
df -h 查看的界面会更加友好
29. 对Red Hat Linux 用户来说,无论有几个分区,分给哪一个目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构。
30.Linux系统的安装
版本:Red Hat Linux 9.0 英文版
安装方式;
1.独立安装
2.虚拟机安装
a.安装虚拟机,这个比较简单,一路“next”
b.安装Linux 准备好安装文件。 新建虚拟机-->>典型安装-->>勾选Linux(加版本的选择)-->>选一个目录(磁盘空间大点儿的,相当于从window系统上分出来了一块区域,来安装linux)-->>默认网桥-->>填写虚拟机大小-->>OK
此时还不能启动系统
然后点击:菜单中的虚拟机-->>设置-->>CD-ROM-->>使用iso文件来启动 选择linux的iso文件(第一个文件,一共有三个),然后启动虚拟机,开始安装liux
c.安装过程中,可以跳过iso文件检测(CD Testing),按“tab”键选择“skip”-->>选择简体中文-->>默认键盘配置-->>默认鼠标配置-->>安装类型 [个人桌面:普通用户,没有什么开发工具;定制:自己勾选所需要的功能;]-->>磁盘分区:
Linux安装的时候,分区是关键(选手动分区)
/boot 分区 建议100M大小
/swap 分区 即交换分区 一般是物理内存的2倍 但是也不要大于256M(说明:以前内存普遍小,才推荐分内存2倍的,现在内存都是1G开头了,所以不必分内存2倍大了,如果平时要用的程序不大,256MB就可以了) [注意:选择“swap”时,新建的文件类型要选择“交换分区”,和/boot不是一个文件类型]
“/” 根分区 尽可能大一些
防火墙默认-->>系统默认支持语言(中文)-->>设置口令-->>选择软件包组(一般会选“ftp服务器”、“邮件服务器”、“sql服务器”、“开发工具”PS:做java开发的话,一般“开发”这一栏不用勾选,下面的“其他”栏有“最小值”安装和“全部”,“最小值”安装只会装必要的组件,其它的一概不装;而“全部”则会全部选择然后安装)
如果安装过程中提示要换盘时,就在虚拟机的“CD-ROM”中勾选第二张盘,然后继续。
(注:此说明中并不是每一个安装步骤都记载有,只是记载了需要特殊设置或者需要说明的步骤)
31. Linux系统的文件共享
Windows和Windows系统文件共享可以使用“网上邻居”实现
但是如果Linux系统和Windows系统交互呢?
我们可以使用Linux下的samba服务
Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。
32.查看目前使用的是哪种shell
env [该命令可以显示当前操作系统的环境变量]
注:Linux环境变量
Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量。
所以管理环境变量的文件也分为系统级和用户级的
1.系统级:
(1)/etc/profile:该文件是用户登录时,操作系统定制用户环境时使用的第一个文件,应用于登录到系统的每一个用户。该文件一般是调用/etc/bash.bashrc文件。
/etc/bash.bashrc:系统级的bashrc文件。
(2)/etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。
2.用户级(这些文件处于家目录下):
(1)~/.profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。这里是推荐放置个人设置的地方
(2)~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。不推荐放到这儿,因为每开一个shell,这个文件会读取一次,效率肯定有影响。
3. ~/.bash_profile or ~./bash_login:当这个文件存在时,在登录shell时会读取./bash_profile文件,而不是.profile文件。当查找的资料中需要你修改.bash_profile文件,但却你没有该文件的时候,也可以修改 .profile 来完成 实现。
33.shell不止一种,使用“ls -l /bin/*sh”可以查看当前系统中有几种shell
4.修改完成后,使用 source /etc/profile 命令进行更新
修改shell:“chsh -s 输入新的shell”,如:“chsh -s /bin/csh” 注:我们平常用的是 “sh”
34.非常有用的命令补全功能:
是指用户输入命令时,并不需要输入完整的命令,而系统自动会找出最符合的名称。
如:直接输入“mk”-->>按两下“tab”-->>出现开头两个字母为“mk”的命令,然后选用要用的那个命令即可
35.man命令查看帮助时,输入“q”可以退出
36.在Linux下,我们有时可能希望知道或是使用最近执行的命令,history可能会帮上大忙。
history 5:此项说明会显示最近使用的5个命令
!5:此项说明执行历史编号为5的命令
!ls:此项说明执行最后一次以“ls”开头的命令
37.学技术要厚积薄发!
38.Linux/Unix的世界就是网络的世界,而网络的基础就是TCP/IP,所以一个优秀的linux/unix程序员必须了解并掌握tcp/ip
TCP/IP协议不是一个独立的协议,而是一组协议
层是一个逻辑的概念,不是具体的可以看到的
从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层[链路层]、网络层、传输层、应用层。
百度百科定义:Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台电脑规定一个地址。
tcp/ip 可以说是一种语言,计算机之间交流的语言
38.QQ 传输过程的解析:
A客户端发送-->>"你好"
应用层-->>加上应用程序的标识:"app 你好"
传输层-->>加上tcp前端标识:“tcp app 你好”[tcp段]
ip层-->>加上ip头:“ip tcp app 你好” [发送到哪个地址][称为数据包]
链路层-->>加上帧头和帧尾:“帧头 ip tcp app 你好 帧尾”
网卡--路由--对方网卡--反过程解析……对方接收到“你好”
黑客有可能在ip层进行攻击,对ip地址等信息进行修改
39. Windows下使用"ping www.baidu.com"可以直接查看百度的IP地址
40.Dos下追踪路由命令:tracert
如:tracert www.baidu.com
41.在Linux/Unix下查看ip情况的命令是 ifconfig
eth0 代表第一块网卡
lo 代表回路
42.127开头的ip地址可以回路(不一定是127.0.0.1,可以是任意范围内的数字)
43.linux网络环境配置 [1]
1)使用root身份登录,运行setup命令进入到text mode setup utiliy对网络进行配置。这里可以进行ip、子网掩码、默认网关、dns的配置
2).这时网卡的配置没有生效,运行/etc/rc.d/init.d/network restart 命令之后,我们刚才的配置才生效
44. linux网络环境配置 [2]
(1)ifconfig eth0 192.168.x.x 对网卡进行设置
(2)ifconfig eth0 network x.x.x.x 对子网掩码进行设置
注意:这样配置网络会立即生效。但是是临时生效,使用ifconfig查看是改变了,重启机器之后,会恢复成设置前的地址
45. linux网络环境配置 [3]
(1).修改/etc/sysconfig/network-scripts/ifcfg-eth0这个文件里各个属性可以修改,包括ip、子网掩码、广播地址、默认网关
(2)这时网卡的配置没有生效,要运行/etc/rc.d/init.d/network restart 命令,我们刚才做的设置才会生效
重启网络服务还可以使用:service network restart
注:这是最根本的一种该法,上面两种设置方法最终就是修改这个文件的内容
文件内容简介:
DEVICE=eth0 :网卡名称
ONBOOT=yes :随系统的启动而生效,如果改成no,就相当于把这个网卡给禁用了
ROOTPROTO=dhcp :指的是动态分配IP地址(dhcp),静态指定是(static) Dynamic host configuration protocol
IPADDR=192.168.2.22 :IP地址
NETMASK=255.255.255.0 :子网掩码
GATEWAY=192.168.2.254 :默认网关
46.在Linux中,所有的设备都是文件
这样子编程会比较方便,比如说网卡,Linux把网卡的配置当成一个文件来管理,这样设置起来就很方便了
47.两个网络在同一个子网里面,才可能ping通
如果想让Windows ping通虚拟机中的Linux,可以把Linux中的Ip地址设置成和Windows中的虚拟网卡ip地址在同一网段,然后就可以联通了
(注:在虚拟中中,要选择:vm-->>Setting-->>Ethernet-->>Custom:Specific virtual network,选一个虚拟网卡,本机上选的是VMnet8(NAT))
在windows网络中查看,vmnet1和vmnet8 是安装虚拟机时,虚拟的两块网卡
48.如何查询Linux中安装了哪些rpm软件? [Redhat Package Manager:RPM软件包管理器]
[注:这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。]
rpm -qa 注:qa指queryall
(注意:在CentOS系统中命令无效)
49.安装rpm包:
rmp -i rpm包全路径名称:安装包到当前系统
rmp -ivh rpm包全路径名称:安装包到当前系统有提示信息
参数说明:
i:install
v:verbose 提示
h:hash 进度条
删除rpm包:rpm -e jdk
如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误的信息
如果忽略这个错误信息继续卸载,使用 --nodeps命令行选项(不要轻易使用,会破坏两个软件的依赖关系)注:有两个“-”
"rpm -e --nodeps samba"
升级rpm包:
rpm -u RPM包全路径包
50.samba的安装步骤
1)看看是否已经安装了samba
rpm -q samba (或者输入:setup ,选择“System services”,往下翻页,会发现一个“smb”的服务项,这个就是samba的服务)
PS:SMB是Server Message Block的缩写,即为服务器消息块
2)如果有,可以先卸载 rpm -e samba
3)把自己的安装文件,挂载到Linux下
4)把samba开头的文件,拷贝到指定目录,准备安装
cp /mnt/cdrom/samba* /mypackage
5)开始安装
a.先安装common
b.再安装client
c.再安装samba
6)创建一个用户 mysamba
useradd mysamba [这种创建方式会默认创建一个同名的用户组,然后把此用户放在这个同名的用户组下]
passwd samba 回车,然后输入新密码
这只是登录到系统的密码,还要设置“samba”的密码
7)给mysamba设置samba密码
将/etc/passwd中的用户都加到smbpasswd中
“cat /etc/passwd | mksmbpasswd.sh>/etc/samba/smbpasswd”
:设置用户mysamba的samba密码
解释:把“cat /etc/passwd”的执行结果交给“mksmbpasswd.sh”脚本处理,然后放在“/etc/samba/smbpasswd”(samba密码)里面
(注:redhat linux 9下没有找到“smbpasswd”文件,但是找到了一个“smbusers”文件)
smbpasswd mysamba :设置samba密码
自己设置的新密码是:"mysamba"
8) samba服务相关
service smb start 可以通过/etc/init.d/smb start/stop/restart来启动、关闭、重启Samba服务
service smb stop
service smb restart
查看samba的服务启动情况 service smb status
重新加载配置(修改了/etc/samba/smb.conf文件之后) service smb reload
设置开机自启动 chkconfig --level 35 smb on //在3、5级别上自动运行samba服务
Samba安装好后,使用testparm命令[巧计:怕人吗?]可以测试smb.conf配置是否正确。使用testparm –v 命令可以详细的列出smb.conf支持的配置参数。
9)自己设置的Linux的IP地址是:192.168.0.22 (注意:要和虚拟网卡的ip设置成同一网段内,同时,在虚拟机的网络适配器设置中,要选上自定义中自己选择要用的那个网卡)
10)samba 使用windows客户端访问共享文件夹时如果报错
:您没有权限访问\\,请与网络管理员联系请求访问权限
就把SELinux暂时停掉:
#setenforce 0
51.任务调度 crontab
概念:是指系统在某个时间执行的特定的命令或程序。
作用:比如定期备份数据库数据(每日,在晚上备份,用户少的时候)
1)设置任务:crontab -e
2)每隔一定时间去执行 date>/home/mikey/mydate(把当前时间写在文件中)
(1)每天凌晨两点半去执行 date>>/home/mikey/mydate2 (>>表示追加内容到文件中)
可以在crontab -e中加入:0 2 * * * date>>/home/mikey/mydate2
然后退出,wq保存即可
(2)每分钟去执行
* * * * * date>>/home/mikey/mydate2
3) 在crontab -e[中间是要有空格的]中加注释,使用“#”符号
4)怎样去调度多个任务?
(1)在crontab -e中直接写。这个方法比较原始,不推荐
(2)【推荐方式】可以把所有的任务,写入到一个可执行文件(shell编程)
Linux中shell文件,一般用“.sh”结尾
注意:写好.sh文件之后,需要赋给用户可执行的权限
在crontab 下执行可执行文件,只需要写好可执行文件所在的目录即可。
5)如果终止任务
crontab -r:终止任务调度
执行之后,会发现,crontab -e里面没有东西了
crontab-l:列出调度任务
52.DOS中,netstat -an 可查看监听
Linux中:
netstat –a 本选项显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请求(LISTENING)的那些连接。
netstat –n 显示所有已建立的有效连接。
netstat -ano|findstr "8080" :有针对性的查看端口
如:查看1521的端口信息: netstat -ano|findstr "1521" 执行结果如下:
TCP 0.0.0.0:1521 0.0.0.0:0 LISTENING 2488
TCP [::]:1521 [::]:0 LISTENING 2488
最后一列为PID,对应的Windows任务管理器的“服务”选项卡PID为2488
经测试,在CentOS 6.4下,findstr 不管用,可改为:
netstat -an|grep "9265" 命令来查看9265端口的情况
记录:端口越多,越危险。当系统管理员时,要尽可能关闭一些不用的端口
53.衡量一个操作系统好不好,主要取决于这个操作系统最多支持多少个用户同时使用。
将来你们迟早会去了解TCP/IP的。 From:韩顺平老师
Samba服务器虽然可能不经常用,但是必须得会,它很基础,很经典。
Linux ssh是个客户端,各个PC用户可以通过ssh客户端来访问Linux系统,通过sshd服务(service)
54.
进程和线程的概念
进程:可以理解为正在运行的程序
线程:1)轻量级的进程
2)进程有独立的地址空间,线程没有
3)相对来讲,线程不能独立存在,它是由进程创建的。(linux 中一般是 fork)
4)相对讲,线程耗费的CPU和内存小于进程
55. 》在Linux中,每个执行的程序都称为一个进程。每一个进程都分配一个ID号。
》每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。
》每个进程都可能以两种方式存在:前台和后台,所谓前台进程就是用户当前的屏幕上可以进行操作的(如:VI);后台进程则是实际在操作,但由于屏幕上无法看到该进程,通常使用后台方式自执行。
》一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。
ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任务参数。
ps -a :显示当前中断的所有进程信息
ps -u:以用户的格式显示进程信息
ps -x:显示后台进程运行的参数
ps -aux 看的比较全面,信息也全面。[巧记:奥克斯]
56.终止进程 kill/killall
若是某个进程执行一半需要停止时,或是已消耗了很大的系统资源时,可以考虑停止该进程。使用kill命令来完成此项任务。
kill 16251 :终止进程号为16251的进程。
kill -9 16251:因为有些进程会捕捉某些信号,如果直接不能结束进程可以用“-9”传送信息。[巧记:就(9)是要杀死]
运行命令:killall -9 bash 后,所有bash都会被卡掉了,所以当前所有连接丢失了。需要重新连接并登录。
57.动态监控进程top
top和ps命令很相似,它们都用来显示正在执行的进程。top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。
1).监视特定用户
top:输入此命令,按回车键,查看执行的进程。
u:然后输入“u”回车,再输入用户名,即可
2).终止指定的进程。
top:输入此命令,按回车键,查看执行的进程。
k:然后输入“k”回车,再输入要结束的进程ID号
3)执行系统状态更新的时间:
top -d 10:指定系统更新进程的时间为10秒
4)按“q”退出
展示信息解释:
load average: 0.00, 0.04, 0.05
这个是当前系统的负载情况,当这三个数值平均数大于“0.6”的时候,就要格外注意了,说明系统资源已经很紧张了。
58.Ⅰ.date命令:显示系统的时间。可以直接输入:“date”,来查看系统的时间。
Ⅱ.利用date命令来更改系统时间。
date MMDDHHMMCCYY.SS:意思是 月日时分年.秒
Ⅲ.查看月历:
cal 3 2002:查看2002年3月的月历。
Ⅳ.查看年历:
cal 2013:查看2013年的年历
Ⅴ.输入:cal,默认查看的是本月的月历
59.监控网络统计信息的命令netstat:
此命令用来显示整个系统目前的网络情况。例如目前的连接、数据包传递数据、或是路由表内容。此命令直接输入即可使用。
如:netstat[记忆:net为网络,stat为状态,连起来就是“网络状态”] -an an表示按照端口号进行排序
netstat -anp :会显示进程号出来
检测主机连接命令ping:
是一种网络监测工具,它主要是用来检测远程主机是否正常。或是两部主机间的介质是否为断,网线是否脱落或网卡故障。
如:ping 对方ip地址
60.显示数据包经过的历程命令:traceroute (这个命令网关用的挺多的)
此命令可以直接输入使用,用来检测数据包在网络上传输的过程。从本机到远程的主机完整路径。帮助管理员解决问题。
traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。
traceroute www.baidu.com
route 所谓路由是指将数据由来源网络送往目的地网络的操作。在大型网络中,路由是非常复杂的,因为数据包在抵达目的地时,可能经过的节点有很多,路由表是存储在路由器或一些其他链接设置上的窗体。其中记录着了到指定目的地的网络路径,以及这些路径的相关数值。
此命令可以直接输入使用,来查看本机路由的情况。
61.程序里最原始的东西往往是很复杂的,底层代码往往比较难以阅读和理解
62. ssh
概述:ssh(secure shell)是一款集远程操作linux和进行文件上传、下载的软件,那是相当的好用!在软件公司几乎所有的Linux程序员都会使用ssh。安全、方便是它最大的特点。
63.mysql备份数据库,.bak文件中记录的是表的创建语句和数据录入语句等。
如果连库都被删除了,要恢复数据时,需要先建一个空的数据库,然后进行数据恢复。
63.window通过ssh连接Linux的前提:
1)两台机器要可以 ping 通
2)Linux端sshd服务要启动,默认安装有这个服务,默认端口为:22
3)Windows安装ssh客户端
64.踢一个用户下线,假设他是黑客:
1)netstat -anp | more ,查看进程号(需要Root,才可以看到进程号)
2)kill -9 进程号 OK,已经成功踢出该用户
65.对Linux的目录结构,要非常清晰,如:/bin、/boot等,详细内容见图
66. 当前目录(pwd)、相对路径、绝对路径、工作目录的概念
pwd 查看当前所在目录的绝对路经
cd .. 回当前目录的上一级目录
cd - 回上一次所在的目录
cd -p aa/bb/cc直接创建多级子目录
cd ~ 或 cd
回当前用户的宿主目录
cd ~用户名
回指定用户的宿主目录(注意,“~用户名”之间没有空格)
工作目录:如Tomcat的工作目录是 D:\servers\apache-tomcat-6.0.35\bin 根据软件、项目不同,工作目录也是不一样的
rmdir :删除空目录 如果不为空,会报错:rmdir: failed to remove `myfolder/‘: Directory not empty
rm -rf :删除非空目录
拷贝文件夹:
如果我们直接这样用:cp Folder01/ FolderAll/(把当前路径下的“Folder01”文件夹拷贝到"FolderAll"文件夹下),会报错:cp: omitting directory `Folder01/‘
然后,我们可以使用:
cp -r Folder01 FolderAll/ 进行拷贝
如果想要覆盖拷贝,可以加上: cp -rf Folder01 FolderAll/ ,这个时候,系统不会询问是否覆盖,而会直接进行覆盖操作
67. ln :建立符号连接[巧计:link] 有些像Windows中的快捷方式
ln -s 源 目标
如:ln -s /etc/inittab inittab
(inittab 指向实际文件/etc/inittab)
我们编辑链接文件,会直接更改原文件,但是删除链接文件,并不会影响原文件。
68.shell使用
用户登录后自动执行的shell脚本文件:
bashrc 位于主目录下
它之前执行系统的脚本:/etc/bashrc主要是基本配置数据bash_profile 位于主目录下,它之前执行系统的脚本 /etc/profile 主要是配置环境变量
》配置.bashrc文件可以指定某些程序在用户登录的时候就自动启动
在/home/用户 目录下
如果希望所有的用户登录的时候,都执行一段程序,可以写到“/etc/bashrc”文件里面
“etc”目录下是指系统的,而“/home/用户”下面配置的是用户单独的
69.export的使用
export PATH=$PATH:$HOME/bin:/root/test/t1
:输出环境变量PATH 引用原来的值$PATH $HOME 表示工作主目录 :是路径分隔符
已定义好的环境变量:
SHELL : 默认shell
PATH :路径
USER :当前登录用户的用户名
注意大小写
显示变量内容: echo $PATH
echo $USER
echo $SHELL
env 查看当前环境变量的配置
当你希望临时加入一个路径时,使用export
比如:export PATH=$PATH:/root 把/root 路径配置到系统路径中
70.shell通配符的使用
* 代表多个字母或数字
? 代表一个字母或数字
71.alias用法
比如: ls -l /home
取别名
alias llh=‘ls-l /home‘ [注:“=”前后没有空格]
72. 使用zip和unzip压缩和解压
zip aa.zip 文件名 (压缩一个文件)
zip aa.zip 文件名1 文件名2(压缩多个文件)
zip -r aa.zip 文件夹路径(压缩一个文件夹)
73.很多时候,程序写一遍什么都会了,就是不要有惧怕的情绪。越是不敢去写,越是什么都不会。
74.linux下网络编程是Linux最让程序员着迷的地方。QQ点对点传输时,使用的是socket编程
75.java socket编程,Windows客户端向Linux socket 服务器端发送消息时,记得切换到root用户,把Linux的防火墙关闭 [service iptables stop]
76.感谢韩老师的无私分享!