linux学习笔记4:linux的任务调度,进程管理,mysql的安装和使用,ssh工具的使用,linux网络编程

1、设置任务调度命令crontab 任务调度是指系统在某个时间执行的特定的命令或程序。任务调度分为:1)系统工作:有些重要的工作必须周而复始的执行,如病毒扫描。2)个别用户工作:个别用户可能希望执行某些程序。 (1)设置任务调度文件:/etc/crontab  1)首先设置个人任务调度。执 行crontab -e命令。  2)接着输入任务到调度文件。  如:5**** ls -l  /etc/> /tmp/to.txt  表示说每个小时的第五分钟执行ls -l /etc/>/tmp/to.txt命令。“5****”中第一位表示第几分钟,第二位表示第几个小时,第三位表示第几天,第四位表示第几月,第五位表示的是每周的第几天。 (2)调度多个任务  方法1:在crontab -e中直接写多任务即可。即换行写任务。(不推荐使用)  方法2:可以把所有的任务写入到一个可执行文件中(shell 编程)。步骤如下:   1)vi mytask.sh 输入下面的命令   date>>/home/mydate3   cp /home/mydate3 /root   2)授予mytask.sh执行权限 chmod 744 mytask.sh   3)crontab -e   4)再输入命令:* * * * * /root/mytask.sh即可。    (3)如何终止任务  crontab -r 表示终止任务调度。执行该命令后,crontab -e中的任务都被删除了。  crontab -l 表示列出当前有哪些任务调度。

2、linux的进程的概念和管理,进程:所谓进程就是正在执行的程序。线程:(1)线程是轻量级的进程,(2)进程有独立的地址空间,线程没有。(3)线程不能独立存在,它是由进程来创建的。在linux中用fork。(4)线程耗费的cpu和内存小于进程。 (1)在linux中,每一个执行的程序都称为一个进程。每一个进程都分配一个ID号。 (2)每一个进程,都会对应一个父进程。而这个父进程可以复制多个子进程。 (3)每个进程都可能以两种方式存在:前台和后台。所谓前台进程就是用户目前的屏幕上可以进行的操作。后台进程则是实际在操作,但屏幕上无法看到的进程 (4)一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。

(5)查看目前系统的进程(静态的)用ps命令。如:  1)ps -a 表示显示当前终端的所有进程信息  2)ps -u 表示以用户的格式显示进程信息  3)ps -x 表示显示后台进程运行的参数  一般使用 ps -aux显示所有的信息。

(6)终止进程 若想某个进程执行一半需要停止时,或是以消耗了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成。  1)kill 进程号: 表示终止某个进程。  2)kill -9 进程号: 表示有些进程会捕捉某些信号。如果直接不能结束进程可以用“-9”传递信息。

(7)进程的动态的监控进程top top与ps命令很相似,他们都用来显示正在执行的进程。top与ps最大的不同之处。处于top在执行一段时间可以更新正在运行的进程。  1)监视特定用户:top:输入此命令,回车,查看执行的进程。u:然后输入“u”回车,再输入用户名,即可。  2)终止指定的进程:top:输入此命令,回车,查看执行的进程。k:然后输入“k”回车,再输入要结束的进程ID号。  3)指定系统状态更新的时间:top -d 10:指定系统更新进程的时间为10秒

(8)设置系统时间  1)date命令:显示系统的时间,可以在直接输入“date”命令来查看系统的时间  2)利用date命令来更改系统的时间:    date MMDDHHMMCCYY.SS 表示的是月月日日时时分分年年年年.秒秒  3)查看月历:  cal 3 2002  表示查看2002年3月的月历  4)查看年历  cal 2008  表示查看2008的年历

3、监控网络状态信息 (1)显示网络统计信息的命令netstat,此命令用来显示整个系统目前的网络情况。例如目前的连接、数据包传递数据、或是路由表内容。此命令直接输入即可使用:  如: netstat -an   netstat -anp  显示进程的id (2)检测主机连接命令ping:是一种网络检测工具,它主要是用检测远程主机是否正常,或是两部主机间的戒指是否为断、网线是否脱落或网卡故障。  如: ping 对方ip地址

