常用的Linux操作

来源:互联网 发布:婚庆电子相册制作软件 编辑:程序博客网 时间:2024/06/05 17:02
书:《uinx网络编程》W.RICHARD+STEVENS
#是注销,&写在后面则是后台执行


【cd】若后面什么都没有则默认到登录用户的主目录下
在linux下用vi编辑器开发一个简单的Java程序hello.java.步骤如下:
1、vi hello.java (建了hello.java文件)
2、输入i【进入插入模式】
3、按键盘esc键【进入命令模式可以输命令了】
4、输入冒号:
5、输入:【wq表示退出保存】【q!退出不保存】
6、输入ls看见当前目录所有文件;ls(blank)-l更加详细的文件日期大小;
7、编译hello.java; javac hello.java.(成功则不会有提示,失败则会有提示),成功后出现java.class文件
8、运行:java hello;
9、再vi hello.java就可以再次打开这个文件进行修改
 运行c程序
gcc 文件名.cpp,然后用【./a.out】,也可用【gcc -o 别名 文件名.cpp】再用【./别名】

命令【cd空格/】回车后就切换到根目录下,再输入【ls】(蓝色的)或者【dir】(白色的)回车即可以看到根目录下面所有文件夹
/代表根目录
Linux根目录下几个重要文件夹(同一级别)
1、root:存放root用户的相关文件;
2、home:存放普通用户的相关文件;每个用户在自己用户名的目录下面工作;
3、bin:存放常用命令(可执行二进制文件)的目录;根目录下用【cd bin】 再【dir 或 ls 或 ls -la】即可看见全部命令
4、sbin:要具有一定权限才可以使用的命令
5、etc:存放配置相关的文件(mysql配置,tomcat配置等);
6、var:存放经常变化的文件();
7、mnt:默认挂载光驱和软驱的目录;
8、boot:存放引导相关的文件,操作系统启动时所需使用的文件;(删掉则不能启动系统)(vmlinux..文件3.7M是操作系统内核)
9、usr:安装软件的默认文件夹
10、dev:系统中的多有设备文件
11、tmp:系统的临时目录
12、var:系统中经常变化的文件,如日志文件和用户邮件
13、lib:库文件
14、opt:装大型软件用(不强制)
15、proc:存在内存中,存实时信息(每次启动自动创建)

显示当前在哪个路径下面命令:【pwd】

具有root权限的用户才能添加用户:
【useradd 用户名】添加用户  没有提示则成功
【passwd 用户名】 设密码 passwd后面必须跟用户名 要不就会默认设当前用户密码
【userdel 用户名】删除用户(此时home下用户名的文件夹还存在)
【userdel -r 用户名】删除用户以及用户主目录
【who am i】查看当前用户是谁
【vi /etc/passwd】 【cat /etc/passwd】查看所有用户信息格式如下:
用户名:X(加密的密码):用户id:用户所在组id:(未显示的):/home/用户名:/bin/bash

在linux下添加组
【groupadd 组名】
查看linux中所有组的信息
【vi /etc/group】可以看可以修改
【cat /etc/group】只能看不能修改 可以看见 组名:X:组的id
【useradd -g 组名 用户名】创建用户,并同时将该用户分配到指定组
【usermod -g 组名 用户名】改变用户所在组
【usermod -d 目录名 用户名】改变该用户登录的初始目录

bash: useradd: command not found解决方法:
首先我不是root登陆的用户,而是普通用户登陆的,然后用【su】命令切换到root下,所以问题就出在这里。
【su】只改变root权限不改变环境变量,而【su -】指令就可以。‘su -root’可以取得ROOT用户的权限和环境。


Linux 常用命令
命令:【init[0123456]】
    运行级别
        0:关机(设置后则开机后就自动关机)
        1:单用户(相当于window的安全模式)
        2:多用户状态没有网络服务
        3:多用户状态有网络服务
        4:系统未使用保留给用户
        5:图形界面
        6:系统重启
