2025年shell编程教程(shell编程基本步骤)

shell编程教程(shell编程基本步骤)Linux 操作系统学习 linux 的特点 优点 1 免费的 开源的系统 2 支持多线程 多用户的系统 3 安全性好 4 对内存和文件管理优越 linux 体积最少只需要内存 4M 由于小所以可以做嵌入式开发 缺点 操作相对困难 Linus 于 1991 年至 1994 年将 unix 的微型版 minis 加以开发出 linux 现在 redhat 红帽子 BSD SUN 等公司进行再发行

大家好,我是讯享网,很高兴认识大家。



Linux*操作系统学习

linux*的特点

优点:

1、免费的/开源的系统

2、支持多线程/多用户的系统

3、安全性好

4、对内存和文件管理优越

linux体积最少只需要内存4M,由于小所以可以做嵌入式开发

缺点:

操作相对困难

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”

1、Vi Hello.java

2、输入i[进入到插入模式]

public class hello{

 

讯享网

}

3、输入esc键[进入命令模式]

4、输入wq保存退出/q!退出但不保存

6、编译javac hello.java

javac Hello.java

7、运行 java Hello [java运行的是class文件]

ls命令显示当前文件

ls -l命令显示详细文件列表

如何在linux下开发c程序或是c++(cpp)程序

建立vi hello.cpp

int main(){

讯享网

}

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 [列出文件和目录]

 

命令mkdir [建立目录]

命令rmdir [删除空目录]


linux*常用命令(3)

tab键可以补全相应内容

命令touch [建立空文件]

命令cp [复制命令]

cp -r dir1 dir2递归复制命令(复制子目录信息)

命令mv [移动文件和改文件名]

命令rm [删除文件和目录]

讯享网

命令ln [建立符号连接]

 

linux*常用命令(4)

命令more [显示文件内容,带分页]

命令less [显示文件内容带分页]

命令grep [在文本中查询内容] grep -n “查找内容” [文件名]

命令| [管道命令] 在linux和unix系统中|就是管道命令,把上一个命令的

讯享网

命令man [相当于dos下的help]

例:Grep –n “查找内容” [文件名] | more


linux*常用命令(5)

命令find [搜索文件及目录]

在linux中,因为文件系统是以级别式的结构来组成的,所以要在整个系统中找到特定的文件和目录并不是件容易的事。而”find”命令可以解决上述问题。

1、在特定的目录下搜索并显示指定名称的文件和目录

find / -name man:意思是说从根目录开始搜索名称为man的文件或目录

2、搜索一段时间内被存取/变更的文件或目录。

find /home -amin -10:十分钟内存取的文件或目录

find /home -atime -10:十小时内存取的文件或目录

find /home -cmin -10:十分钟内更改过的文件或目录

find /home -ctime +10:十小时前更改过的文件或目录

3、搜索指定大小的文件。

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的管理权限可以改变某个用户所在的组:

 

你可以用

讯享网

如何在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-文件的所有者对该文件的权限。权限分三种1、r可读也会用4表示;2、W可写也会用2表示;3、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*的安装步骤:

1、把镜像ISO文件挂载到linux操作系统上。(linux系统是用挂载和卸载来管理分区文件的。)

在虚拟机上做好配置,在根目录下进行操作:

挂载光驱命令:mount /mnt/cdrom/

挂载光驱

卸载光驱命令:umount /mnt/cdrom/

2、把安装文件copy到/home目录下(文件名过长要用tab键来自动补全文件名)

命令:cp 文件名 /home

3、切换目录到/home

命令:cd /home

