zoukankan      html  css  js  c++  java
  • Linux基础

         前言:  LINUX在之前仅仅了解一些皮毛知识,最近计划深入研究大数据,LINUX当然少不了,所以借此良机将LINUX也顺带添加进入学习的目录之中。为了知识的全面性,本文先恶补一下LINUX的基础,作为今后的学习查询。不在刻意深入学习,重点是HADOOP。  

    一、Linux Shell相关

            Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Unix/Linux系统的关键。

    Shell有两种执行命令的方式:

    • 交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。
    • 批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。

           Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。

           知识点(摘自网络):Shell执行脚本的4种方法   Shell常用技巧(1)   Shell常用技巧(2)   Shell常用技巧(3)  重定向  NFS配置

     二、Linux命令相关

           有关命令的资料太多,这里就给出一个在线命令查询足矣!   linux互传文件  windows与linux之间互传文件

            下面列出当初学习Linux命令的笔记,不为别的,只为能够快速记忆,并需要后续的补充和维护。  

    1- 避免使用“.”;大小写区分, 命令格式: 命令 -选项 参数;
         
         文件命令: pwd 获取当前文件位置; 
                  touch:创建文件; 如果已经存在,就改变文件的访问时间atime等时间戳信息。 "cat > "创建文件,如果文件已经存在,则清空。命令执行之后需继续输入文件内容,回车、ctrl+d结束。
                  mkdir:创建文件夹
                  cp:复制文件(cp file1 files xdir);
                  cp -R :复制文件夹;
                  mv:移动文件/文件夹或者给当前文件重命名
                  rm:删除文件或者文件夹
                  cat:查看短文件的内容    cat > 创建文件  cat >> 追加文件内容(如果不存在则创建)。
                  more:分页查看文件(空格按页分页显示,回车按行分页显示,Q/q退出此浏览模式)
                  head:查看文件的前-X行;  tail:查看文件的后-X行  
                 
                  ln:创建硬链接 ;ln -s:创建软链接        
                  软链接类似与WIN中的快捷方式;
                  硬链接类似与拷贝(时间也相同),但是它是同步更新(每个文件必须有i节点;硬链接与源文件有相同的i节点);
                  硬链接不能跨文件系统(类似与在WIN下,不能把文件生成硬链接从C盘到D盘),软链接可以;
                  echo: 打印内容。“>”重定向。
    示例:echo "hell" > a.txt 单行文本覆盖到文件。 
    echo "hell" >> a.txt 追加,不会覆盖原文件。
       文件搜索: which显示命令所在文件的目录; whereis:显示命令所在文件的目录; 两者不同之处:WHICH 会显示出命令的别名;WHEREIS 会显示出命令帮助文档的位置; 
    find:搜索文件
    /目录;尽量不要在/目录查找!!! 命令格式: find [搜索路径][搜索关键字]
    示例:find
    /etc/ -name init 在etc目录下查找名为init的文件或者目录;
    find
    /etc/ -name init* 在etc目录下查以init开头的文件或者目录;?匹配单个字符;
    find
    / -size +204800 在根目录下查找文件大于100M的文件;100M=102400K 1K=2个 数据块100M=204800块 find /home -user seasky 在home下查找属于seasky用户的文件;
    c
    -change a-access m-modify change:表示文件属性被修改;modify:表示文件的内容被修改过; ctime atime mtime 以天为单位 cmin amin mmin以分钟为单位 -之内,+之外;
            find
    /etc -ctime -1 在etc下查找24小时内修改属性的文件和目录; 连接: -a and -o or find /etc -size +163840 -a -size -204800 在etc下查找大于80M小于100M的文件;
            find
    /etc -type -d -o -size -204800 在etc下查找是目录并且小于100M;
             find ....
    -exec{}; find ....-ok{} 会询问确认; 可以对查找到的文件进行处理,{}表示find查询的结果,表示转译符;
    转译符的另一种用法:rm 其实是修饰过的命令,是rm
    -i 的别名,如果不想使用这个别名,就可以: m ; find /etc -name inittab -exec ls -l {};
    在etc目录下inittab文件并显示详细信息; 假如不小心创建了一个a b 这样的特殊文件,怎么删除呢 ? rm
    'a b'; 还有一种万能的方法:1、查看文件的i节点:ls -i 2、find . -inum 89 -exec rm {} ;
    locate:locate
    file ;查找与关键字有关的文件;很快,但是它有的找不到;因为它去查找的是文件系统的数据库; 这个命令通常配合updatedb使用;UNIX是没有这个命令的;
    grpe:是在文件中搜索字符串然后整行输出; grep
    [指定字符串][源文件]

    权限命令:chmod :chmod
    [u/g/o] [=/-/+] [x/r/w]
    eg: chmod u+x a.txt 给文件a的所属者添加可执行权限 chmod 641 a.txt 将文件a的权限修改为所有者可读可写(4+2),所属组为可读(4),其他人可执行(1);
    chown:改变文件的所有者;chown
    [用户][文件/文件夹]
    chgrp:改变文件的所属组;同上;
    umask :查看文件的权限,文件的权限掩码值; 例如:
    0022 0:特殊权限位; 777-022=755 755才是最终文件的权限; umask -S 比较直观;部分LINUX系统没有-S的选项;
    LINUX缺省创建的文件不能授予X权限;即使默认的权限是755,但是正在创建出来的文件也是没有X权限的;
    可以修改文件的默认创建的权限值;(不建议修改!!!) 默认是022即755;修改为750,命令加上750的掩码值(
    777-750=027)--> umask 027
    2-使用命令的帮助 示例: ls --help显示命令选项信息; 示例: 查看配置文件的简介:apropos file 类似与man -k 示例: man ls ;
    获得命令和配置文件的帮助文档(文档是按照more命令格式显示的);
    man services 不能写 man
    /etc/services ;查看配置文件的帮助文档; 如果命令和配置文件名相同怎么办?man 5 passwd 表示查看配置文件的帮助;
    在man 命令下
    1 代表命令; 5 代表配置文件;在UNIUX和LINUX下都支持。
    示例:info 在UNXIU下是没有的,跟man基本差不多,只是信息展现方式不同; 示例:whatis 获取命令的简单帮助信息; makewhatis :更新新安装软件的帮助文档,更新之后,whatis 和apropos就可以正常使用了;
    示例:help cd 查看SHELL内置命令的帮助;如果使用man 加内置命令,显示的信息是告诉你有系统有那些内置命令;

    3-文件权限:三种用户u g o r-read 4 w-write 2 x-execute 1 文件类型:d:目录 -:二进制 l:软链接 r 对文件的含义:可以查看文件内容;
    对文件夹的含义:可列出目录内的内容; w 对文件的含义:可修改文件的内容; 对文件夹的含义:可在目录内创建
    /删除文件;
    x 对文件的含义:可执行文件; 对文件夹的含义:可进入目录; 备注:普通用户删除一个文件,只有文件的W权限是没有用的,必须有所在目录的W权限才可以删除;

    4-存储数据的最小单位: 数据块(默认大小512K)
    5- 用户能修改密码是由于passwd这个命令文件有个特殊权限s:setuid;当一个可执行程序具有setuid权限,用户执行这个程序时,将以这个程序所有者的身份执行。
    我们通常也可以使用chmod将s权限赋予某命令:

    setUID=4 所有者 u setgid=2 所属组 g 粘着位=1 其他人 t
    chmod u+s 或chmod 4755 chmod g+s或chmod 2755或chmod 6755 chmod o+t或chmod 1777
     粘着位只能有效于目录,通常在777的目录上搞:每个用户可以在这个目录下创建文件,但是只能删除自己的文件)
       查找SetUID程序:find  /   -perm -4000 -o -perm -2000  查找在根目录下有setUID或者setGID的文件       LINUX用户管理链接

    6- 进程管理
    前台进程:用户在进程完成之前不能执行另一个命令;  
    进程管理命令:who 和 w 都可以查看当前用户的登录信息,w 用户名:查看某个用户信息;w给出的信息更多:
    JCPU,以终端代号来区分,该终端所有的进程执行时,所消耗的CPU时间会显示;
    PCPU:CPU执行程序消耗的时间;
    WHAT:用户正在执行的操作;
    load average:显示系统在1、5、15分钟内的平均负载程度;
    FROM :显示用户从哪里登录;“:0”显示用户从X Windows
    IDLE:用户闲置的时间。

    进程查看命令: ps 示例:ps -le or -aux:查看所有用户执行进程的详细信息 pstree 查看系统树状进程信息
    -a:显示所有用户的进程
    -u:显示用户名和启动时间
    -x:显示没有控制终端的进程
    -e:显示所有进程
    -l:长格式显示
    -w:宽行显示,可以使用多个w进行加宽显示
    ps显示内容:PID,进程号 PPID,父进程的进程号 TTY,进程启动的终端 SATA,进程当前状态 NI,进程优先级
    TIME,进程启动后占用CPU的时间 COMMAND/CMD,进程的命令 USER:用户名
    %CPU:占用CPU时间和总时间的百分比 %MEM,占用内存与系统内存总量的百分比 
                    top 进程状态显示和进程控制,每5秒自动刷新一次,常用选项: 
    d:指定刷新的时间间隔 c:显示整个命令行而不仅仅显示命令名
    u:查看指定用户的进程 h or ?:获得帮助
    k:终止执行中的进程 r:重新设置进程优先级
    s:刷新时间的间隔的改变
    w:将当前设置写入~/toprc文件中
     
       关闭进程:kill 进程号   kill -9 进程号(强行关闭) kill -1 进程号(重启进程)  
    xkill 关闭图形程序 killall 关闭所有进程
    查找服务进程号:pgrep 服务名称 关闭进程:pkill 进程名称
    优先级命令:nice 指定程序的运行优先级:nice -n command renice 改变一个正在运行的进程优先级:renice n pid
    优先级的范围 -20 ~ 19
    nohup 使进程在用户退出登录后仍旧继续执行,nohup命令将执行后的数据信息和错误信息默认存储在nonohp.out文件中
    nohup program &


    进程的挂起和终止: 挂起:Ctrl + Z 终止:Ctrl + C
    进程的恢复:恢复到前台继续运行 fg 恢复到后台继续运行 bg 查看被挂起的进程:jobs

    7-计划任务
    at:安排作业在某一时刻执行
    示例: 在5分钟后,将motd文件内容广播出去;

    另外,可使用ps -le | grep atd 命令检查作业是否成功。
    基本用法:at [-f 文件名] 时间
    at -d or atrm :删除队列中的任务
    at -l or atq :查看队列中的任务
    如果计划任务比较复杂,就使用脚本创建作业
    示例:1 生成脚本文件at.script 2 使用at命令 at -f at.scipt 9:00 2/2/11

    at的执行结果和配置文件:如果/etc/at.allow文件存在,那么只有在文件中的用户才可以使用at命令;
    如果/etc/at.allow文件不存在,则检查/etc/at.deny文件是否存在,
    如果/etc/at.deny存在,则在文件中的用户不能使用at命令
    如果两个文件不存在,则只有超级用户可以使用at命令
    如果两个文件存在且为空,则所有用户都可以使用at命令

    batch:安排作业在系统负载不重(平均负载降到0.8一下)时执行,使用方法同at

    cron;安排周期性作业
    crontab命令格式作用;用于生成cron进程所需的crontab文件
    crontab {-l | -r | -e} ; -l:显示当前的crontab; -r:删除当前的crontab; -e:使用编辑器编辑当前的crontab文件
    -e编辑时的时间:将知道的具体时间加上,不知道的为* ;“,”分割不同时间
    minnute hour day-ofomonth month-of-year day-of-week commands 【分钟、小时、天、月、星期、命令/脚本】
    注意:这些选项不能为空;每个时间字段都可以指定多个值,使用“,”分割;命令使用绝对路径;用户必须用使用命令的权限;
    示例: 55 12 * * 1-5 /usr/bin/wall < /etc/motd crontab文件an建立好之后可以在/var/spool/cron目录确认;

    进程处理方式: standalone:独立运行 例如:apache ; xinetd:进程托管(互联网超级守护进程) atd、crond:计划任务

    8-linux文件系统
    文件系统构成
    重要目录: /usr/bin、/bin:存放所有用户可以执行的命令 /tem:存放临时文件
    /usr/sbin、 /sbin:存放只有root可以执行的命令 /etc:系统配置文件
    /home:用户缺省宿主目录 /dev:存放设备文件 /var:包含经常发生变动的文件
    /proc:虚拟文件系统,存放当前内存镜像 /usr: 存放所有命令、库、手册等
    /lib:存放系统程序运行所需的共享库 /mnt:临时文件系统的安装点
    /lost+found:存放一些系统出错的检查结果 /boot:内核文件及自举程序文件保存位置
    在linux中安装文件习惯安装在/usr/local目录下;
    常用命令:查看分区使用情况:df 查看文件、目录大小:du
    监测修复文件系统:fsck、e2fsck(单用户模式) 判断文件类型:file
    使用光驱:挂载光驱 #mount /dev/cdrom /mnt/cdrom
    #df
    #cd /mnt/cdrom
    #ls /mnt/cdrom
    卸载光驱: #umount /mnt/cdrom
    #eject //弹出光驱
    挂载的设备:c表示字符设备 b表示块设备

    添加磁盘或分区:硬盘添加后,使用命令dmesg | grep sdX 检测硬盘是否添加成功;然后就
    1 划分分区(fdisk) 2 创建文件系统(mkfs) 3 尝试挂载(mount) 4 写入配置文件(/etc/fstab)
    参见示例

    SWAPFILE分区空间不足,可使用SWAPFILE实现:参考
    1.# mkdir /var/swap
    # chmod 700 /var/swap
    2.# dd if=/dev/zero of=/var/swap/file.swp bs=1024 count=65536 // dd硬盘之间的互相拷贝; dd可创建指定大小的文件,使用zero伪设备;
    3.# mkswap /var/swap/file.swp //将创建的64M空间作为swap来用
    4.# vi /etc/fstab
    /var/swap/file.swp swap swap defaults 0 0
    5.free
    6.swapon /var/swap/file.swp
    7.free

    磁盘配额 LVM讲解

    9-网络配置
    ifconfig 查看网络信息 ifconfig eth0 查看eth0网卡 ifconfig eth0 down 临时停用eth0网卡 ifconfig eth0 up 启用eth0网卡
    ifconfig eth0 192.168.2.22 临时修改网卡IP
    ifconfig eth0 192.168.2.22 netmask 255.255.255.0 临时修改IP和子网掩码
    永久修改网卡信息:vim /etc/sysconfig/network-scripts/ifcfg-eth0 service network restart
    hostname 查看当前用户名称 hostname zhangsan 修改用户名称(永久修改名称:vim  /etc/sysconfig/network )
    配置DNS信息vim :/etc/resolv.conf curl -v -L http://www.baidu.com 可以用来监测DNS是否设置好了 或者ping
    使用nslookup 后跟域名 可以用来监测DNS是否通。使用exit退出
    使用tracer(跟踪路由):后跟域名用来判断到达域名要经过多少个路由设备

    三、vi相关

         话不多说,一张图代表很多了。

         

     

       在贴上VI学习的笔记

      在命令模式下
      1、插入命令 
       第一组:a 在光标后附加文本 ,A在本行行末插入文本;
       第二组:i在光标前插入文本,I在本行开始插入文本;
       第三组:o在光标下插入文本,O在光标上插入文本;
      2、定位命令
       h:左移一个字符;   l:右移一个字符
       j:下移一行;       k:上移一行;
       $:移动至行首;    0:移动至行未;
       H:移动到屏幕上端;M:移动到屏幕中央;L:移动到屏幕下端;
      :set nu 设置行号; :setnonu 取消行号;
      gg:到第一行  G:到最后一行  nG 或者:n   到第N行
      3、删除命令
      x:删除光标所在处字符;nx:删除光标所在处后N个字符;
      dd:删除光标所在行 ndd:删除光标后N行
      dG:删除光标所在行到末尾的内容;
      D:删除光标所在位置到行未的内容;
      :n1,n2d :删除指定行;例如:2,5d
      4、复制/剪切命令
      yy Y:复制当前行    nyy nY:复制当前行一下N行   dd:剪切当前行(删除)   ndd:剪切当前行一下N行
      P p:粘贴在当前行上或者行下;
     5、替换和撤销命令
      r:取代光标处字符;R:从光标所在处开始开始替换字符,按ESC停止;
      u:取消上一步操作;
     6、搜索和替换命令
      /string:向前搜索指定字符串;搜索时忽略大小写:set ic,在执行/string命令后,直接:set ic即可;
      n:搜索指定字符串下一个出现位置,大小写的搜索方向不同;
      :%s/old/new/g :全文替换指定字符串,g 或者c都可以C会有提示;
      :n1,n2s/old/new/g :在一定范围内替换指定字符串
     7、其他命令
     文件另存为: :w 空格 文件目录和文件名
     在命令模式下执行命令 :! 命令
     将其他文件内容追加当前的文档 :r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd
     可以将命令执行的结果导入到文档中(结合上两个命令):示例::r !date 将时间添加在文档的光标位置;
     定义快捷键: :map  快捷键 触发的命令 unmap取消快捷键
     编辑VI的配置文件:ROOT的宿主目录在root目录 用户在其home下名为用户名的目录;用~/.表示;
     编辑这个宿主目录下文件  ~/.vimrc,将定义的快捷键写在这个文件即可;这样的快捷键是永久的。
     示例:将的当前添加注释:map ^P  I#<ESC>  ctrl+v  ctrl+v+p就可以打出^P;
     替换:将ABO替换成SEASKY-ABO  :ab ABO SEASKY-ABO  使用unab 取消替换;
    管道命令——| command1 | command2 | command3
    注:管道命令必须能够接受来自前一个命令的数据成为standard input继续处理。

      四、LINUX软件包管理

      Linux中的软件包主要分为RPM、YUM软件包及DEB软件包两类还有些可视化管理,其中Redhat Linux等系统使用RPM、YUM软件包,Ubuntu Linux等系统使用Deb软件包。

    1、RPM软件包管理  RPM包命令参考  linux源码安装参考

    首先,软件包的下载要注意硬件平台的差异。比如i386是WIN32位。

    * 软件包的卸载,例如:rpm -e sudo ;假如卸载的软件包在系统中其他应用依赖,建议先卸载依赖的应用;这也是为什么引入YUM的软件包管理原因。

    当然你也可以强行卸载(例如:rpm -e -nodeps sudo);  

    * 软件包的安装,例如: rpm -ivh sudo-1.7.2.p1-5.el5.i386.rpm ; i:install的意思 v:表示命令执行时显示详细信息 h:在安装时有个进度提示。

    安装包的获取:1、LINUX安装光盘    2、网络下载的软件(使用 rpm -i 软件可直接安装)
    安装LINUX光盘的软件,先要挂载光盘,需要一个挂载点就是空目录:         

    mkdir /mnt/cdrom //习惯都是搞在mnt目录下; 
    mount /dev/cdrom /mnt/cdrom //光盘通常放在dev目录下;
             

    挂载之后,访问/mnt/cdrom相当于访问光盘的内容:


    然后进入CENTOS目录,使用命令找到相应的安装包:如下图,然后安装,

    最后使用rpm来查看安装包是否安装了:

    下面显示系统中所有与samba系统有关的软件包:

    安装时候使用自定义的安装选项

    1/ --excludedocs : 不安装文件包中的文档文件
    2/ --prefix PATH :将软件安装到指定的PATH路径下;但是大部分的RPM包不允许改变路径;
    3/ --test :只进行测试安装,并没有真正安装

    安装时候的常见情况

    1/ 软件包已经被安装了   使用--replacepks覆盖

     
    2/ 文件冲突             使用--replacefiles忽略
    3/ 未解决的依赖关系     使用--nodeps强制安装,通常先将依赖包安装才是正道,但是依赖很多包怎么破:YUM

    软件升级

    rpm -Uvh sudo-1.7.2.p1-5.el5.i386.rpm

       

    2、 YUM软件包管理  帮助:yum -help man yum  YUM命令参考

    好处:解决包的依赖和升级方便,可是要联网
    YUM安装常用选项:安装:yum install 直接软件名称即可。


        

         

    检测升级:yum check-update


        

    升级:yum update


        

    软件包查询:yum list 查询的是yum源


      

      

    软件包信息:yum info


        

     卸载:yum remove

        
        

    3、APT软件包管理

     
     在虚拟中安装linux请选择VNT模式:然后进入linux给linux配置一个IP地址(一般为虚拟机默认的网段)。

     如果本机是固定IP,则配置完成。

     如果是动态IP,需要为VMnet8配置一个与虚拟同一网段的IP。如果有DNS以实际为准,没有就使用8.8.8.8

  • 相关阅读:
    分布式事务基本概念
    rocketmq源码分析3-consumer消息获取
    Mac下的Eclipse不能记住工作空间问题
    rocketmq源码分析2-broker的消息接收
    rocketmq源码分析1-benchmark学习
    metrics
    slf4j与logback对接是如何将日志写到控制台的
    Spring AOP
    hibernate数据库连接池,常用配置
    动态代理
  • 原文地址:https://www.cnblogs.com/java-oracle/p/6140224.html
Copyright © 2011-2022 走看看