(3)显示数据包经过的历程命令:traceroute  此命令可以直接输入使用,用来检测数据包在网络上传输的过程。从本机到远程的主机完整路径。帮助管理员解决问题 (4)route  所谓路由是指将数据由来源网络送往目的地的网络操作。在大型网络中,路由是非常复杂的,因为数据包在抵达目的地时,可能经过的节点有很多,路由表是存储在路由器或一些其他连接设置上的窗体。其中记录着了到指定目的地的网络路径,以及这些路径的相关数值。此命令可直接使用,查看本机路由的情况。

4、Mysql数据库在linux下的使用 (1)mysql的安装  步骤:1)首先将安装文件拷贝到安装目录下即可,即mount /mnt/cdrom加载 拷贝 cp mysql—*  /home/   2)然后将安装文件解压缩:tar -zxvf 文件名.gz   3)该文件夹名:mv mysql-standard-4.0.26-pc-linux-gnu-i686  mysql  (创建一个文件夹,名称为mysql)   4)groupadd mysql    ( 表示创建mysql组,便于管理)   5)useradd -g mysql mysql  (表示建一个mysql的用户,并将其放入到mysql组中)   6)scripts/mysql_install_db --user=mysql  (表示初始化数据库,即添加了mysql 的用户)此命令需要进入到mysql主目录下才能正确执行。   7)chown -R root .(修改 文件的 所有者) 表示当前路径下所有文件及文件夹的所有者改为root。其中“.”表示当前路径下所有文件及文件夹,“-R”表示递归操作   8)chown -R mysql data(修改date文件夹的所有者)表示将data文件夹的所有者修改为mysql。   9)chgrp -R mysql . (改变用户组) 表示将当前路径下所有文件及文件夹的用户的用户组改成mysql用户组   10)启动mysql:从bin目录启动。   bin/mysqld_safe  --user=mysql &   (2)如何进入mysql呢?  1)进入安装目录下执行  首先cd到bin目录下  然后执行 ./mysql -u root -p 回车输入密码即可。

退出mysql:quit。    2)设置环境变量:  env |more  查看环境变量PATH的值。环境变量中所有的路径都会保存在root的目录下.bash_profile文件中(可利用ls -al来查看)。因此修改路径只需要在该文件中添加一个路径即可。  .bash_profile文件是每个用户都有一个的,当采用每一个用户登录是,都会去读取每一个用户的.bash_profile文件加载相应的环境变量。因此若用别的用户登录则需要修改相应的用户下面的.bash_profile文件。   (3)mysql在linux下的使用      要求:  1)建立数据库和表  2)加入部分数据  3)编写一个showUsers.java文件,在控制台显示用户,特别需要注意的是mysql的驱动要存放的位置(即放在jdk的目录下,jdk的主目录/jre/lib/ext)。 实现步骤如下:  1)进入mysql  2)建立数据库和表  create database spdb1;//建库  create table users(userid varchar(8),username varchar(8));  3)插入数据  insert into users values('002','shunping');  4)编写一个showuser.java文件,在控制台显示用户名  vi showuser.java