常用运行级别是3和5,要修改默认的运行级别可改文件/etc/inittab的id:5:initedefault:这一行中的数字;

解决修改错误配置的方法:
1、在进入GRUB引导界面时,请输入e;
2、选中第二行,再输入e进入修改界面;
3、在最后输入1[代表但单用户级别输入别的则不行,因为只有用单用户模式他就不读/etc/inittab的id:5:initedefault]
4、所以这也是个bug可以用来改用户密码;(单用户模式不需要密码)

【ls】 列出文件和目录
【ls -a】显示隐藏文件
【ls -l】显示长列表格式
【ls -al】综合上两个
【mkdir 目录名】建立目录
【rmdir 目录名】删除空目录(目录里有东西则不能删)
【touch】建立空文件
    修改文件时间mtime,atime
【cp】复制命令 (cp blank 文件名 blank /路径)
【cp -r dir1空格dir2】递归复制命令(复制自目录信息)
【mv】移动文件和改文件名
【rm】删除文件和目录
【rm -rf *】删除所有内容(包括文件和目录)r递归,f强制
【rm -f 文件名】直接删除没有提示
【mv 文件名 重命名】给文件重命名
【ln】建立符号连接  (相当于windows的快捷方式) ps:不加任何参数进行了连接就是硬连接
【ln -s  源 目标】  目标变成了源的快捷方式
【ln -s /etc/inittab inittab】inittab指向实际文件/etc/inittab


【more】显示文件内容,带分页(分页后空格往下翻页,往上翻页ctr+pageup)
【less】显示文件内容带分页
【od -t [acdfox]】显示二进制文件,a为默认,c为ASCII字符输出
【head -n number】只显示前面number行,若number是负数则不显示最后number行
【tail -n number】只显示number行以后的,按【ctrl+C】才退出
【grep】在文本中查询内容 【grep -n “关键词” 文件名】 即可找到此文件中的关键字 n是说明在第几行
【|】管道命令(竖杠而不是l):把上一个命令的结果交给|的后面的命令处理
【man】相当于dos下的help man +命令就会出现该命令的介绍 然后输入【q】即可退出此介绍 输入【/】可查找字符串
    属性:【-f】严格查找 【-k】关键字查找
【info】与man作用相同,使用类似网页超链接跳到不同页面 输入【N】前往下一个节点 【P】前往上一个节点




【which 某命令】查找命令存放的文件路径,通过path路径查找
【whereis  -[bmsu] 文件名或目录名】使用数据库查找
【locate -[ir] keyword】查找有关键字文件,i忽略大小写,r接正则表达式

【find /路径 -name 文件名或目录】在前一个路径下找到后一个文件名或目录,若前一个路径是/则从根目录开始找
【find /home -amin -10】十分钟内存取的文件或目录
【find /home -atime -10】十小时内存取的文件或目录
【find /home -cmin -10】十分钟内更改过的文件或目录
【find /home -ctime +10】十小时前更改过的文件或目录
【find /home -size +10k】查找/home目录下大小为10k的文件
【echo $PATH/USER/SHELL】显示变量内容
【export PATH=$PATH:/..:/..】临时添加环境变量

重定向命令:        
【ls -l > a.txt】列表中的内容写入到文件a.txt中(覆盖写)没有则创建这个文件【>a.txt】
【ls -al >> aa.txt】列表的内容追加到文件aa.txt末尾

当某个用户创建了一个文件夹后,这个文件的所在组就是在用户所在的组
用【ls -ahl】命令可以看到文件的所有组
也可以通过【chgrp 组名 文件名】来修改文件所在的组


【groupadd [-g gid] 组名】  添加组
【useradd -g 组名 用户名】  将用户分配到那个组中
【cat /etc/passwd】  查看所有用户
【passwd 用户名】  分配密码

-rwxrw-r--     1    root  root 1213     Feb 2 09:29:  abc
操作权限   连接的文件数 用户  组   文件大小  最后修改时间 文件名
   