4、安装(https://www.jianshu.com/p/)是解压缩命令

命令 https://www.jianshu.com/p/ 安装文件名.bin

输入yes后开始安装,输入no不安装。

5、看看一个文件 /etc/profile (环境配置文件)

linux下用#来作注释。

6、配置profile环境配置文件


javaee*开发环境搭建 eclipse的安装

概述:要在linux下开发java程序。则需要安装JDK,如果要在集成开发工具(IDE)下开,可以安装eclipse软件。

eclipse*安装

1、挂载eclipse.iso文件

2、将eclipse复制到/home目录下

3、安装

tar.gz文件的安装命令:tar -zxvf 文件名.tar.gz

4、启动eclipse[进入图开界面]

打开终端控制台

进入eclipse文件后

https://www.jianshu.com/p/eclipse

myeclipse*安装同上需在图形界面下安装

JDK/eclipse/myeclipse三个按顺序安装后才可以使用J2EE的开发


javaee*开发环境搭建 tomcat的安装

概述:我们知道javaee的服务器有tomcat、jboss、weblogic、websphere、resin…这些都可以安装到linux下,我们给大家安装tomcat

tomcat用于开发小、中型项目(免费)jboss也是免费的。

weblogic、websphere用于开发大型项目(收费)

安装同上

注释重点:

bin文件安装使用https://www.jianshu.com/p/ 文件名.bin

tar.gz文件安装使用tar -zxvf 文件名.tar.gz

unzip解压缩zip文件:unzip 文件名.zip

zip压缩文件:zip 压缩包文件名.zip 要压缩的文件名

在图形界面下运行文件后要加&进行后台运行

控制台下运行文件命令https://www.jianshu.com/p/文件名 &

https://www.jianshu.com/p/eclipse &


javaee开发环境搭建 Mysql数据库的安装

概述:毫无疑问,没有数据库,javaee项目将会暗淡无光,所以我们必须掌握如何在linux下安装和使用数据库。在linux下除了microsoft的sql server不能安装外,其它主流的数据库都可以安装。比如Mysql、oracle、db2…关于如何在linux下安装Mysql数据库我们在后面讲解,各位同学可以问问google大神,看看能不能自己搞定!


linux下娱乐软件 realplay

概述:linux下一样有很多娱乐软件,比如播放影的软件之王realplay。我们给大家演示一下。请注意这次我用的是.bin的安装文件。

安装realplay

1、把安装文件copy到home目录去

2、安装https://www.jianshu.com/p/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安装有两种方式

1、双操作系统

2、完全独立安装

linux安装时,分区是关键

1、/boot引导分区 100M

2、/swap交换分区一般是你的物理内存的2倍,但不要大于256M

3、/根分区尽可能大


*: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

1、查看目前使用的是哪种shell

命令:env (该命令可以显示当前操作系统的环境变量)

2、shell的修改

命令:chsh -s /bin/shell文件名


linux下shell介绍 shell的命令补全功能

概述:是指用户输入命令时,并不需要输入完整的命令,而系统自动会找出最符合的名称。这种功能可以节省经常输入命令的时间。直接输入”mk”再按两下”tab”键,出现两头两个字母为”mk”的命令。cat p再按两下”tab”键会出现开头字母为”p”的所有文件或目录。


linux下shell介绍 查阅历史记录命令history

概述:在linux下,我们有时可能希望知道或是使用最近执行的命令,history可能会帮上大忙。

1、history 5 :此项说明会显示最近使用的5个命令

2、!5 :此项说明执行历史编号为5的命令

3、!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包全路径名称 :安装包到当前系统有提示信息

 

删除RPM包

rpm -e RPM包的名称

讯享网

如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。

如:\( rpm -e foo</p> <pre></pre> <p><strong>升级RPM包</strong></p> <p>rpm -U RPM包全路径名</p> <p>rpm -U cvs-1.11.2-10.i386.rpm</p> <hr> <p><strong>samba详解</strong></p> <p><strong>什么是samba</strong></p> <pre></pre> <p><strong>samba软件的安装</strong></p> <p>步骤如下:</p> <p>1、检查是否安装了:samba</p> <p>rpm -qa | grep samba :此命令会检查出已经安装了samba软件包。</p> <p>若是已经安装了,下面会出现samba软件包的具体名称。</p> <p>2、 mount /mnt/cdrom</p> <p>cd /mnt/cdrom 找到samba-common-2.2.7a-7.9.0.i386.rpm</p> <p>客户和服务器均需要的文件</p> <p>rpm -ivh samba-common-2.2.7a-7.9.0.i386.rpm</p> <p>rpm -ivh samba-2.2.7a-7.9.0.i386.rpm (服务器端软件)</p> <p>rpm -ivh samba-client-2.2.7a-7.9.0.i386.rpm (客户端软件)</p> <p>cd ~</p> <p>umount /mnt/cdrom</p> <p>3、设置samba密码文件</p> <p>//先在linux中建立一个普通用户</p> <p>//将/etc/passwd中的用户都加到smbpasswd中</p> <p> cat /etc/passwd | mksmbpasswd.sh &gt; /etc/samba/smbpasswd</p> <p>//设置用户的samba密码</p> <pre></pre> <p>4、启动samba服务</p> <p>service smb start 启动</p> <p>service smb stop 停止</p> <p>service smb restart 重启</p> <p><strong>samba配置</strong></p> <p>共享资源的基本设置 /etc/samba/smb.conf</p> <p>1、comment : 针对共享资源所做的说明文字。默认值为空字符串。</p> <p>comment = dir for todayhero :共享这个目录为todayhero这个用户</p> <p>2、path : 若共享的资源是目录,是指定该目录的位置。</p> <p>path = /tmp : 共享tmp这个目录</p> <p>3、guset ok :是否允许用户不使用帐号和密码访问此资源</p> <p>guset ok = yes : 允许用户不使用帐号和密码访问此资源</p> <p>guset ok = no : 不允许用户不使用帐号和密码访问此资源</p> <p>4、hosts allow : 设置连接主机的地址</p> <p>hosts allow = 192.168.0. server.abc.com :意思是说允许来自192.168.0.或server.abc.com访问</p> <p>5、hosets deny : 设置禁止连接的主机地址</p> <p>hoset deny =192.168.2. : 意思是说不允许来自192.168.2主机访问此samba服务器的资源。</p> <p>6、read only : 用于设置共享的资源是否为只读。</p> <p>read only = yes : 允许只读</p> <p>read only = no : 可以读写</p> <p>7、writable : 设置是否允许写入</p> <p>writable = yes : 允许写入</p> <p>writable = no : 不允许写入</p> <p>8、browseable : 设置用户是否可看到此共享资源</p> <p>browseable = yes : 允许用户看到此资源</p> <p>browseable = no : 不允许用户看到此资源</p> <p>9、available : 设置是否启用资源共享</p> <p>available = yes : 启用资源共享</p> <p>available = no : 不启用资源共享</p> <hr> <p><strong>任务调度命令</strong></p> <p>概述:</p> <pre></pre> <p>设置任务调度文件:/etc/crontab</p> <p>设置个人任务调度。执行crontab -e命令。接着输入任务到调度文件</p> <p>例:5 * * * * ls -l /etc/ &gt; /tmp/to.txt</p> <pre></pre> <p>任务调度的使用crontab</p> <p>1、设置任务 crontab -e</p> <p>2、每隔一定时间去执行</p> <p>date &gt; /home/mydatal (将当前时间覆盖写入mydata1文件中。&gt;为覆盖写)</p> <p>date显示当前时间</p> <p>1)希望每天凌晨2:00去执行 date &gt;&gt; /home/mydate2 (&gt;&gt;为追加写)</p> <p>0 2 * * * date &gt;&gt; /home/mydate2</p> <p>2)希望每分钟去执行</p> <ul> <li><ul> <li><ul> <li><ul> <li><ul> <li>date &gt;&gt; /home/mydate2</li> </ul></li> </ul></li> </ul></li> </ul></li> </ul> <p>调度文件规则:</p> <p>字段名称 说明 范围</p> <p>分钟 每小时中的第几分钟执行 0-59</p> <p>小时 每日的第几个小时执行 0-23</p> <p>日期 每月的第几天执行 1-31</p> <p>月历 每年的第几个月执行 1-12</p> <p>星期 每周的第几天执行 0-6</p> <p>命令名称 欲执行的命令名称及其参数</p> <p>*1 *2 *3 *4 *5</p> <p>*1代表分钟 *2代表小时 *3代表日期 *4代表月历 *5代表星期</p> <p>如:0 22 26 5 * 表示星期* 5月 26日 22小时 0分钟</p> <p>完整意思为每年5月26日22小时0分执行对应任务。*表示设置为无设定</p> <ul> <li><ul> <li><ul> <li><ul> <li>*代表每分钟执行一次</li> </ul></li> </ul></li> </ul></li> </ul> <p>3、怎样去调度多个任务?</p> <p>1)在crontab -e 中直接写多个任务 (优点:简单;缺点:太多太乱修改不方便)</p> <p>2)可以把所有的任务,写入到一个可执行文件(shell编程)</p> <p>.sh文件为shell文件,chmod 744 mytask.sh</p> <pre></pre> <p>4、如何终止任务</p> <p>终止任务调度:</p> <pre></pre> <hr> <p><strong>进程的概念和管理</strong></p> <p>基本概念</p> <p>1、在linux中,每个执行的程序都称为一个进程。每一个进程都分配一个ID号。</p> <p>2、每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如WWW服务器。</p> <p>3、每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。</p> <p>4、一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才会结束。</p> <p>进程就是正在执行的程序</p> <p>线程(1)轻量级的进程</p> <pre></pre> <p><strong>静态显示系统执行的进程</strong></p> <p>ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数</p> <p>显示详细的进程信息</p> <p>1、 ps -a :意思是说显示当前终端的所有进程信息。</p> <p>2、以用户的格式显示进程信息。</p> <pre></pre> <p>3、显示后台进程运行参数:</p> <pre></pre> <p>4、可以使用ps -aux 显示全面的进程信息。</p> <p>PS:显示的信息选项</p> <p>字段 说明</p> <p>PID 进程识别号</p> <p>TTY 终端机号</p> <p>TIME 此进程所消CPU的时间</p> <p>CMD 正在执行的命令或进程名</p> <p>终止进程kill/killall</p> <p>若是某个进程执行一半需要停止时,或是已消耗了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务。</p> <p>终止某个进程:kill 进程号</p> <p>kill 16251 :表示终止进程号为16251的进程。</p> <p>kill -9 16251 :因为有些进程会捕捉某些信号。如果直接不能结束进程可以用“-9”传送信息。</p> <p>killall可以清除进程及进程相关的子进程</p> <p><strong>动态监控进程top 退出top按q键或ctrl+c键即可退出</strong></p> <p>top与ps命令很相似。它们都用来显示正在执行的进程。top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。</p> <p>1、监视特定用户</p> <p>top :输入此命令,按回车键,查看执行的进程。</p> <pre></pre> <p>2、终止指定的进程</p> <p>top :输入此命令,按回车键,查看执行的进程。</p> <pre></pre> <p>3、指定系统状态更新的时间</p> <p>top -d 10 :指定系统更新进程的时间为10秒。</p> <p>14:06:22 up系统时间</p> <p>4 min, 系统启动多久</p> <p>1 user, 当前登陆到linux有多少用户</p> <p>load avcragc: 0.02, 0.12, 0.07负载平衡,当前系统的负载情况(可全加除3大</p> <p>于0.6表示系统负载紧张)</p> <p>37 processes:当前进程数</p> <p>36 sleeping, 休眠状态进程数</p> <p>1 running, 正在运行进程数</p> <p>0 zombie,僵尸进程数 进程无用后仍占用内存的进程数</p> <p>0 stopped处于停止状态的进程数</p> <p>CPU states: 0.0% user 0.1% system 0.0% nice 0.0% iowait 99.8% idle</p> <p>CPU的状态 idle为CPU闲置状态(越大越好)</p> <p>Men: 255264k av, 39420k used, 215836k free, 0k shrd, 5520k buff</p> <pre></pre> <p>内存使用情况</p> <p>255264k av,内存总数量</p> <p>39420k used,正在使用内存数量</p> <p>215836k free,空闲内存数量</p> <p>Swap: 257032k av, 0k used, 257032k free 19376k cached</p> <p>swap分区(虚拟内存)使用情况</p> <p>swap: 257032k av,swap分区(虚拟内存)数量</p> <p>0k used, 正在使用虚拟内存数量</p> <p>257032k free空闲虚拟内存数量</p> <p>19376k cached缓存内存</p> <p>可用此命令进行释放echo 3 &gt; /proc/sys/vm/drop_caches 一般不刻意去释放。</p> <hr> <p><strong>设置系统日期</strong></p> <p>1、date命令:显示系统的时间。可以在直接输入"date"命令。来查看系统的时间。</p> <p>2、利用date命令来更改系统的时间。</p> <p>date MMDDHHMMCCYY.SS:意思是指月月日日时时分分年年年年.秒秒。</p> <p>3、查看月历:</p> <p>cal 3 2002 :查看2002年3月的月历。</p> <p>4、查看年历:</p> <p>cal 2008 :查看2008的年历</p> <hr> <p><strong>监控网络状态信息</strong></p> <p>显示网络统计信息的命令netstat</p> <pre></pre> <p>检测主机连接命令ping:</p> <pre></pre> <p><strong>显示数据包经过历程命令:traceroute</strong></p> <p>traceroute 目标IP或地址</p> <pre></pre> <hr> <p><strong>MySql数据库在linux下的使用</strong></p> <p>概述:Mysql数据库在linux下可以充分发挥威力,Mysql数据库越来越受到软件公司的青睐,为什么呢?</p> <p>(1)免费(2)跨平台(3)轻(4)支持多并发</p> <p>在北京很多软件公司属于创业型的中、小公司。从节约成本的角度考虑。Mysql特别适合中、小项目。</p> <p><strong>如何在linux下使用Mysql数据库。</strong></p> <p>1)把mysql数据库的安装文件准备好,mount / copy</p> <p>2)把安装文件解压缩</p> <p>3)继续安装</p> <p>groupadd mysql</p> <p>useradd -g mysql mysql</p> <p>scripts/mysq1_install_db --user=mysql</p> <p>chown -R root . (修改文件的所有者)</p> <p>chown -R mysql data (修改date文件夹的所有者)</p> <p>chgrp -R mysql . (改变用户组)</p> <p>启动mysql</p> <p>bin/mysqld.safe --user=mysql &amp;</p> <p>检查一下,OK,正常启动</p> <p>1)把MYSQL安装文件copy到/home下</p> <p>2)tar -zxvf 文件名.tar.gz</p> <p>mv命令为linux下文件改名命令</p> <ol start="3"> <li> <p>groupadd mysql (创建mysql用户组)</p> <p>useradd -g mysql mysql (创建mysql用户并将mysql用户放到mysql用户组)</p> <p>进入mysql文件夹后才可以执行下面语句</p> <p>scripts/mysq1_install_db --user=mysql (初始化数据库)</p> <p>chown -R root . (修改文件的所有者, .代表当前文件 ..代表上一级文件或文件夹;参数R是递归也就是文件或文件夹下所有的都继承)</p> <p>chown -R mysql data (修改date文件夹的所有者)</p> <p>chgrp -R mysql . (改变用户组)</p> <p>启动mysql</p> <p>bin/mysqld.safe --user=mysql &amp; (&amp;表示以后台的方式启动)</p> <p>检查一下,OK,正常启动</p> </li> </ol> <p>如何进入mysql</p> <p>cd /bin</p> <p>https://www.jianshu.com/p/mysql -u root -p</p> <p>如果希望在任何目录下都可以进入mysql则需要在/root/.bash_profile中添加路</p> <p>径。(所有用户都可以使用可以在/etc/.bash_profile文件)</p> <p>修改env PATH路径需在.bash_profile</p> <p>cd /root</p> <p>.bash_profile</p> <p>注销后登陆</p> <hr> <p><strong>Mysql数据库在linux下的使用</strong></p> <p>3)测试mysql数据库是否可以在linux下正确使用。</p> <p>建立数据库和表</p> <p>加入部分数据</p> <p>编写一个showUsers.java文件,在控制台显示用户</p> <p>特别注意mysql的驱动要存放的位置!要放在jdk下,主目录下/jre/lib/ext</p> <p><strong>mysql数据库的使用 quit命令是退出mysql操作;drop table 表名;(删除表)</strong></p> <p>1)进入mysql</p> <p>2)建立数据库和表</p> <p>mysql&gt; create database spdb1; (建立数据库)</p> <p>mysql&gt; show database; (查看数据库)</p> <p>3)建表</p> <p>首先</p> <p>mysql&gt; use spdb1; (在spdb1数据库中建表)</p> <p>mysql&gt; create table users(userId varchar(8),userName varchar(8)); (建立users表)</p> <p>mysql&gt; show tables; (查看表)</p> <p>4)加入数据</p> <p>mysql&gt; insert into users valucs('0001','alex');p (将数据写入users表中)</p> <p>mysql&gt; select * from users; (查看users表中数据)</p> <p>mysql&gt; desc users; (查看数据库users表结构)</p> <p>5)使用java编写一个ShowUser.java文件,显示数据库中的数据</p> <p><strong>vi ShowUser.java</strong></p> <p><strong>java源码</strong></p> <p> import java.sql.<em>;</em>*</p> <p> public class Showusers{</p> <p> //main function</p> <p> public static void main(String []args){</p> <p> //conect to mysql database</p> <p> try{</p> <p> Class.forName("com.mysql.jdbc.Driver");</p> <p> Connection ct=DriverManager.getConnection</p> <p>("jdbc:mysql://127.0.0.1:3306/spdb1?user=root&amp;password="); </p> <p> Statement sm=ct.createStatement();</p> <p> ResultSet rs=sm.executeQuery("select * from users")</p> <p> while(rs.next()){</p> <p> System.out.println("username="+rs.getString(2));</p> <p> }</p> <p> }catch(Exception e){</p> <p> e.printStackTrace();</p> <p> }</p> <p> } </p> <p> }</p> <p><strong>}</strong></p> <p><strong>:wq</strong></p> <p><strong>javac ShowUsers.java</strong></p> <p><strong>找到jdk</strong></p> <p><strong>jdk在/home/j2sdk1.4.2_07/jre/lib/ext</strong></p> <p><strong>java ShowUsers</strong></p> <hr> <p><strong>4)如何使用命令行来备份和恢复mysql数据库</strong></p> <p><strong>备份: mysqldump -u root -p密码 数据库名 &gt; data.bak (在mysql下的bin目</strong></p> <p><strong>录下执行)</strong></p> <p><strong>建空数据库mysql&gt; create database spdb1;</strong></p> <p><strong>恢复: mysql -u root -p密码 数据库名 &lt; data.bak (在mysql下的bin目录下</strong></p> <p><strong>执行,必须先建立一个空的数据库才可以恢复)</strong></p> <p><strong>cd /mysql/bin</strong></p> <p><strong>备份:https://www.jianshu.com/p/mysqldump -u root -p密码 数据库名 &gt; /路径/data.bak</strong></p> <p><strong>恢复: mysql -u root -p密码 数据库名 &lt; data.bak</strong></p> <hr> <p><strong>神奇的ssh</strong></p> <p>概述:ssh(securt shell)是一款集远程操作linux和进行文件上传和下载的软件,那是相当的好用呀,在软件公司几乎所有的linux程序员都会使用ssh。安全,方便是它最大的特点。</p> <p>1、安装</p> <p>linux的ssh服务端是在安装linux时自动安装一个sshd并默认是启动的。ssh</p> <p>服务端的端口是22</p> <p>windows下安装ssh客户端</p> <p>2、使用ssh客户端登陆到linux(前提是linux下的sshd服务启动)</p> <hr> <p><strong>补充讲解linux重要内容</strong></p> <p>linux目录结构</p> <p>/bin 普通用户的可执行命令,系统的任何用户都可以执行该目录中的命令</p> <p>/boot 存放linux操作系统启动时所需使用的文件</p> <p>/dev 系统中的所有设备文件</p> <p>/etc 系统中的配置文件</p> <p>/home 普通用户的宿主目录,每个用户在该目录下都有一个与用户名同名的目录</p> <p>/mnt 中的子目录用于系统中可移动设备的挂载点</p> <p>/root 超级用户root的宿主目录</p> <p>/sbin 系统的管理命令,普通用户不能执行他们</p> <p>/tmp 系统的临时目录</p> <p>/usr 系统应用程序和相关文件</p> <p>/var 系统中经常变化的文件如日志文件和用户邮件</p> <p>当前目录 pwd命令可以显示当前目录</p> <p>相对路径 以当前目录开始询找目标文件或文件夹 . .. ~</p> <p>绝对路径 以根目录开始询找目录文件或文件夹 /目录</p> <p>工作目录 就是执行文件所在的目录</p> <p>运行级别</p> <p>命令:init [0123456]</p> <p>运行级别 0:关机</p> <pre></pre> <p>常用运行级别是3和5,要修改默认的运行级别可改文件</p> <p>/etc/inittab的id:5:initdefault:这一行中的数字</p> <p>常用命令</p> <p>pwd :显示当前工作目录</p> <p>cd :改变目录 (cd直接回到用户目录)</p> <p>ls :列出文件和目录</p> <p>ls -a :显示隐藏文件</p> <p>ls -l :显示长列表格式</p> <p>mkdir :建立目录</p> <p>rmdir :删除空目录</p> <p>touch :建立空文件</p> <p>cp :复件命令 cp -r dir1 dir2 递归复制命令(复制子目录信息) 参数f</p> <pre></pre> <p>mv :移动文件和改文件名</p> <p>rm :删除文件和目录</p> <p>rm -rf * :删除所有内容(包括目录和文件) 参数r递归 参数f强制</p> <p>ln :建立符号连接(类似windows的快捷方式)</p> <p>ln -s 源 目录</p> <p>ln -s /etc/inittab inittab (inittab指向实际文件/etc/initab)</p> <p>more :显示文件内容,带分页</p> <p>less :显示文件内容带分页</p> <p>grep :在文本中查询内容 (grep -n "内容" 文件名/目录*)</p> <p>| :管道命令 | : find / -name *.html |grep bookmark</p> <pre></pre> <p>find :搜索文件及目录</p> <pre></pre> <p>find的使用</p> <p>在特定的目录下搜索并显示指定名称的文件和目录</p> <p>搜索一段时间内被存取/变更的文件或目录</p> <p>find /home -amin -10 十分钟内存取的文件或目录</p> <p>find /home -atime -10 十小时内存取的文件或目录</p> <p>find /home -cmin -10 十分钟内更改过的文件或目录</p> <p>find /home -ctime +10 十小时前更改过的文件或目录</p> <p>按文件大小进行搜索文件</p> <p>find /home -size +10k 意思是说查找/home目录下大小为10k的文件</p> <p>重定向命令 &gt; 覆盖 &gt;&gt;追加 &lt;导入</p> <p>ls -l &gt; a.txt 列表的内容写入文件a.txt中(覆盖写)</p> <p>ls -al &gt;&gt; aa.txt 列表的内容追加到文件aa.txt</p> <p>从文件中输入信息database.program &lt; database.data</p> <p><strong>shell使用</strong></p> <p>命令历史和互动:用上下箭头键可以重复以前所输入的命令</p> <p>命令完成功能:用tab键能自动完成相关命令,再次按tab可得到清单</p> <p>shell脚本文件:是一个文本文件/命令集合/有执行的权限chmod 744 文件名</p> <pre></pre> <p>用户登录后自动执行的shell脚本文件:</p> <p>.bashrc位于主目录下</p> <p>它之前执行系统的脚本/etc/bashrc主要是基本配置数据 (/etc/bashrc相当于windows下的自动批处理文件autoexec.bat)</p> <p>.bash_profile位于主目录下</p> <p>它之前执行系统的脚本/etc/profile主要是配置环境变更</p> <p>当希望临时加入一个路径时,可使用export</p> <p>用export PATH=HOME/bin:/root/test/tl</p> <p>输出环境变量PATH引用原来的值HOME表示工作主目录:是路径分隔符</p> <p>已定义好的环境变量:</p> <pre></pre> <p>显示变量内容:echo \)PATH

 

通配符: * 代表多个字母或数字

讯享网

转义字符:

 

引号:

讯享网

任何变量和命令

 

为一个命令,如果是变量则先求值然后作为一个命令处理

讯享网

别名命令:alias显示系统当前定义的所有alias

 

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配置服务

讯享网

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

i)其他特殊服务


压缩和解压问题

以zip和unzip处理.zip文件

1、zip命令的基本使用方法:

zip file.zip [要压缩的文件]

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 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文件

1、直接解压缩文件

unzip file.zip

2、排除不需要解压缩的文件

unzip file.zip -x file2

意思是说除了file2文件外,其他的文件都解压缩

3、查看压缩包的内容

unzip -Z file.zip

查看file.zip压缩包的内容。也可以使用”-l”、”-v”来查看压缩包的内容

4、解压命令

gunzip file.gz或gzip -d file.gz

gzip与gunzip压缩与解压缩的用法

Linux压缩保留源文件的方法:

gzip –c filename &gt; filename.gz

Linux解压缩保留源文件的方法:

gunzip –c filename.gz &gt; 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

linux下网络编程是linux最让程序员着迷的地方,我们看看如何在linux进行网络编程。最终大家可以在这个基础上扩展为my 的程序,并且会使用到mysql数据库。

你将学习到:

1、如何使用java进行socket编程

2、如何在java中对mysql数据库操作

3、windows和linux网络通讯

4、了解什么是网络服务这个晦涩的概念


linux下java开发my server *

vi MyServerText.java

import java.io.; //引用java.io包

import java.net.; //引用.net包

//服务器端

public class MyServerText {

public static void main(String []args){

 

}

}


MyClient

import java.io.; //引用java.io包

import java.net.*; //引用.net包

//客户端

public class MyClient {

public static void main(String []args){

讯享网

}

}


小讯
上一篇 2025-05-17 15:04
下一篇 2025-06-05 13:24

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/187090.html