您的位置:首页 > 运维架构 > Linux

常用的Linux操作

2015-09-14 21:07 465 查看
书:《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 
4000
    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、启动
bb0c
&&停止

 数据库字符集设置

          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 &)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: