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(); } }
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。