权限认为三种:r 可读 用4表示;w 可写 用2表示;x 可执行 用1表示;(d)表示目录;(l)表示连接;(-)表示普通文件
-rw-r--r--  表示各类用户对此文件的操作权限,第一个(-)代表普通文件;第二个rw-代表文件的所有者对该文件的权限;第三个r--代表所在组的权限;第四个r--代表其他组的用户对该文件的权限;

如何修改访问权限:
【chmod 777 用户名】在/home下敲前面命令 第一个7对所有者,第二个7对所在组,第三个7对所有用户 7=4+2+1即rwx
【chmod 777 文件名】

【usermod -g 组名 用户名】   用 root管理权限改变用户所在组
【usermod -d 目录名 用户名】 改变用户登录的初始目录

【ls -ahl】 查看文件的所有者/组
【chown 用户名 文件名】修改该文件的所有者
【chgrp 组名 文件名】  修改文件所在组

示例:
【chown u-x,g+w abc】  给用户去除用户执行的权限,增加组写权限
【chown a+r abc】 给所有用户添加读的权限
【chown -R root ./abc】 改变abc这个目录及其下面所有文件和目录所有者是root


【chattr [+-=] [ASacdistu] 文件或目录名称】设置文件隐藏目录名称
    + 增加某一特殊参数
    - 删除某一特殊参数
    = 仅有后面接的参数
    参数i只能root用户操作,不能被删除改名添加数据,参数a不能删除修改,只能添加
【lsattr】


挂载(安装jdk等):
root路径下 【mount /mnt/cdrom/】挂载光驱,启动光驱,卸载用【umount /mnt/cdrom】
jdk安装步骤:
1、把mypackage.iso挂载到linux操作系统上 在vm做好配置 【mount /mnt/cdrom】
2、把安装文件拷贝到 /home    【cp 文件名 /home】
3、切换目录到/home  【cd /home】
4、安装 ./文件名.bin  【后缀名为.bin的文件用 ./安装】
5、看看一个文件夹 用vi打开  /etc/profile [环境配置文件]
6、配置刚才安装好的jdk:在profile文件的unset i 下面配置
    JAVA_HOME= /home/jdk名
    PATH=$PATH:/home/jdk名/bin
    CLASSPATH=./home/jdk名/jre/lib/rt.jar
    export JAVA_HOME PATH CLASSPATH             
7、qw保存退出  然后logout再重新登录用java javac命令即可看到安装的jdk

【/etc/environment是设置整个系统的环境, 而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。】


Eclipse安装步骤:
1、把安装文件拷贝到/home 【cp 文件名 /home】
2、安装 tar -zxvf  文件名.tar.gz  【后缀为.tar.gz的文件用tar -zxvf安装】
4、启动Eclipse  【startx】进入图形界面方可启动  【crt + alt + f2】回到文本控制界面
5、找到Eclipse所在目录 用【./eclipse】即可启动

挂载命令:【mount [-参数] [设备名称](目录) [挂载点](目录)】
        -l :显示挂载的信息
        -t :指定文件系统
ps:在挂载光驱时,可直接使用【mount /mnt/cdrom/】
【mount -o -loop 镜像 目标目录】 挂载镜像
【dd if=/dev/zero of=/home/loopdev bs=1M count=512】创建大文件
卸载命令:【umount [-fn] [挂载点]】
开机挂载/etc/fstab及/etc/mtab


查看磁盘使用情况:【df [-参数]】 【du -m -s】eg:【df -l】【df -h】
          【df [-akmhHTi] [目录或文件名]】
          【du [-ahskm] [目录或文件名]】

【stat -f 目录】查看特定文件系统类型
查看某个目录是在哪个分区:【df [目录全路径]】

增加磁盘
1.先分区,新建可用分区
2.对分区进行格式化
3.对建好的文件系统进行检验,仔细一点可这么做
4.Linux,需要挂载点

【fdisk -l 设备名】查看linux系统分区具体情况
    进入后:p,n,d,q,w 常用的命令