improt java.sql.*;  public class showuser{    public static void main(String[] args){   try{   //connect to mysql   Class.forName("com.mysql.jdbc.Driver");      Connection ct=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql?user=root&password=liujiyu");       StateMent sm=ct.createStatement();      ResultSet rs=sm.executeQuery("select * from users");     while(rs.next()){    System.out.println("username="+rs.getString(1));   }  }catch(Eception e){   e.printStackTrace();  }       }    }

(4)如何使用命令行来备份和恢复mysql数据库  进入到mysql数据库的安装主目录的/bin下,执行下面的命令  1)备份:mysqldump -u  root -p密码 数据库名>data.bak    2)恢复:mysql -u root -p密码 数据库名<data.bak  再恢复数据库的时候,需要建立一个空数据库!!也就是说,恢复数据库之后所有的数据都恢复到该空数据库中。

5、ssh(secureshellClient)的使用(windows和linux之间的链接工具) ssh是一款远程操作linux,和进行文件上传和下载的软件,在软件公司几乎所有的linux程序员都会使用ssh。安全、方便是他最大的特点。 (1)安装ssh(secureshellClient) (2)由于linux系统下,其系统自带的就有sshd服务,默认是打开状态,且其监听的端口是22.linux下查看监听的端口用netstat -anp命令查看是否真的开启监听。 (3)使用ssh客户端登陆到linux(前提是linux的sshd启动了。且需要确认windows和linux之间是可以ping通的(若是虚拟机的话需要保证虚拟机和主机只在同一个网段即可)。) (4)输入linux系统的的ip地址和用户登录信息即可登陆。 (5)就可以通过ssh在window和linux之间来传输文件(相当于ftp)

6、ftp的安装与配置

6.1当前目录:pwd 相对目录:指的是从当前目录去访问某个文件(夹) 绝对目录:指的是从根目录去访问某个文件(夹) 工作目录:

cp复制命令  cp -r dir1 dir2 递归复制命令(复制子目录信息) mv移动文件和改文件名 rm删除文件和目录  rm -rf * 删除所有内容(包括目录和文件),其中r表示递归,f表示强制执行。 ln建立符号链接  ln -s 源 目标  ln -s /etc/inittab inittab   (表示inittab指向实际文件/etc/inittab) grep在文本中查询内容:grep "12" 文件名;grep -n "12" 文件名; 管道命令:|   find / -name *.html|grep bookmark    //// -name表示的是按名字查找 搜索文件及目录 find:  1)查找特定的文件和目录  2)在特定的目录下搜索并显示指定名称的文件和目录  find /home -amin -10 十分钟内存取的文件或目录   (内对应的是-)  find /home -atime -10 十个小时内存取的文件和目录  find /home -cmin -10 十分钟内更改过的文件和目录  find /home -ctime +10 十个小时前更改过的文件和目录   (前对应的是+)  3)按照文件的大小进行搜索:  find /home -size +10k 意思是说查找/home目录下大小为10k的文件或目录

7、shell 的使用 命令历史和互动:用上下箭头键可以重复以前所输入的命令 命令完成功能:用tab键能自动完成相关命令,再次按tab可得到清单。 shell脚本文件:是一个文件,命令的集合,有执行的权限,执行方式(./文件名)

1)用户登录后自动执行的shell脚本文件:  .bashrc (其位于主目录下)在它之前执行系统的脚本/etc/bashrc主要是基本配置数据文件:.bash_profile 文件(其位于主目录下) ,而又在它之前执行的系统脚本文件是:/etc/profile文件,主要是配置环境变量。  说明:profile文件配置的环境变量是所有用户公用的系统环境变量,.bash_profile 文件是每一个用户自己需要配置的环境变量。.bashrc 文件是每个用户登录时执行的文件(如需要在某个用户登录时,自动的执行某个程序,可以将该程序放在该文件中)。  若需要每个用户都登录时,都执行某个程序,则可以将该程序放在:profile的文件中。

2)配置.bashrc文件可以指定某些程序在用户登录时启动。操作方法就是在该文件中添加相应的执行语句即可。

3)用export PATH=$PATH:$HOME/bin:/root/test/t1  临时加入一个路径。  表示输出环境变量PATH,引用原来的值$PATH $HOME 表示工作主目录 , “:”是路径分隔符  已定义好的环境变量:SHELL:默认shell    PATH:路径   USER:当前登录用户的用户名  显示变量内容:echo $PATH         echo $USER         echo $SHELL

4)通配符  * 代表多个字母或数字  ?代表一个字母或数字   如:ls a*      ls a?      ls ?at?    ls abc[1-6].tif  转义字符:\  ls /mnt/win1/my\document

5)alias的用法  若希望给某个命令语句取个别名就用alias。如:alias showdir='ls -l /home'

