zoukankan      html  css  js  c++  java
  • Linux简介及常用命令

    ********************************************序言***********************************************

    linux是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界的认可,目前很多中型,大型甚至是巨型项目都在使用linux。

    linux内核:redhat 、红旗linux、ubuntu、unix,aix,solaris,centOS,它们的内核都是一样的(Note:linux其实是一个统称,就比如面条是一个统称,可以有哨子面、阳春面、打卤面等)。

    linux的特点
    - (中国人最喜欢的一点)免费的/开源
    -   支持多线程/多用户(多并发)
    -   安全性好(开源的 一旦有个漏洞 就有网络界雷锋给修补了)
    -   对内存和文件管理优越
    -   Linux最小只有4m->嵌入式开发(手机用户多 多么庞大的市场)

    linux的文件系统是采用层级式的 树状目录 结构(windows是cdef盘),在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录
    深刻理解linux文件目录是非常重要的
    - /
    - root,存放root用户的相关文件
    - home,存放普通用户的相关文件(待会儿我新建用户,它就会在home目录给你创建个目录)
    - bin,存放常用命令的目录,cd /(目录切换到根目录,大家可以用个命令来看下 pwd,cd bin,ls –l ,可以看到vi ,su命令,vi删掉 那么vi命令就用不了了)如vi,su
    - sbin,要具有一定权限才可以使用命令
    - mnt,默认挂载光驱和软驱的目录
    - etc,存放配e置的相关文件(数据库,环境变量的配置)
    - var,存放经常变化的文件,如网络连接的sock文件
    - boot,存放引导系统启动的相关文件(文件被破坏了,Linux就起不来了 和windows类似)
    - usr,安装一个软件的默认目录,相当于windows下的program files

    Linux简介
    Linux是一个Unix类操作系统,完全开发源码,多用户多任务,服务器(数据库服务器、Web服务器、应用服务器、日志服务器、图片服务器等等)、嵌入式领域(如路由器等需要Linux才能启动)、移动终端(比如安卓手机等、平板),Linux主流版本有:RedHat、CentOS、Ubuntu、SUSE、FreeBSD

    linux 7大运行级别
    0 系统停止 1 单用户 2 多用户 不支持NFS 3多用户,命令行模式登陆(我们常用的运行级别) 4 未用 5 图形化界面 6 重新启动

    ***********************************华丽的分割线**********************************************

    linux操作注意事项:
    1、 Linux的命令是严格区分大小写的;
    2、 Linux支持三种格式的shell脚本,分别是 ksh、csh、sh
    3、 登陆系统后,显示:[root@localhost ~]#(表示当前是以root用户登陆) 或显示 [u101@localhost bin]$ (表示当前是以普通用户--u101登陆)
    4、 linux的默认超级用户/系统管理员是root用户
    5、 ~表示当前登录的用户所在的目录,如果是root用户登陆,就在/root目录下;如果是普通用户,就在home目录下


    ****************************************网络配置***********************************************

    ifconfig #查ip信息
    ping #测试网络是否连通
    setup #配置ip、防火墙、服务等信息
    service network restart(startstop) #重启网络服务(开启网络服务停止网路服务)
    虚拟网卡桥接连接方式(桥接/NAT模式)

    客户端工具(远程连接Linux服务器):crt、xshell、ssh、puty,通过SSH2(端口是22)协议远程连接到Linux服务器(SSH2协议是在安装Linux操作系统时自带的协议),前2个最常用,支持中文,后2个不支持中文。

    ********************************常用系统操作命令*********************************************

    1、ls / ll / ls -l #查看目录的内容
    [root@localhost ~]# ll
    总计 68
    -rw------- 1 root root 1413 06-12 18:38 anaconda-ks.cfg
    drwxr-xr-x 2 root root 4096 06-12 20:55 Desktop
    -rw-r--r-- 1 root root 35768 06-14 15:34 install.log
    -rw-r--r-- 1 root root 4713 06-12 18:37 install.log.syslog
    drwxrwxrwx 13 root root 4096 06-14 17:58 linux
    -rw-r--r-- 1 root root 4 06-13 02:11 ttt.txt

    第一段:文件类型和权限,以 - 开头的,表示文件;以d开头的,表示目录(权限部分跳过,后面有详细讲解)
    第二段:对于文件夹是代表子目录数
    第三、四段:文件的属主,文件的属组 (不理解,先跳过,后面有详细讲解)
    第五段:文件或文件夹本身大小
    第六、七段:文件的最后修改时间
    第八段:文件名称


    添加参数a,可显示隐藏文件,比如:ls -la

    2、cd 切换路径 #cd /etc/sysconfig
    3、pwd 查看当前路径 #pwd
    4、clear 清屏命令 #clear
    5、tab键 用来路径补全功能
    6、uname -r 查linux内核版本号 #uname -r
    7、netstat -an 查找linux或者windows下所有的端口 #netstat -an
    8、终止命令 crtl + c


    ***************************文件管理命令*************************************************

    1、mkdir 文件夹名 #创建文件夹,可以同时创建多个文件夹,如:mkdir d01 d02
    2、mkdir -p ./first/second #创建多层文件夹 first和second都不存在情况下建目录
    3、touch 文件名 #touch test.txt 创建文件,另外,touch命令还可以更新文件的修改时间
    4、rmdir d101 #删除空目录d101
    5、rmdir d102 d103 #同时删除两个空目录d102,d103
    7、rm -rf 文件名或文件夹名 #删除文件,非空文件夹

    8、cp 源文件路径/源文件名 目标路径 #复制文件到指定路径下 #cp T01/test.txt T02/
    9、cp -R 源文件路径/源目录名 目标路径 #拷贝文件夹到指定路径下(把文件夹以及文件夹下的所有内容一起拷贝)

    例子:在root文件夹下新建linux文件夹,然后进入linux文件夹新建t01 t02 t03三个文件夹,再在t01文件夹下新建a.txt文件
    1)、把 t01目录下的a.txt 文件复制到 t02目录
    cp ./t01/a.txt ./t02
    2)、把 t01 文件夹里面的所有内容复制到t03
    cp -R t01 t03

    10、移动/剪切文件
    10.1)mv 源文件路径/源文件名 目标路径        #将源文件剪切到目标路径下
    例:mv t01/a.txt t02/                                        #将t01文件夹里面的a.txt文件剪切到t02目录下
    10.2)mv 源文件路径/源文件名 目标路径       #文件重命
    例:mv t02/a.txt t02/aa.txt                              #将t02文件夹里面的a.txt文件重命名为aa.txts
    10.1)mv 源文件路径/源文件名 目标路径      #将源文件剪切到目标路径下
    例:mv t01/b.txt t03/cc.txt                             #将t01文件夹里面的b.txt文件剪切到t03目录下,并重命名为cc.txt

    11、查看文件命令:(install.log)
    (1)cat 文件名                 #查看文件的所有内容
    (2)cat -n 文件名            #查看文件的所有内容,并显示行数
    (3)more 文件名            #按回车一行,空格一页。不能向上下翻行。
    (4)less 文件名             #按回车一行,空格一页。可以通过上下键上下翻行。按q就退出。
    (5)head -n 文件名      #查看文件的前n行, n表示你要看的行数。
    (6)tail -n 文件名        #查看文件的后n行

    重定向:
    12、 > 导入(复制) cat A > B 把A的内容导入到B(把原来的内容覆盖)
    13、>> 追加导入 cat A >> B 把A的内容追加到B文件后面
    cat A B >> C 把A和B的内容分别导入到C文件

    14、查找文件中指定的内容,用 "管道: |" 和 grep 命令
    管道的作用:将前面一条命令的输出,当作后面命令的参数(输入)
    grep 查找指定字符
    如:查找系统中80端口的信息: netstat -an | grep 80

    练习:查找 ifcfg-eth0 中包含“OOT”字符串的信息

    查找指定字符串的另一种方式
    grep zpp /etc/passwd             #到/etc/passwd文件中查找zpp字符串 或者命令:cat /etc/passwd | grep zpp
    grep -n "root" /etc/group        #查看/etc/group文件中包含root的行并显示行号

    grep pattern1 files | grep pattern2  #查询两个字段出现在同一条日志

    15、查找文件
    语法:
    find 路径 参数 参数值
    例:
    find /root -name a.log        #在root目录下,按文件名称查找名字为a.log的文件
    find /root -name '*lo*'        #在root目录下,按文件名称查找名字包含 'lo' 字符的文件


    16、wc -l 文件名         #统计当前文件的行数 wc -l /T01/tt.txt

    **********************打包压缩管理*********************************

    打包压缩的文件后缀有这些:压缩文件(.gz)、压缩包(.tar.gz 或 .tgz)

    **** 对文件进行压缩命令:gzip ****
    语法:gzip 文件名称
    gzip只能压缩单个文件,不能压缩目录、也不能同时压缩多个文件
    例:
    gzip f101.txt #将f101压缩,形成压缩文件f101.gz

    **** 解压 ****
    语法:gzip -d 压缩包名
    例:
    gzip -d f101.gz 或 gunzip f101.gz #解压f101.gz文件

    **** 对文件进行打包并压缩 ****
    tar+参数+目标文件路径和包名+被打包的文件/文件夹名称
    tar -czvf t101.tar.gz T101                   #将T101文件夹打包并压缩到当前目录下的t101.tar.gz压缩包中
    tar -czvf /opt/t101.tar.gz T101           #将T101文件夹打包并压缩到/opt/t101.tgz压缩包中

    **** 解压缩 ***
    tar -xzvf t101.tar.gz                                        #将t101.tar.gz压缩包中的内容释放到当前目录中(注:只能解压当前文件夹下的压缩包)
    tar -xzvf t101.tar.gz -C /opt/d102/                  #将t101.tar.gz压缩包中的内容解压到/opt/d102/目录中


    将文件上传的linux服务器
    1、使用第三方工具上传,如:filezilla,SecureFx,winscp
    2、命令:rz

    把文件下载到本地:
    1、sz 文件名
    文件被下载到目录 选项--会话选项--X/Y/Zmodem--下载(O)所指定的文件夹

    #针对windows平台下的zip压缩包的解压
    unzip -d 目标路径 待解压文件
    unzip -d d101/ f101.zip      #将f101.zip解压到d101目录下

    *********************************远程操作*********************************

    1、在linux系统间远程访问(从一台服务器远程访问另一台服务器)
    语法:ssh 被访问的机器的用户名@被访问的机器的IP
    ssh root@172.11.1.67
    退出:logout

    2、scp #远程复制文件(夹)
    语法:scp -r 被访问的机器的用户名@被访问的机器的IP:/被复制的文件的路径 目标路径(本地)
    scp -r root@172.11.1.112:/root/install.log /root/

    ***************************组&用户&权限************************

    我们先来看看下面的信息:
    [root@localhost ~]# ll
    总计 68
    -rw------- 1 root root 1413 06-12 18:38 anaconda-ks.cfg
    drwxr-xr-x 2 root root 4096 06-12 20:55 Desktop
    -rw-r--r-- 1 root root 35768 06-14 15:34 install.log
    -rw-r--r-- 1 root root 4713 06-12 18:37 install.log.syslog
    drwxrwxrwx 13 root root 4096 06-14 17:58 linux
    -rw-r--r-- 1 root root 4 06-13 02:11 ttt.txt

    第一段:文件类型和权限,以 - 开头的,表示文件;以d开头的,表示目录,权限有rwx,分别是可读可写可执行
    第三、四段:文件的属主,文件的属组(属于哪个组的)

    *********** 组管理 ******
    组管理:( cat /etc/group ,查看当前系统存在多少个组)
    组:相同特性的用户的集合

    查看组的信息 cat /etc/group

    **************************************************************************
    用户管理:(/etc/passwd 存储用户基本信息、/etc/shadow存储用户密码信息)
    linux 用户分三类:超级用户(root) 、系统用户、普通用户
    添加用户: useradd 用户名
    用户设定密码: passwd 用户名

    useradd u101       #用户登录后,默认进入到其home目录,home目录在/home/目录下(root用户的home目录是/root)
    passwd u101       #passwd默认给当前用户设置密码,密码=字母+数字+下划线(_),超过8位,设置密码时,不会显示出来
    groups 用户名    #查看用户所在的组

    su - u101 #切换用户

    权限:Linux中通过控制每一类(有3类用户)用户对文件/文件夹的读、写、执行来实现权限控制
    对一个文件而言,用户分为以下三类:
    u:所属用户
    g:所属用户所在组的用户
    o:组以外的用户

    rwxr-xr-x: 前三个字符表示拥有者的权限,中间三个字符是组权限,后面三个字符其他人。
    r: read 可读
    w: write 可写
    x:execute 可执行

    r可以用数字 4 表示
    w可以用数字 2 表示
    x可以用数字 1 表示

    ********* 修改用户权限 **********
    chmod 权限 文件名
    chmod u-w,g+w,o=r Desktop      #删掉属主的写权限,增加组员的写权限,其他用户只有读的权限

    drwxrwxrwx 2 root root 4096 06-12 20:55 Desktop
    d:表示该文件为文件夹
    第一个rwx,表示该文件所属的用户对其所拥有的操作权限
    第二个rwx,表示与该文件所属用户在同组内的用户对其所拥有的操作权限
    第三个rwx,表示不与该文件所属用户在同组内的用户对其所拥有的操作权限

    #r=4;w=2;x=1,755
    chmod -R 574 Desktop/ 等同于 chmod -R u-w,g+w,o=r Desktop/ (-R表示文件夹及其所有子内容都会发生更改)

    最大是777(drwxrwxrwx),最小是000(d---------)
    chmod 777 Desktop/ 等同于 chmod a=rwx Desktop/    #a代表所有用户

    *********************************扩展命令*************************************

    cal        #查看日期
    date     #查看时间
    date -s "2013-03-23 16:36"        #修改系统时间

    df -h              #查磁盘信息
    free -m         #查看可用内存
    top               #动态查看系统资源 (默认是5秒刷新一次,相当于windows的资源管理器)

    输出变量的值:
    自定义变量:export UNAME="brtesting"
    echo $变量名NAME
    echo $PATH
    echo $SNAME

    who          #查看有哪些用户登录了系统
    ps -ef        #查看系统正在运行的所有进程
    ps -ef | grep tomcat         #查看指定的进程。查询tomcat进行信息,如果有信息返回,表示tomcat进程已启动,否则,被关闭。
    kill -9 pid                         #强制终止(pid表示进程号,可以用ps命令查看到进程号)

    比较两个文件之间差异
    diff file1 file2

    **************************用户行为******************************

    查看用户的操作系统管理员若想知道某一时刻用户的行为,只需要输入命令w 即可,在SHELL终端中输入如下命令:

    [root@localhost ~]# w

    10:07:13表示执行w的时间是在下午10点07分13秒。

    up 304 days 304表示系统运行304天。

    3 users 表示当前系统登陆用户总数为7。

    Load average 与后面的数字一起表示系统在过去1,5,10分钟内的负载程度,数值越小,系统负载越轻。

    从第二行开始构成一个登录用户信息列表,共有8个栏目,分别显示各个用户正在做的事情及该用户所占用的系统资源。

    USER:显示登陆用户帐号名。用户重复登陆,该帐号也会重复出现。

    TTY:用户登陆所用的终端。

    FROM:显示用户在何处登陆系统。

    LOGIN@:是LOGIN AT的意思,表示登陆进入系统的时间。

    IDLE:用户空闲时间,从用户上一次任务结束后,开始记时。

    JCPU:以终端代号来区分,表示在这段时间内,所有与该终端相关的进程任务所耗费的CPU时间。

    PCPU:指WHAT域的任务执行后耗费的CPU时间。

    WHAT:表示当前执行的任务。

    查看某用户是否登陆系统用户很多的时候,可以在w后面加上某个用户名,则会查看该用户执行任务的情况。
    [root@localhost ~]# w cssuser

    ****************************Vi编辑器***********************************

    linux常用文本编辑器vi
    1、三种模式:(1)命令模式(定位,复制,粘贴,删除)
    (2)编辑模式(文本输入)
    (3)末行模式(读写退出,替换,显示行号和行结束符)
    三种的切换:
    命令模式切换到编辑模式:输入i/a。 编辑模式退到命令模式:Esc
    2、末行模式是以冒号:开头。注意:末行模式必须是在命令模式下操作。命令:
    (1):wq 保存加退出
    (2):n n行数 跳转到指定行
    (3):q! 强制退出
    (4):n1,n2s/需要替换的字符串/替换字符串/g
    参数解释:
    n1 表示从第n1行开始,表示一个具体的数字,比如:1
    n2 表示从第n2行结束,表示一个具体的数字,如果想表示最后一行,可以用$表示,比如:20
    g 表示强制替换所有参数。

    列子:
    :1,5s/oracle/linux/g      #替换第1行开始到第5行中的oracle为linux
    :3,$s/oracle/linux/g     #替换第3行开始到最后一行中的oracle为linux

    /* **** 扩展命令
    (5):w 文件名    另存为
    (6):set nu        显示行号
    (7):set nonu    不显示行号

    ****** */

    3、命令模式下的命令:
    (1)dd    删除一行,光标所在行
    (2)i     进入编辑模式,在光标前编辑
    (3)x    删除一个字符。
    (4)/     搜索字符 字符串搜索,查找下一个,按n, 向下查找。如果向上查找,按N。
    (5)yy  复制
    (6)p    粘帖

    /* **** 扩展命令
    (7)G    到末行
    (8)gg   到首行
    (9)$     到行尾
    (10)^   到行首
    (11)ngg    跳转到n行
    (12)a        进入编辑模式,在光标后编辑
    (13)ndd   删除n行,从光标所在行向下删除n行
    (14)u       撤销
    (15)o       新增一行并进入到编辑模式,向下增加。如果是大写的O,就是向上增加。
    (16)D       删除当前光标所在位置到行尾的内容
    (17)nyy   复制n行,从光标所在的位置往下复制
    ****** */

    扩展命令二:
    1、mount --- 挂载光驱
    2、umount --- 卸载挂载的文件系统
    3、rpm -ivh 安装文件名 ---- 安装软件
    4、rpm -e 需要卸载的安装包 ---- 卸载软件

  • 相关阅读:
    我的浏览器收藏夹分类
    我的浏览器收藏夹分类
    Java实现 LeetCode 318 最大单词长度乘积
    Java实现 LeetCode 318 最大单词长度乘积
    Java实现 LeetCode 318 最大单词长度乘积
    Java实现 LeetCode 316 去除重复字母
    Java实现 LeetCode 316 去除重复字母
    Java实现 LeetCode 316 去除重复字母
    Java实现 LeetCode 315 计算右侧小于当前元素的个数
    Java实现 LeetCode 315 计算右侧小于当前元素的个数
  • 原文地址:https://www.cnblogs.com/datacenter/p/11451419.html
Copyright © 2011-2022 走看看