Linux操做系统学习html
linux的特色java
优势:node
一、免费的/开源的系统mysql
二、支持多线程/多用户的系统linux
三、安全性好c++
四、对内存和文件管理优越程序员
linux体积最少只须要内存4M,因为小因此能够作嵌入式开发web
缺点:sql
操做相对困难shell
Linus于1991年至1994年将unix的微型版minis加以开发出linux
如今redhat红帽子、BSD、SUN等公司进行再发行
在windows环境下可使用(VM等)虚拟机来运行linux
在linux运行startx命令能够进入图形操做界面
root是linux下的系统管理员
普通用户登录后能够用su- 切换为系统管理员
关机命令
shutdown -h now 马上进行关机
shutdown -r now 如今从新启动计算机
reboot 如今从新启动计算机
logout 注销
vi编辑器是linux下最有名的编辑器,也是学习linux必须掌握的工具,
在unix下也可以使用vi进行程序的开发
linux能够作java/c开发
在linux的vi编辑器内写一下简单的java程序“hello,world”
一、Vi Hello.java
二、输入i[进入到插入模式]
public class hello{
public static void main(String []args){
System.out.println("hello,world");
}
}
三、输入esc键[进入命令模式]
四、输入wq保存退出/q!退出但不保存
六、编译javac hello.java
javac Hello.java
七、运行 java Hello [java运行的是class文件]
ls命令显示当前文件
ls -l命令显示详细文件列表
如何在linux下开发c程序或是c++(cpp)程序
创建vi hello.cpp
#include <stdio.h>
int main(){
printf("hello!");
return 0;
}
gcc hello.cpp 用gcc编译器编译出来未命名会是a.out文件
gcc -o [文件名] [源文件名] 用gcc编译器编译文件命名
/a.out 在linux下运行c程序只要输入/就能够运行
------------------------------------------------------------
linux下的文件目录
linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层
是根目录“/”,而后在此目录下再建立其余的目录
深入理解linux文件目录是很是重要的。
linux下的根目录中重要的目录以下是系统自动分配的
root目录、home目录、bin目录、sbin目录、mnt目录、etc目录、var目录、boot目录、usr目录、tmp目录(均为同级目录)
root目录:用于存放root用户相关文件的目录
home目录:用于存放普通用户的相关文件的目录
bin目录:用于存放经常使用命令的目录
sbin目录:用于存放要具备必定权限才可使用的命令的目录
mnt目录:用于默认挂载软驱、光驱的目录
etc目录:用于存放配置相关的文件的目录
var目录:用于存放常常变化的文件的目录
boot目录:用于存放系统引导文件的目录(重要)
usr目录:用于存放安装的默认目录(安装文件会默认安装在usr目录里)
tmp目录:用于存入临时文件的目录
cd /返回到主目录下
ls与dir功能相同显示目录名
显示当前在哪一个路径下面
pwd命令是显示当前在哪一个路径下
--------------------------------------------------------------
linux的用户管理(普通用户没法使用)
useradd命令:useradd 用户名(添加用户)
passwd命令:passwd 用户名 (修改用户密码)
userdel命令:userdel 用户名 (删除用户)
userdel -r 用户名(删除用户以及用户主目录)
--------------------------------------------------------------
linux的经常使用命令
指定运行级别
命令:init[012356]
运行级别
0:关机
1:单用户
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
经常使用运行级别是3和5,要修改默认的运行级别可改文件/etc/inittab的
id:5:initdefault:这一行中的数字
在启动引导界面的时候按e进入编辑,在进入grub引界面时,请输入e在选中第二个选项按e,在最后输入 1[单用户级别] 而后按b进入单用户模式。
*:可经过此方法进行linux用户密码的修改
--------------------------------------------------------------
linux经常使用命令(2)
命令pwd [显示当前工做目录]
命令cd [改变目录]
命令ls [列出文件和目录]
ls -a 显示隐藏文件
ls -l 显示长列表格式
命令mkdir [创建目录]
命令rmdir [删除空目录]
--------------------------------------------------------------
linux经常使用命令(3)
tab键能够补全相应内容
命令touch [创建空文件]
命令cp [复制命令]
cp -r dir1 dir2递归复制命令(复制子目录信息)
命令mv [移动文件和改文件名]
命令rm [删除文件和目录]
rm -rf * [删除全部内容(包括目录和文件)r递归f强制]
命令ln [创建符号链接]
ln -s 源目标
ln -s /etc/inittab inittab [inittab指向实际文件/etc/inittab]
-------------------------------------------------------------------
linux经常使用命令(4)
命令more [显示文件内容,带分页]
命令less [显示文件内容带分页]
命令grep [在文本中查询内容] grep -n "查找内容" [文件名]
命令| [管道命令] 在linux和unix系统中|就是管道命令,把上一个命令的
结果交给|的后面的命令进行处理
命令man [至关于dos下的help]
例:Grep –n “查找内容” [文件名] | more
-------------------------------------------------------------------
linux经常使用命令(5)
命令find [搜索文件及目录]
在linux中,由于文件系统是以级别式的结构来组成的,因此要在整个系统中找到特定的文件和目录并非件容易的事。而"find"命令能够解决上述问题。
一、在特定的目录下搜索并显示指定名称的文件和目录
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的文件
-------------------------------------------------------------------
linux经常使用命令(6) 以文件头字段来断定文件类型,并不是以文件后缀名来断定。
重定向命令:管道定向命令">"为覆盖,">>"追加写在原文件内容后面
ls -l > a.txt 列表的内容写入文件a.txt中(覆盖写)
ls -al >> aa.txt列表的内容追加到文件aa.txt的末尾
从文件中输入信息database_program<database_data
-------------------------------------------------------------------
文件全部者、所在组和其它组
在linux中的每一个用户必需属于一个组,不能独立于组外。在linux中每一个文件有全部者、所在组、其它组的概念。
(1)全部者
通常为文件的建立者,谁建立了该文件,就是自然的成为该文件的全部者。
用[ls -ahl]命令能够看到文件的全部者
你也能够用[chown 用户名 文件名]来修改文件的全部者。
(2)所在组
当某个用户建立了一个文件后,这个文件的所在组就是该用户所在的组。
用[ls -ahl]命令能够看到文件的全部组。
你能够经过[chgrp 组名 文件名]来修改文件所在的组
(3)其它组
除开文件的全部者和所在组的用户外,系统的其它用户都是文件的其它组。
(4)改变用户所在的组
在添加用户时,能够指定将该用户添加到哪一个组中,一样的用root的管理权限能够改变某个用户所在的组:
usermod -g 组名 用户名
你能够用
usermod -d 目录名 用户名 改变该用户登录的初始目录
如何在linux中添加组
须要用root用户来添加,普通用户没法进行用户和组的添加
添加组命令:groupadd 组名
查看linux中全部组的信息
命令:vi /etc/group
查看命令:cat /etc/group
组名:x:组ID号:
建立用户,并同时指定将该用户分配到指定组。
命令:useradd -g 组名 用户名
查看linux中全部用户信息
可编辑查看命令:vi /etc/passwd
查看命令:cat /etc/passwd
用户名:x:用户ID:用户所在组ID:注释:/用户主目录/:该用户所用的shell解释器
设定密码
命令:passwd 用户名
- rw- r-- r--
-为文件类型,-为普通文件,d为文件夹,l为连接
rw-文件的全部者对该文件的权限。权限分三种一、r可读也会用4表示;二、W可写也会用2表示;三、X可执行也会用1表示。
r--文件所在组对该文件的权限
r--其它组的用户对该文件的权限
如何修改文件的访问权限的问题?
注:修改文件访问权限只有root用户和文件全部者。
查看当前操做人员命令who am i
命令chmod为修改文件访问权限的命令。
chmod 777 用户名
解释:
- --- --- --- 000
- r-- r-- r-- 444
- rw- rw- rw- 666
- rwx rwx rwx 777
- rwx rw- r-- 764
Linux下程序安装
javaee开发环境搭建,JDK的安装
概述:要在linux下开发java程序,则须要安装JDK。实际上目前有不少java后台程序就是运行在linux环境下运行的。也是未来的发展趋势。
JDK的安装步骤:
一、把镜像ISO文件挂载到linux操做系统上。(linux系统是用挂载和卸载来管理分区文件的。)
在虚拟机上作好配置,在根目录下进行操做:
挂载光驱命令:mount /mnt/cdrom/
挂载光驱
卸载光驱命令:umount /mnt/cdrom/
二、把安装文件copy到/home目录下(文件名过长要用tab键来自动补全文件名)
命令:cp 文件名 /home
三、切换目录到/home
命令:cd /home
四、安装(./)是解压缩命令
命令 ./ 安装文件名.bin
输入yes后开始安装,输入no不安装。
五、看看一个文件 /etc/profile (环境配置文件)
linux下用#来做注释。
六、配置profile环境配置文件
-------------------------------------------------------------------
javaee开发环境搭建 eclipse的安装
概述:要在linux下开发java程序。则须要安装JDK,若是要在集成开发工具(IDE)下开,能够安装eclipse软件。
eclipse安装
一、挂载eclipse.iso文件
二、将eclipse复制到/home目录下
三、安装
tar.gz文件的安装命令:tar -zxvf 文件名.tar.gz
四、启动eclipse[进入图开界面]
打开终端控制台
进入eclipse文件后
./eclipse
myeclipse安装同上需在图形界面下安装
JDK/eclipse/myeclipse三个按顺序安装后才可使用J2EE的开发
-------------------------------------------------------------------
javaee开发环境搭建 tomcat的安装
概述:咱们知道javaee的服务器有tomcat、jboss、weblogic、websphere、resin...这些均可以安装到linux下,咱们给你们安装tomcat
tomcat用于开发小、中型项目(免费)jboss也是免费的。
weblogic、websphere用于开发大型项目(收费)
安装同上
注释重点:
bin文件安装使用./ 文件名.bin
tar.gz文件安装使用tar -zxvf 文件名.tar.gz
unzip解压缩zip文件:unzip 文件名.zip
zip压缩文件:zip 压缩包文件名.zip 要压缩的文件名
在图形界面下运行文件后要加&进行后台运行
控制台下运行文件命令./文件名 &
./eclipse &
-------------------------------------------------------------------
javaee开发环境搭建 Mysql数据库的安装
概述:毫无疑问,没有数据库,javaee项目将会暗淡无光,因此咱们必须掌握如何在linux下安装和使用数据库。在linux下除了microsoft的sql server不能安装外,其它主流的数据库均可以安装。好比Mysql、oracle、db2...关于如何在linux下安装Mysql数据库咱们在后面讲解,各位同窗能够问问google大神,看看能不能本身搞定!
-------------------------------------------------------------------
linux下娱乐软件 realplay
概述:linux下同样有不少娱乐软件,好比播放影的软件之王realplay。咱们给你们演示一下。请注意此次我用的是.bin的安装文件。
安装realplay
一、把安装文件copy到home目录去
二、安装./realplay
-------------------------------------------------------------------
linux分区(1)
概述:首先咱们要对硬盘分区的基本概念进行一些初步的了解,硬盘的分区主要分为基本分区(Primary Partion)和扩展分区(Extension Partion)两种,基本分区和扩展分区的数目之和不能大于四个。且基本分区能够立刻被使用但不能再分区。扩展分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区。那么由扩展分区再分下去的是什么呢?它就是逻辑分区(Logical Partion),并且逻辑分区没有数量上限制。
-------------------------------------------------------------------
linux分区(2)
对windows的用户来讲,有几个分区就有几个驱动器,而且每一个分区都会得到一个字母标识符,而后就能够选用这个字母来指定在这个分区上的文件和目录,它们的文件结构都是独立的,很是好理解。但对这些用户初上手Red Hat Linux吗,可就有点恼人了。由于对Red Hat Linux用户来讲不管有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且惟一的文件结构。Red Hat Linux中每一个分区都是用来组成整个文件系统的一部分,由于它采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下得到。下面咱们先来看看Red Hat Linux的驱动器是如何标识的。
/dev/sda1
sda1:sd硬盘类型,a第一块硬盘,1表明分区
-------------------------------------------------------------------
linux分区(3)
对于IDE硬盘,驱动器标识符为"hdx~",其中"hd"代表分区所在设备的类型,这里是指IDE硬盘了。"x"为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),"~"表明分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。对于SCSI硬盘则标识为"sdx",SCSI硬盘是用"sd"来表示分区所在设备的类型的,其他则和IDE硬盘的表示方法同样。
-------------------------------------------------------------------
linux分区(4) 几个重要的命令
挂载命令
mount [-参数][设备名称][挂载点]
特别说明:在挂载光驱时,可直接使用mount /mnt/cdrom/
卸载命令
umount [设备名称]
查看磁盘使用状况
df [参数]
好比 df -l
查看某个目录是在哪一个分区
df -h
查看分区(磁盘)使用状况
df [目录全路径]
查看linux系统分区具体状况
fdisk -l
-------------------------------------------------------------------
linux安装
linux安装有两种方式
一、双操做系统
二、彻底独立安装
linux安装时,分区是关键
一、/boot引导分区 100M
二、/swap交换分区通常是你的物理内存的2倍,但不要大于256M
三、/根分区尽量大
-------------------------------------------------------------------
*:samba服务是必需掌握的,用来于windows文件共享
linux下shell介绍 shell的概念
概述:每一个人在成功登陆linux后,系统会出现不一样的提示符号。例如$、~、#等,而后你就能够开始输入须要的命令,如果命令正确,系统就会依据命令的要求来执行,直到注销系统为止,在登陆到注销期间,输入的每一个命令都会常常解译及执行。而这个负责的机制就是shell
linux下shell介绍 shell编程
概述:其实做为命令语言互动式地解释和执行用户输入的命令只是shell功能的一个方面,shell还能够用来进行程序设计。它提供了定义变量和参数的手段以及丰富的程序控制结构。使用shell编程相似于DOS中的处理文件,称为shell script,双叫shell程序或shell命令文件。(推荐书《linux命令、编辑器和shell编程》)shell与windows下的批处理文件相似
-------------------------------------------------------------------
linux下shell介绍 shell的分类
概述:shell有不少,但经常使用的就几种:
Shell名称 开发者 命令名称
Bourne S.R.Bourne /bin/sh
C Bill Joy /bin/csh
Kom David /bin/ksh
一、查看目前使用的是哪一种shell
命令:env (该命令能够显示当前操做系统的环境变量)
二、shell的修改
命令:chsh -s /bin/[shell文件名] (不一样的shell对命令的解释不同)
-------------------------------------------------------------------
linux下shell介绍 shell的命令补全功能
概述:是指用户输入命令时,并不须要输入完整的命令,而系统自动会找出最符合的名称。这种功能能够节省常常输入命令的时间。直接输入"mk"再按两下"tab"键,出现两头两个字母为"mk"的命令。cat p再按两下"tab"键会出现开头字母为"p"的全部文件或目录。
-------------------------------------------------------------------
linux下shell介绍 查阅历史记录命令history
概述:在linux下,咱们有时可能但愿知道或是使用最近执行的命令,history可能会帮上大忙。
一、history 5 :此项说明会显示最近使用的5个命令
二、!5 :此项说明执行历史编号为5的命令
三、!ls :此项说明执行最后一次以"ls"开头的命令
-------------------------------------------------------------------
tcp/ip基础 tcp/ip的由来
概述:linux/unix的世界就是网络的世界。而网络的基础就是tcp/ip,因此一个优秀的linux/unix程序员必须了解并掌握tcp/ip。
tcp/ip是什么
tcp/ip是unix/linux世界的网络基础,在某种意义上,unix网络就是tcp/ip,并且tcp/ip就是网络互联的标准。它不是一个独立的协议,而是一组协议。(tcp,ip,udp,arp,rarp等协议)
tcp/ip基础 osi与tcp/ip参考模型
osi模型(理论) |
tcp/ip模型(现实) |
应用层(application) |
应用层:(application)smtp,ftp,telnet |
表示层(presention) |
传输层:(transport)解释数据 |
会话层(session) |
网络层:(ip)定位ip地址和链接路径 |
传输层(transport) |
链路层:(link)与硬件驱动对话 |
网络层(ip) |
|
数据链路层(link) |
|
物理层(physical) |
|
tcp/ip基础 ip地址与包的路由传递(1)
概述:每一个internet上的主机和路由器都有一个ip地址。它包括网络号和主机号,全部ip地址都是32位的,ip地址按照国际标准的划分为a,b,c,d,e五种类型。
a类:1.0.0.0至127.255.255.255
b类:128.0.0.0至191.255.255.255
c类:192.0.0.0至223.255.255.255
d类:224.0.0.0至239.255.255.255
e类:240.0.0.0至247.255.255.255
a,b,c类目前用的最多
dos下追踪IP路由命令:tracert 目标IP或域名
dos下测试网络是否畅通:ping 目标IP
windows查看ip状况是ipconfig
在linux/unix下查看ip状况的命令是ifconfig
-------------------------------------------------------------------
linux网络环境配置(1)
第一种方法:
(1)用root身份登录,运行setup命令进入到text mode setup utiliy对网络进行配置,这里能够进行ip,子网掩码,默认网关,dns的设置。
(2)这时网卡的配置没有生效,运行/etc/rc.d/init.d/network restart命令
咱们刚才做的设置才生效
第二种方法:
(1)ifconfig eth0 X.X.X.X 对网卡进行设置。(临时生效)
(2)ifconfig eth0 network X.X.X.X 对子网掩码设置。
对广播地址和DNS使用默认。
注意:这样配置网络将会当即生效。(临时生效)
第三种方法:
(1)修改/etc/sysconfig/network-scripts/ifcfg-eth0这个文件里属性能够修改。包括ip,子网掩码。广播地址,默认网关。
(2)这时网卡的配置没有生效。运行/etc/rc.d/init.d/network restart命令
咱们刚才做的设置才生效。
这种方法是最底层的修改方法。
**linux下全部的设备都是一个文件。(这个方法文便之后在linux下编程)
/etc/sysconfig/network-scripts/ifcfg-eth0文件内容
DEVICE=eth0 (驱动名称)
ONBOOT=yes (系统启动时默认设备启动)
BOOTTPROO=static (指定IP仍是自动分配IP。指定IP:static;自动分配IP:dhcp)
IPADDR=192.168.44.22 (本机IP地址)
NETMASK=255.255.255.0 (子网掩码)
GATEWAY=192.168.44.254 (网关)
在虚拟机下linux与windows如何ping通?
可使用直接物理桥连;也可使用自定义特定虚拟网络。(必需在同一IP段内才能够)
-------------------------------------------------------------------
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软件版本号;1.3.23为主版本号,11为副版本号
i386软件运行的硬件平台
rpm文件扩展名,表明RPM包
RPM经常使用命令
RPM查询
rpm -qa :查询所安装的全部rpm软件包
rpm -qa | more
rpm -qa | grep X
rpm -ql 软件包名 :查询软件包中的文件
rpm -ql file
rpm -ql jdk
rpm -q 软件包名 :查询软件包是否安装
rpm -q xinetd
rpm -q foo
rpm -q xinetd file bash
rpm -qf 文件全路径名 :查询文件所属的软件包
rpm -qf /etc/passwd
rpm -qf /root/install.log
rpm -qi 软件包名 :查询软件包信息
rpm -qi file
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包全路径名称 :安装包到当前系统 参数i=install
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包
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
rpm -qa | grep samba :此命令会检查出已经安装了samba软件包。
如果已经安装了,下面会出现samba软件包的具体名称。
二、 mount /mnt/cdrom
cd /mnt/cdrom 找到samba-common-2.2.7a-7.9.0.i386.rpm
客户和服务器均须要的文件
rpm -ivh samba-common-2.2.7a-7.9.0.i386.rpm
rpm -ivh samba-2.2.7a-7.9.0.i386.rpm (服务器端软件)
rpm -ivh samba-client-2.2.7a-7.9.0.i386.rpm (客户端软件)
cd ~
umount /mnt/cdrom
三、设置samba密码文件
//先在linux中创建一个普通用户
//将/etc/passwd中的用户都加到smbpasswd中
cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
//设置用户的samba密码
smbpasswd 用户名
四、启动samba服务
service smb start 启动
service smb stop 中止
service smb restart 重启
samba配置
共享资源的基本设置 /etc/samba/smb.conf
一、comment : 针对共享资源所作的说明文字。默认值为空字符串。
comment = dir for todayhero :共享这个目录为todayhero这个用户
二、path : 若共享的资源是目录,是指定该目录的位置。
path = /tmp : 共享tmp这个目录
三、guset ok :是否容许用户不使用账号和密码访问此资源
guset ok = yes : 容许用户不使用账号和密码访问此资源
guset ok = no : 不容许用户不使用账号和密码访问此资源
四、hosts allow : 设置链接主机的地址
hosts allow = 192.168.0. server.abc.com :意思是说容许来自192.168.0.或server.abc.com访问
五、hosets deny : 设置禁止链接的主机地址
hoset deny =192.168.2. : 意思是说不容许来自192.168.2主机访问此samba服务器的资源。
六、read only : 用于设置共享的资源是否为只读。
read only = yes : 容许只读
read only = no : 能够读写
七、writable : 设置是否容许写入
writable = yes : 容许写入
writable = no : 不容许写入
八、browseable : 设置用户是否可看到此共享资源
browseable = yes : 容许用户看到此资源
browseable = no : 不容许用户看到此资源
九、available : 设置是否启用资源共享
available = yes : 启用资源共享
available = no : 不启用资源共享
-------------------------------------------------------------------
任务调度命令
概述:
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
一、系统工做:有些重要的工做必须周而复始的执行。如病毒扫描等。
二、个别用户工做:个别用户可能但愿执行某些程序。
设置任务调度文件:/etc/crontab
设置我的任务调度。执行crontab -e命令。接着输入任务到调度文件
例:5 * * * * ls -l /etc/ > /tmp/to.txt
意思说每小时的第五分钟执行ls -l /etc/ > /tmp/to.txt命令
任务调度的使用crontab
一、设置任务 crontab -e
二、每隔必定时间去执行
date > /home/mydatal (将当前时间覆盖写入mydata1文件中。>为覆盖写)
date显示当前时间
1)但愿天天凌晨2:00去执行 date >> /home/mydate2 (>>为追加写)
0 2 * * * date >> /home/mydate2
2)但愿每分钟去执行
* * * * * date >> /home/mydate2
调度文件规则:
字段名称 说明 范围
分钟 每小时中的第几分钟执行 0-59
小时 每日的第几个小时执行 0-23
日期 每个月的第几天执行 1-31
月历 每一年的第几个月执行 1-12
星期 每周的第几天执行 0-6
命令名称 欲执行的命令名称及其参数
*1 *2 *3 *4 *5
*1表明分钟 *2表明小时 *3表明日期 *4表明月历 *5表明星期
如:0 22 26 5 * 表示星期* 5月 26日 22小时 0分钟
完整意思为每一年5月26日22小时0分执行对应任务。*表示设置为无设定
* * * * *表明每分钟执行一次
三、怎样去调度多个任务?
1)在crontab -e 中直接写多个任务 (优势:简单;缺点:太多太乱修改不方便)
2)能够把全部的任务,写入到一个可执行文件(shell编程)
.sh文件为shell文件,chmod 744 mytask.sh
vi mytask.sh
date >> /home/mydate2
cp /home/mydate2 /root/
:wq
crontab -e
* * * * * /root/mytask.sh
四、如何终止任务
终止任务调度:
crontab -r :终止任务调度 (多任务多用户使用时禁用此命令)
crontab -l :列出当前有那些任务调度
-------------------------------------------------------------------
进程的概念和管理
基本概念
一、在linux中,每一个执行的程序都称为一个进程。每个进程都分配一个ID号。
二、每个进程,都会对应一个父进程,而这个父进程能够复制多个子进程。例如WWW服务器。
三、每一个进程均可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上能够进行操做的。后台进程则是实际在操做,但因为屏幕上没法看到的进程,一般使用后台方式执行。
四、通常系统的服务都是之后台进程的方式存在,并且都会常驻在系统中。直到关机才会结束。
进程就是正在执行的程序
线程(1)轻量级的进程
(2)进程有独立的地址空间,线程没有
(3)线程不能独立存在,它是由进程建立的。(在linux下是fork,在java下是Thread)
(4)相对来说,线程耗费的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 退出top按q键或ctrl+c键便可退出
top与ps命令很类似。它们都用来显示正在执行的进程。top与ps最大的不一样之处,在于top在执行一段时间能够更新正在运行的进程。
一、监视特定用户
top :输入此命令,按回车键,查看执行的进程。
u :而后输入"u"回车,再输入用户名,便可。
二、终止指定的进程
top :输入此命令,按回车键,查看执行的进程。
k :而后输入"k"回车,再输入要结束的进程ID号。
三、指定系统状态更新的时间
top -d 10 :指定系统更新进程的时间为10秒。
14:06:22 up系统时间
4 min, 系统启动多久
1 user, 当前登录到linux有多少用户
load avcragc: 0.02, 0.12, 0.07负载平衡,当前系统的负载状况(可全加除3大
于0.6表示系统负载紧张)
37 processes:当前进程数
36 sleeping, 休眠状态进程数
1 running, 正在运行进程数
0 zombie,僵尸进程数 进程无用后仍占用内存的进程数
0 stopped处于中止状态的进程数
CPU states: 0.0% user 0.1% system 0.0% nice 0.0% iowait 99.8% idle
CPU的状态 idle为CPU闲置状态(越大越好)
Men: 255264k av, 39420k used, 215836k free, 0k shrd, 5520k buff
30632k actv, 140k in_d, 292k in_c
内存使用状况
255264k av,内存总数量
39420k used,正在使用内存数量
215836k free,空闲内存数量
Swap: 257032k av, 0k used, 257032k free 19376k cached
swap分区(虚拟内存)使用状况
swap: 257032k av,swap分区(虚拟内存)数量
0k used, 正在使用虚拟内存数量
257032k free空闲虚拟内存数量
19376k cached缓存内存
可用此命令进行释放echo 3 > /proc/sys/vm/drop_caches 通常不刻意去释放。
----------------------------------------------------------------------
设置系统日期
一、date命令:显示系统的时间。能够在直接输入"date"命令。来查看系统的时间。
二、利用date命令来更改系统的时间。
date MMDDHHMMCCYY.SS:意思是指月月日日时时分分年年年年.秒秒。
三、查看月历:
cal 3 2002 :查看2002年3月的月历。
四、查看年历:
cal 2008 :查看2008的年历
----------------------------------------------------------------------
监控网络状态信息
显示网络统计信息的命令netstat
此命令用来显示整个系统目前的网络状况。例如目前的链接、数据包传递数据、或是路由表内容。此命令直接输入便可使用。
如:netstat -anp (参数an按端口排序,参数p是显示进程号)
检测主机链接命令ping:
是一种网络检查检测工具。它主要是用检测远程主机是否正常,或是两部主机间的介质是否为断、网线是否脱落或网卡故障。
如:ping 对方IP地址
显示数据包通过历程命令:traceroute
traceroute 目标IP或地址
此命令能够直接输入使用,用来检测数据包在网络上传输的过程。从本机到远程的主机完整路径。帮助管理员解决问题。
route
所谓路由是指将数据由来源网络送往目的地网络的操做。在大型网络中,路由是很是复杂的,由于数据包在抵达目的地时,可能通过的节点有不少,路由表是存储在路由器或一些其它连接设置上的窗体。其中记录着了到指定目的地的网络路径,以及这些路径的相关数值。
此命令能够直接输入使用,来查看本机路由的状况。
----------------------------------------------------------------------
MySql数据库在linux下的使用
概述:Mysql数据库在linux下能够充分发挥威力,Mysql数据库愈来愈受到软件公司的青睐,为何呢?
(1)免费(2)跨平台(3)轻(4)支持多并发
在北京不少软件公司属于创业型的中、小公司。从节约成本的角度考虑。Mysql特别适合中、小项目。
如何在linux下使用Mysql数据库。
1)把mysql数据库的安装文件准备好,mount / copy
2)把安装文件解压缩
3)继续安装
groupadd mysql
useradd -g mysql mysql
scripts/mysq1_install_db --user=mysql
chown -R root . (修改文件的全部者)
chown -R mysql data (修改date文件夹的全部者)
chgrp -R mysql . (改变用户组)
启动mysql
bin/mysqld.safe --user=mysql &
检查一下,OK,正常启动
1)把MYSQL安装文件copy到/home下
2)tar -zxvf 文件名.tar.gz
mv命令为linux下文件更名命令
3) groupadd mysql (建立mysql用户组)
useradd -g mysql mysql (建立mysql用户并将mysql用户放到mysql用户组)
进入mysql文件夹后才能够执行下面语句
scripts/mysq1_install_db --user=mysql (初始化数据库)
chown -R root . (修改文件的全部者, .表明当前文件 ..表明上一级文件或文件夹;参数R是递归也就是文件或文件夹下全部的都继承)
chown -R mysql data (修改date文件夹的全部者)
chgrp -R mysql . (改变用户组)
启动mysql
bin/mysqld.safe --user=mysql & (&表示之后台的方式启动)
检查一下,OK,正常启动
如何进入mysql
cd /bin
./mysql -u root -p
若是但愿在任何目录下均可以进入mysql则须要在/root/.bash_profile中添加路
径。(全部用户均可以使用能够在/etc/.bash_profile文件)
****修改env PATH路径需在.bash_profile
cd /root
.bash_profile
注销后登录
----------------------------------------------------------------------
Mysql数据库在linux下的使用
3)测试mysql数据库是否能够在linux下正确使用。
创建数据库和表
加入部分数据
编写一个showUsers.java文件,在控制台显示用户
****特别注意mysql的驱动要存放的位置!要放在jdk下,主目录下/jre/lib/ext
mysql数据库的使用 quit命令是退出mysql操做;drop table 表名;(删除表)
1)进入mysql
2)创建数据库和表
mysql> create database spdb1; (创建数据库)
mysql> show database; (查看数据库)
3)建表
首先
mysql> use spdb1; (在spdb1数据库中建表)
mysql> create table users(userId varchar(8),userName varchar(8)); (创建users表)
mysql> show tables; (查看表)
4)加入数据
mysql> insert into users valucs('0001','alex');p (将数据写入users表中)
mysql> select * from users; (查看users表中数据)
mysql> desc users; (查看数据库users表结构)
5)使用java编写一个ShowUser.java文件,显示数据库中的数据
vi ShowUser.java
java源码
import java.sql.*;
public class Showusers{
//main function
public static void main(String []args){
//conect 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(2));
}
}catch(Exception e){
e.printStackTrace();
}
}
}
}
:wq
javac ShowUsers.java
找到jdk
jdk在/home/j2sdk1.4.2_07/jre/lib/ext
java ShowUsers
----------------------------------------------------------------------
4)如何使用命令行来备份和恢复mysql数据库
备份: mysqldump -u root -p密码 数据库名 > data.bak (在mysql下的bin目
录下执行)
建空数据库mysql> create database spdb1;
恢复: mysql -u root -p密码 数据库名 < data.bak (在mysql下的bin目录下
执行,必须先创建一个空的数据库才能够恢复)
cd /mysql/bin
备份:./mysqldump -u root -p密码 数据库名 > /路径/data.bak
恢复: mysql -u root -p密码 数据库名 < data.bak
----------------------------------------------------------------------
神奇的ssh
概述:ssh(securt shell)是一款集远程操做linux和进行文件上传和下载的软件,那是至关的好用呀,在软件公司几乎全部的linux程序员都会使用ssh。安全,方即是它最大的特色。
一、安装
linux的ssh服务端是在安装linux时自动安装一个sshd并默认是启动的。ssh
服务端的端口是22
windows下安装ssh客户端
二、使用ssh客户端登录到linux(前提是linux下的sshd服务启动)
----------------------------------------------------------------------
补充讲解linux重要内容
linux目录结构
/bin 普通用户的可执行命令,系统的任何用户均可以执行该目录中的命令
/boot 存放linux操做系统启动时所需使用的文件
/dev 系统中的全部设备文件
/etc 系统中的配置文件
/home 普通用户的宿主目录,每一个用户在该目录下都有一个与用户名同名的目录
/mnt 中的子目录用于系统中可移动设备的挂载点
/root 超级用户root的宿主目录
/sbin 系统的管理命令,普通用户不能执行他们
/tmp 系统的临时目录
/usr 系统应用程序和相关文件
/var 系统中常常变化的文件如日志文件和用户邮件
当前目录 pwd命令能够显示当前目录
相对路径 以当前目录开始询找目标文件或文件夹 . .. ~
绝对路径 以根目录开始询找目录文件或文件夹 /目录
工做目录 就是执行文件所在的目录
运行级别
命令:init [0123456]
运行级别 0:关机
1:单用户
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
经常使用运行级别是3和5,要修改默认的运行级别可改文件
/etc/inittab的id:5:initdefault:这一行中的数字
经常使用命令
pwd :显示当前工做目录
cd :改变目录 (cd直接回到用户目录)
ls :列出文件和目录
ls -a :显示隐藏文件
ls -l :显示长列表格式
mkdir :创建目录
rmdir :删除空目录
touch :创建空文件
cp :复件命令 cp -r dir1 dir2 递归复制命令(复制子目录信息) 参数f
覆盖
mv :移动文件和改文件名
rm :删除文件和目录
rm -rf * :删除全部内容(包括目录和文件) 参数r递归 参数f强制
ln :创建符号链接(相似windows的快捷方式)
ln -s 源 目录
ln -s /etc/inittab inittab (inittab指向实际文件/etc/initab)
more :显示文件内容,带分页
less :显示文件内容带分页
grep :在文本中查询内容 (grep -n "内容" 文件名/目录*)
| :管道命令 | : find / -name *.html |grep bookmark
在find的结果中查找字符串"bookmark",显示包含这个字符串的文件
find :搜索文件及目录
在linux中,由于文件系统是以级别式的结构来组成的,因此要在整
个系统中找到特定的文件和目录并非件容易的事,而"find"命令
能够解决上述问题。
find的使用
在特定的目录下搜索并显示指定名称的文件和目录
搜索一段时间内被存取/变动的文件或目录
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
shell使用
命令历史和互动:用上下箭头键能够重复之前所输入的命令
命令完成功能:用tab键能自动完成相关命令,再次按tab可获得清单
shell脚本文件:是一个文本文件/命令集合/有执行的权限chmod 744 文件名
执行方式(./文件名)/(.sh后缀名的文件是shell文件)
用户登陆后自动执行的shell脚本文件:
.bashrc位于主目录下
它以前执行系统的脚本/etc/bashrc主要是基本配置数据 (/etc/bashrc至关于windows下的自动批处理文件autoexec.bat)
.bash_profile位于主目录下
它以前执行系统的脚本/etc/profile主要是配置环境变动
当但愿临时加入一个路径时,可以使用export
用export PATH=$PATH:$HOME/bin:/root/test/tl
输出环境变量PATH引用原来的值$PATH $HOME表示工做主目录:是路径分隔符
已定义好的环境变量:
SHELL :默认shell
PATH :路径
USER :当前登陆用户的用户名
显示变量内容:echo $PATH
echo $USER
echo $SHELL
通配符: * 表明多个字母或数字
? 表明一个字母或数字
ls a* ls a? ls ?at? ls f080[1-6].tif
转义字符: \
ls /mnt/winl/My\ Documents
引号:
export NAME-Michael
echo Welcome $NAME,the date is date单引号 - shell不处理
任何变量和命令
echo 'Welcome $NAME,the date is date'双引号 - 处理变量但不处理命令
echo "Welcome $NAME,the date is date"反引号 - 把引号中的每一个单词做
为一个命令,若是是变量则先求值而后做为一个命令处理
echo "Welcome $NAME,the date is `date`"
别名命令:alias显示系统当前定义的全部alias
alias 别名='命令或命令组'
alias cp='cp -i'
alias ll='ls -l --color=tty'
----------------------------------------------------------------------
linux启动过程分析
runlevel命令 能够查看当前的运行级别
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)其余特殊服务
----------------------------------------------------------------------
压缩和解压问题
以zip和unzip处理.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"来查看压缩包的内容
以gzip和gunzip处理.gz文件
一、直接解压缩文件
unzip file.zip
二、排除不须要解压缩的文件
unzip file.zip -x file2
意思是说除了file2文件外,其余的文件都解压缩
三、查看压缩包的内容
unzip -Z file.zip
查看file.zip压缩包的内容。也可使用"-l"、"-v"来查看压缩包的内容
四、解压命令
gunzip file.gz或gzip -d file.gz
gzip与gunzip压缩与解压缩的用法
Linux压缩保留源文件的方法:
gzip –c filename > filename.gz
Linux解压缩保留源文件的方法:
gunzip –c filename.gz > filename
gunzip的用法
1.做用
gunzip命令做用是解压文件,使用权限是全部用户。
2.格式
gunzip [-acfhlLnNqrtvV][-s ][文件...]
或者gunzip [-acfhlLnNqrtvV][-s ][目录]
3.主要参数
-a或--ascii:使用ASCII文字模式。
-c或--stdout或--to-stdout:把解压后的文件输出到标准输出设备。
-f或-force:强行解开压缩文件,不理会文件名称或硬链接是否存在,以及该文
件是否为符号链接。
-h或--help:在线帮助。
-l或--list:列出压缩文件的相关信息。
-L或--license:显示版本与版权信息。
-n或--no-name:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其忽略不予处理。
-N或--name:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上。
-q或--quiet:不显示警告信息。
-r或--recursive:递归处理,将指定目录下的全部文件及子目录一并处理。
-S或--suffix:更改压缩字尾字符串。
-t或--test:测试压缩文件是否正确无误。
-v或--verbose:显示指令执行过程。
-V或--version:显示版本信息。
4.说明
gunzip是个使用普遍的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为“.gz”。事实上,gunzip就是gzip的硬链接,所以不管是压缩或解压缩,均可经过gzip指令单独完成。
----------------------------------------------------------------------
linux下java网络编程 -my qq
linux下网络编程是linux最让程序员着迷的地方,咱们看看如何在linux进行网络编程。最终你们能够在这个基础上扩展为my qq的程序,而且会使用到mysql数据库。
你将学习到:
一、如何使用java进行socket编程
二、如何在java中对mysql数据库操做
三、windows和linux网络通信
四、了解什么是网络服务这个晦涩的概念
----------------------------------------------------------------------
linux下java开发my qq server
vi MyServerText.java
import java.io.*; //引用java.io包
import java.net.*; //引用.net包
//服务器端
public class MyServerText {
public static void main(String []args){
try{
//建立ServertSocket
ServertSocket ss=new ServerSocket(8888);
System.out.println("i am listening");
//监听,直到某个客户端来链接,一但链接成功,就会获得
//Socket[好象是一个数据管道]
Socket s=ss.accept();
//能够读取从客户端发送的信息
InputStreamReader isr=new InputStreamReader(s.getInputStream());
BufferedReader br=new BufferedReader(isr);
String kk=br.readLine();
System.out.println("client send :::"+kk);
//从服务器端,回一个消息
OutputStreamWriter osw=new OutputStreamWriter(s.getOutputStream());
PrintWriter pw=new PrintWriter(osw,true);
pw.println("i get your mes:"+kk);
} cath (Excption e) {
e.printStackTrace();
//TODO: handle exception
}
}
}
----------------------------------------------------------------------
MyClient
import java.io.*; //引用java.io包
import java.net.*; //引用.net包
//客户端
public class MyClient {
public static void main(String []args){
try {
//链接ip:和port
Socket s=new Socket("192.168.222.66",8888);
//经过文件流发送消息
OutputStreamWriter osw=new OutputStreamWriter(s.getOutputStream());
BufferedWriter bw=new BufferedWriter(osw);
PrintWriter pw=new PrintWriter(bw,true);
//发送
pw.println("hello,world!!");
//读取从服务器回送的信息
InputStreamReader isr=new InputStreamReader(s.getInputStream());
BufferedReader br=new BufferedReader(isr);
String response=br.readLine();
System.out.println("server response is :::"+response);
} cath (Excption e) {
e.printStackTrace();
}
}
}
----------------------------------------------------------------------