8、linux的启动过程(需要明白单用户模式下,启动不读取/etc/inittab文件) linux系统启动过程如下:  1)BIOS自检:主要是对硬件的启动方式检测。  2)启动GRUB/LILO:  3)运行LINUX内核并检测硬件  4)运行系统的第一个进程init  5)init读取系统文件引导配置文件/etc/inittab中的信息进行初始化  6)/etc/rc.d/rc.sysinit系统初始化脚本  7)/etc/rc.d/rcX.d/[KS]* 根据运行级别X配置服务   终止以“K”开头的服务   启动以“S”开头的服务  8)/etc/rc.d/rc.local执行本地特殊配置  9)其他特殊服务

9、压缩和解压方法  (注意:文件和文件夹的区别) 以zip和unzip处理.zip文件  1)zip命令的基本使用方法:  zip file.zip 原文件名; 表示zip后接压缩后的文件名,在它的后面输入要压缩的文件即可  压缩多个文件:  zip file.zip 原文件名1,原文件名2、、、; 表示zip后接压缩后的文件名,在它的后面输入要压缩的文件即可  2)压缩后,自动删除原文件  zip -m file.zip to.txt 表示把to.txt文件压缩成file.zip文件后,to.txt会自动删除  3)将子目录一起压缩  zip -r file.zip 原文件名;表示将当前目录下的子目录一起压缩  4)忽略子目录的内容  zip -j file.zip 原文件名  5)将已压缩的或没有必要压缩的文件去掉  zip -n .mpg:.jpg:.gif  (注意文件中间要用:分开)  6)压缩某一日之后的文件  zip -t 102002 file.zip 表示将当前目录下的在2002年10月20日之后文件压缩。  7)不压缩链接文件的原文件名  zip -y file.zip 原文件名  8)压缩率问题。-1--->-9  -9的压缩率最高  zip -9 file.zip 原文件名  9)将不需要压缩的文件排除在外  zip file.zip 原文件名 -x file2.txt 表示的是在压缩的时候,将当前目录内的file2.txt文件排除在外。 以unzip命令进行.zip文件的解压缩:  1)直接解压缩文件  unzip file.zip  2)排除不需要解压缩的文件  unzip file.zip -x file2 表示的除了file2文件外,其他的文件都解压缩  3)查看压缩包的内容  unzip -Z file.zip 表示查看file.zip压缩包的内容。也可以使用“-l”、“-v”来查看压缩包的内容。

以gzip和gunzip处理.gz文件

10、linux下java网络编程->my qq linux服务端 public class myservertest{  public static void main(String[] args){

try{   //服务器端接受消息部分   ServerSocket ss=new ServerSocket(8888);//创建一个服务器,监听8888端口   System.out.println("i am listen");   Socket sk=ss.accept(); //监听,知道某个客户端来连接自己,一旦连接成功,返回一个scoket(理解成数据管道)   InputStreamReader isr=new InputStreamReader(sk.getinputStream());//可以读取从客户端发送的信息   BufferReader br=new BufferReader(isr);//为了更好的读取,将其放入到BufferReader中

String kk=br.readline();//读出来

System.out.println("client send:::"+kk);      //从服务器端回一个消息给客户端部分   OutputStreamWriter osw=new OutputStreamWriter(sk.getOutputStream());   //BufferedWriter bw=new BufferedWriter (osw);      PrintWriter pw=new PrintWriter(osw,true);      //发送   pw.println("i get your mes"+kk);

}catch(Exception e){   e.printStaticTrace();  } }

}

Windows客户端 public class myclienttest{  public static void main(String[] args){   try{   Scoket s=new Socket("172.16.54.23",8888);//链接服务器端   OutputStreamWriter osw=new OutputStreamWriter(s.getOutStreamStream()); //通过文件流写入发送信息   BufferedWriter bw=new BufferedWriter (osw);      PrintWriter pw=new PrintWriter(bw,true);      //发送   pw.println("hello wrold");

//读取服务器端返回的信息部分   InputStreamReader isr=new InputStreamReader(sk.getinputStream());//可以读取从客户端发送的信息   BufferReader br=new BufferReader(isr);//为了更好的读取,将其放入到BufferReader中

String response=br.readline();//读出来

System.out.println("server response is:::"+response);        }catch(Exception e){  e.printStackTrace();  }  }

}

上一篇:Linux学习笔记之查看Linux版本信息


下一篇:linux中的shell脚本编程