【mkfs [-t 文件系统格式] 设备文件名】磁盘格式化
【mke2fs [-b block大小] [-i block大小] [-L 卷标] [-c] 设备】格式化为ext3指定参数
【fsck [-t 文件系统] [-ACay] 设备名称】磁盘检验 检验文件是否出错
【badblocks [-svw] 设备名称】磁盘检验 检查有无坏轨 ps:大多不用此命令

【e2label 设备名称 新的label名称】更改Label名称
【tune2f [-jlL] 设备代号】

swap空间的构建
【fdisk /dev/sda】->【n,+256】->【t】->【7】->【82】->【p】->【w】
【partprobe】 内更新分区表
【mkswap 目录】构建swap格式
【free】查看
【swapon 目录】加载
【swapon -s】列出使用swap设备有哪些
【】

linux安装
分区是关键:
/boot 分区 100M
swp (交换分区) 一般是物理内存的2倍,但不要大于256M
/ 根分区 尽可能的大

大于2T的磁盘分区
【parted 设备 [命令[参数]]】
eg: parted /dev/sda print
    parted /dev/sda mkpart logical ext3 19.2GB 19.7GB 新建一个约为512M的分区
    parted /dev/sda rm 8 删除第8号磁盘分区

shell 类似于windows下的.bat批处理文件
【ls /bin/*sh】查看shell种类 我们一般用-bash
【env】 该命令可以显示当前操作系统的环境变量(查看目前使用的是哪中shell)
【chsh -s /bin/新的shell】 改变使用的shell   shell都在/bin下
改变后注销重新登录即可用
命令补全键 敲两下tab即可
【history】查询历史命令
【history 5】显示最近使用的5个命令
【!5】此项执行历史编号为5的命令;

windows追踪路由命令(究竟隔了多少路由器)【tracert 网名】
测试两个ip是否畅通【ping 目标ip】
windows下查看ip情况是【ipconfig】
局域网广播【net send "广播消息内容"  局域网广播id】
在linux/unix下查看ip情况是【ifconfig】
windows下【netstat -an】查看网络信息,查看目前有哪些监听端口,端口越多越不安全 尽可能关掉不用的端口;
linux网络环境配置
第一种方法:
1、用root身份登录,运行【setup】命令进入到text mode setup utility对网络进行配置,这里可以进行IP,子网掩码,默认网关,dns的设置;
2、这时网卡的配置没有生效,运行【/etc/rc.d/init.d/network restart】命令刚才的设置才生效
3、【ifconfig】查看ip情况(会显示网卡名)
4、【ifconfig 网卡名 ip号】修改ip
第二种方法:
1.修改/etc/sysconfig/network-scripts/ifcfg-eth0 这个文件里各个属性可以修改,包括ip,子网掩码默认网关(或者../network-script/ifcfg-neo1 修改BOOTPROTO=dhcp(动态)/static  IPADDR=#/指定ip)
2.这时网卡的配置没有生效。运行/etc/rc.d/init.d/network restart 命令我们刚才作的设置生效

rpm管理 -rpm常用命令
rpm -qa:查询所安装的所有rpm软件包
rpm -qa | more
rpm -qa | grep x

rpm -q 软件包名:查询软件包是否安装
rpm -q xinetd
rpm -q foo
rpm -q xinetd file bash

rpm -qi 软件包名:查询软件包信息
rpm -qi file

rpm -ql 软件包名:查询软件包中的文件
rpm -ql file
rpm -ql jdk

rpm -qf 文件全路径名 查询文件所属的软件包
rpm -qf /etc/passwd
rpm -qf /root/install.log

rpm -qp 包文件名 查询包的信息对这个软件包的介绍
rpm -qp  jdk-1_5_0.rpm
rpm -qpi jdk-1_5_0.rpm
rpm -qpl jdk-1_5_0.rpm

安装rpm包
rpm -i rpm包全路径名称:安装包到当前系统
rpm -ivh rpm包全路径名称:安装包到当前系统有提示信息
参数说明:
    i 安装
    v 提示
    h 进度条

升级rpm包
rpm -U rpm包全路径名
rpm -U cvs-1.11.2-10.i386.rpm


安装samba服务器步骤
1.检查是否安装了samba
  rpm -qa | grep samba:次命令检查出已经安装了samba软件包。
2. mount /mnt/cdrom
   cd  /mnt/cdrom/ 找到samba-common-2.2.7a-7.9.0.i386.rpm
  客户和服务器均需要的文件
  rpm -ivh samba-common-2.2.7a.rpm
  rpm -ivh samba-common-2.2.7a.rpm 服务器
  rpm -ivh samba-client-2.2.7a.rpm 客户端
  cd ~
  umount /mnt/cdrom
rpm -e rpm名称
rpm -e --nodeps 命令行选项
如果其他软件包依赖您卸载软件包,卸载会出错

3.设置samba密码文件
先创建一个普通用户shunping
将/etc/passwd中的用户都加到smbpasswd中
cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
设置shunping密码
smbpasswd (-a)用户名

4.启动samba服务
service smb start 启动
service smb stop 停止
service smb restart 重启

5.配置网络使window和linux在一个网段,ip互连
6.关闭linux中的防火墙
为了让网络配置生效 运行下面的命令
/etc/rc.d/init.d/network restart
/etc/rc.d/init.d/xinetd restart
7.在windows中cmd中输入\\ip地址 就可以访问linux共享文件了(目录是默认登陆目录)

samba配置
共享资源的基本设置 /etc/samba/smb.conf
1.comment:针对共享资源所做的说明文字。默认值为空字符串
comment=dir for hero 共享这个目录为hero这个用户
2.path:若共享的资源是目录,是指定该目录的位置
path=/tmp:共享tmp这个目录
3.guest ok=yes/no:是否允许用户不使用账号和密码访问此资源
4.hosts allow=地址 :设置连接主机的地址
5.host deny:设置禁止链接的主机地址
6.read only:用于设置共享的资源是否为只读
    read only =yes 允许只读
    read only =no 不仅仅只读,也就是说可以写入
7.writable =yes/no:设置是否允许写入
    writable=yes:允许写入
    writable=no :不允许写入
8.browseable=yes/no:设置用户是否可看到此共享资源
9.availale=yes/no  :设置是否启用资源共享


任务调度的使用crontab
1、设置任务【crontab -e】进入后在里面写要执行的任务
2、每隔一段时间将日期输入到mydatal文件 【date > /home/mydatal】
    希望,每天2:00去执行 【0 2 * * * date >> /home/mydatal2】
    (分钟[0-59]、小时[0-23]、日期[1-31]、月历[1-12]、星期[0-6])
3、wq保存退出
怎样调用多个任务?
1、在【crontab -e】 里面直接写 (低级,容易乱不易于修改)
2、可以把所有的任务,写入到一个可执行文件(shell编程)(shell文件一般用.sh结尾)【vi 文件名.sh】,在【crontab -e】里写此shell文件的绝对路径【* * * * * 绝对路径】

终止任务调度:【crontab -r】
列出当前有那些调度任务:【crontab -l】

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

显示详细的进程信息:
1、【ps -aux】查看的信息最全
2、【ps -a】显示当前终端的所有进程信息
3、【ps -u】以用户的格式显示进程信息
4、【ps -x】显示后台进程运行参数
终止进程【kill 进程ID】 某些进程杀不死则用【kill -9 进程id】
kill掉了shell则会退出登录,返回到login状态
终止所有进程【killall】终止进程和其子进程

动态监控进程:【top】
1、监视特定用户:【top】输入此命令,按回车键,查看执行的进程;
    然后输入【u】回车,再输入用户名,即可。ctr+c退出
2、终止指定进程:【top】输入此命令,按回车键,查看执行的进程
    然后输入【k】回车,在输入要结束的进程ID。
3、指定系统更新的时间:【top -d 10】指定系统更新top命令的时间为10秒。

【date MMDDHHMMCCYY.SS】更改系统时间为:月月日日时时分分年年.秒秒
【cal 3 2002】查看2002年3月的月历
【cal 2008】查看2008年的年历

【netstat】显示网络统计信息的命令,用来显示整个系统目前的网络情况。例如目前的连接,数据包传递数据,或是路由表内容。【netstat -an】
【netstat -anp】可以看到端口对应的进程ID然后根据此ID即可kill此进程从而关掉端口

【traceroute 网址或者ip】用来检测数据包在网络上传输的过程,从本机到远程主机的完整路径。能ping通则能traceroute
【route】路由是指将数据包由来源网络送往目的地网络的操作。在大型网络中,路由是非常复杂的,因为数据包在抵达目的地时,可能经过的节点有很多,路由表示存储在路由器或一些其他链接设置上的窗体。其中记录着到指定目的地的网络路径,以及这些路径的相关数值。


安装mysql数据库
【groupadd mysql】创建mysql组
【useradd -g mysql mysql】创建mysql用户,并放入到mysql组
进入到mysql的文件夹
【scripts/mysql_install_db --user=mysql】初始化数据库
【chown -R root .】修改文件的所有者
【chown -R mysql data】修改date文件夹的所有者
【chgrp -R mysql .】改变用户组
启动mysql
【bin/mysqld_safe --user=mysql &】&表示以后台的方式启动
检查一下,ok,正常启动

如何进入mysql
【cd bin】
【./mysql -u root -p】


【evn】查看环境变量
cd /root 下面的.bash_profile(存放用户变量)里面可以修改path从而可以再别的目录下输出配置过的目录下的命令
vi .bash_profile 在path后面加上:/路径/bin/ 然后保存退出 logout重新登录即可使用

mysql驱动包要存放的位置
jdk主目录下/jre/lib/ext/



第二种安装方法
1、安装
 查看有没有安装过:
          yum list installed mysql*
          rpm -qa | grep mysql*
 查看有没有安装包:
          yum list mysql*
 安装mysql客户端:
          yum install mysql
 安装mysql 服务器端:
          yum install mysql-server
          yum install mysql-devel

2、启动&&停止
 数据库字符集设置
          mysql配置文件/etc/my.cnf中加入default-character-set=utf8
 启动mysql服务:
          service mysqld start或者/etc/init.d/mysqld start
 开机启动:
          chkconfig --add mysqld,查看开机启动设置是否成功chkconfig --list | grep mysql*
 
          mysqld             0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
 停止:
          service mysqld stop
2、登录
 这是需要启动mysqld    service mysqld start

 创建root管理员:
          mysqladmin -u root password 123456
 登录:
          mysql -u root -p输入密码即可。
 忘记密码:
          service mysqld stop
          mysqld_safe --user=root --skip-grant-tables
          mysql -u root
          use mysql
          update user set password=password("new_pass") where user="root";
          flush privileges;  
3、远程访问
 开放防火墙的端口号
mysql增加权限:mysql库中的user表新增一条记录host为“%”,user为“root”。
4、Linux MySQL的几个重要目录
 数据库目录
         /var/lib/mysql/
 配置文件
         /usr/share /mysql(mysql.server命令及配置文件)
 相关命令
         /usr/bin(mysqladmin mysqldump等命令)
 启动脚本
         /etc/rc.d/init.d/(启动脚本文件mysql的目录)


如何使用命令行来备份和恢复MySQL数据库
备份【mysqldunp -u root -p密码 数据库名 > data.bak】
恢复【mysql -u root -p密码 数据库名 < data.bak】(密码为root密码,紧跟着p后面)
上述命令是在mysql下的/bin目录下执行

SSH使用
linux上默认安装了sshd服务默认是启动的,监听端口号是22;
在windows上要安装shh客户端,则可以使用ssh客户端登录到linux



shell编程
通配符:* 代表多个字母或数字
? 代表一个字母或数字
【ls abc[1-9].tif】找出abc1.tif  直到abc9.tif
【sh 文件名】运行shell脚本
【./文件名】运行shell脚本,此时需要给文件赋予可执行权限才能执行
#!/bin/bash 在调用bash的脚本时候,以#!开头的语句通知系统用何解释器执行此脚本
第一个shell script
#!/bin/bash
# program:
#This program shows "Hello World"
echo -e "Hello world!\a\n"
v2=hdhdhdh  #赋值符号=两边不能有空格
ehco $v2   #输出变量v2
a=10
b=12
echo  $(($a+$b)) #输出变量a+b的值,必须两层小括号配$符号
exit 0

shell变量表达式
string为字符串变量
string=“i am boy”
${#string} $string的长度
${string:position} 从position开始提取字符串,即去掉前几个字母
${string:position:length} 从位置$position开始提取长度为$length的子串
${string#substring} 从开头删除最短匹配子串  echo ${string#I*.}删除I开头到.所有字符串
${string##substring} 从开头删除最长匹配子串  echo ${string##I*}删除I(包括I)后面的所有
${string%substring} 从结尾删除最短匹配子串
${string%%substring} 从结尾删除最长匹配子串
3**3表示3的3次方
第二个shell script
test判断文件用法
filename=/homm/houdun
test -f $filename && echo 'exist' || echo 'no exist'  判断是否存在houdun文件
test -d $filename && echo 'exist' || echo 'no exist'  判断是否存在houdun目录
test -w $filename && echo 'exist' || echo 'no exist'  判断houdun文件是否可写
test -x $filename && echo 'exist' || echo 'no exist'  判断houdun文件是否可执行

[]判断注意问题
[ $a == $b ] && echo ‘yes’|| echo ‘no’ 变量前后都得有空格(变量字符串有双引号,数字单引号)

条件判断
【if  判断句 ;then   fi】(单分支)
【if 判断句 ;then   else    fi】(双分支)
【if 判断句 ;then  elif 判断句     elif  判断句 esle   fi】(多分支)
【case $name in 1);;   esac】(多分支)
if [ -f $filename];then echo ‘the file is exist.’ fi(单分支)
也可以用if test -f $filename;then echo ‘the file is exist.’(if结束要有分号)
if [ -f $filename];then echo ‘the file is exist.’
else echo ‘the file is no exist’ fi (双分支)

第三个shell script
echo ‘please input your number’
read number
if [ $number == 1 ];then
echo ‘your input number is 1.’
elif [ $number == 2 ];then
echo ‘your input number is 2.’
else
echo ‘I do not what your input’
fi
第四个shell script
echo ‘please input your hardware’
read hd
if [ $hd == cpu ];then
echo ‘your input  is  cpu’
cat /proc/cpuinfo           #查看cpu信息
elif [ $hd == mem ];then
echo ‘your input  is mem.’
cat /proc/meminfo         #查看内存信息
elif [ $hd == hard ];then
echo ‘your harddisk info is.’
df -h           #查看硬件信息
else
echo ‘I do not what your input’
fi
第五个shell script(case后面必须以两个分号结尾)
echo ‘please input your number’
read number
case $number in
1) echo ‘your input number is 1.’;;
2) echo ‘your input number is 2.’;;
xxx) echo ‘your input number is xxx.’;;
*) echo ‘I do not what your input’;;
esac

在vi中set nu可以出现行数

循环语句
[]里面用 -eq -ne  -gt   -ge  -lt  -le  (推荐使用)
(()) 里面用正常的 ==  !=  >   >=  <   <=    (局限于数字之间的比较)
第六个shell script
i=10
while(($i>=5));do
echo $i;
((i--));
done;
第七个shell script
a=10
until [ $a -lt 0 ];do
echo $a;
((a--));
done;
until与while的区别:until是条件表达式不成立时执行,while是条件表达式成立时才执行
第八个shell script
for((i=1;i<=10;i++));do
echo $i;
done;



配置.bashrc文件可以指定某些程序在用户登录的时候就自动启动;
在用户目录下的.bashrc中写
if [ -f /etc/basgrc ];then
    ./etc/bashrc
fi
/home/tomcat/bin/startup.sh start   #开机启动tomcat


/etc/bashrc 修改后开机启动对所有用户有效
各自的.bashrc配置只对配置了的用户有效


当你希望临时加入一个路径时,使用export
比如:【export PATH=$PATH: /root】
【echo $PATH】打印路径

alias用法:【alias llh  ‘ls -l /home’】这样后llh就代表了【ls -l /home】命令

linux启动过程分析
runlevel 命令 可以查看当前的运行级别
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、其他特殊服务

压缩文件:(xy.zip为压缩后的名字)
【zip xy.zip 文件名】压缩一个文件
【zip xy.zip 文件 名1 文件名2】压缩多个文件压缩到一个里面
【zip -r xy.zip 文件夹路径】压缩文件夹
【zip -m xy.zip 文件夹路径】文件压缩后将源文件删除
【zip -j xy.zip 文件夹路径】忽略子目录的内容
【zip -n .mpg: .jpg: .gif】将已压缩的或没有必要压缩的文件去掉
【zip -y file.zip 文件夹路径】不压缩链接文件的源文件
【zip -9 file.zip 文件夹路径】-1---9的压缩最高
【zip file.zip * -x file2.txt】在压缩式,将当前目录内的file2.txt文件排除在外

解压缩文件
【unzip file.zip】直接解压缩
【unzip file.zip -x file2】处理file2文件外,其他文件都解压缩
【unzip -z file.zip】查看压缩包内容
【gunzip】
磁盘分区:



【mysql自动启动】
将mysql二进制包里面有一个mysql.server的驱动脚本程序。把他复制到/etc/rc.d/init.d目录
#cd /etc/rc.d/init.d
#cp /uer/local/mysql/supprt-files/mysql.server mysql

接着把他的属性改为x(可执行)
#chmod +x mysql

最后,运行chkconfig把mysql添加到你系统的启动服务组里面去
#/sbin/chkconfig --del mysql
#/sbin/chkconfig --add mysql


【防火墙】
/etc/init.d/iptables status
会得到一系列信息,说明防火墙开着。redhat在/etc/sysconfig/

/etc/init.d/iptables stop 【或者 service iptables status/stop】(临时生效)

永久关闭/开启:
chkconfig (--level 35) iptables off/on

另外,bz2的格式的解压也记录一下
bunzip2 filename.bz2

这样得到一个 filename的文件,原先文件消失了。






附加:
【shutdown】关机
【reboot】重启
【sync】数据同步 关机前对数据写入磁盘
    shutdown与halt区别:shutdown将依次关闭各服务才关机,halt进行硬件关机功能
【-】代表前一个工作目录
【~】代表目前用户所在的主文件夹

【who/w】显示已登录的用户
【last】列出所有登陆过的用户
【lastlog】显示每个账户登陆的时间
【write 用户账户[终端接口]】写信息给同主机某用户,[ctl]-d输入结束
【mesg n/y】设置是否接收信息,除屏蔽root外

mailbox 一般放置在/var/spool/mail
【mail username -s 邮件标题】写邮件给username,最后一行是 . 表示结束
【mail】接收邮件,出现&提示符后,输入?可查看各类操作

【pwck】检查/etc/passwd内信息,实际的主文件夹是否存在,与/etc/shadow是否一致
【lsmod】内核模块查看



mysql数据库乱码:
mysql> show variables like 'character%';
character_set_client为客户端编码方式;
character_set_connection为建立连接使用的编码;character_set_database数据库的编码;character_set_results结果集的编码;character_set_server数据库服务器的编码;
只要保证以上四个采用的编码方式一样,就不会出现乱码问题。

启动:/etc/init.d/mysql start
停止:/usr/bin/mysqladmin -u root -p shutdown

修改/etc/my.cnf:
  找到客户端配置[client] 在下面添加
    default-character-set=utf8 默认字符集为utf8
  在找到[mysqld] 添加
    default-character-set=utf8 默认字符集为utf8
    init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码)
启动MySQL服务(bin/mysqld_safe &)
0 0
原创粉丝点击