Linux命令(持续更新)

1、 tail 命令

    tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。

  tail  -f  filename 会把 filename 文件里的最尾部的内容显示在屏幕上(默认10行,相当于增加参数 -n 10),并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

  命令格式:

    tail [参数] [文件]
 
参数:
    • -f 循环读取
    • -q 不显示处理信息
    • -v 显示详细的处理信息
    • -c<数目> 显示的字节数
    • -n<行数> 显示文件的尾部 n 行内容
    • --pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
    • -q, --quiet, --silent 从不输出给出文件名的首部
    • -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

  常用实例:

    1、tail -f filename
      
说明:监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C。

    2、tail -n 20 filename

      说明:显示filename最后20行。

    3、tail -r -n 10 filename
      说明:逆序显示filename最后10行。

2、grep 命令 (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)

  Linux grep命令用于查找文件里符合条件的字符串。

  常用实例:

    1、grep test *file

      说明:在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。

    2、grep -r update /etc/acpi 

      说明:以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容

3、vi 命令

  vi命令可以查找和编辑等操作

  常用实例:

    vi filename :打开或新建文件,并将光标置于第一行首 
    vi +n filename :打开文件,并将光标置于第n行首 
    vi + filename :打开文件,并将光标置于最后一行首 
    vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 
    vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename 
    vi filename....filename :打开多个文件,依次进行编辑 

  一般进入文件的vi命令,会让你选择模式:

4、ps (process status)命令

   ps命令用于显示当前进程 (process) 的状态,类似于windows的任务管理器。

  实例:

    查看一个程序是否运行:  ps –ef|grep tomcat 查看所有有关tomcat的进程

    下面对命令选项进行说明:

      -e 显示所有进程。
      -f 全格式。

      | 是管道命令 是指ps命令与grep同时执行

 5、top 命令

  top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器

top命令显示了系统整体的运行情况,还列出了各个进程PID相关信息,可以通过pid查看具体进程信息:

Linux下通过PID查看进程完整信息

(1)Linux在启动一个进程时,系统会在/proc下创建一个以PID命名的文件夹,在该文件夹下会有我们的进程的信息,其中包括一个名为exe的文件即记录了绝对路径,通过ll或ls –l命令即可查看

 ll /proc/PID 

 

cwd符号链接的是进程运行目录;

exe符号连接就是执行程序的绝对路径;

cmdline就是程序运行时输入的命令行命令;

environ记录了进程运行时的环境变量;

fd目录下是进程打开或使用的文件的符号连接。

 (2)ps -ef|grep 23753

 

top命令返回的各个参数的含义

参数含义:

top - 01:06:48 up  1:22,  1 user,  load average: 0.06, 0.60, 0.48
Tasks:  29 total,   1 running,  28 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.3% us,  1.0% sy,  0.0% ni, 98.7% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    191272k total,   173656k used,    17616k free,    22052k buffers
Swap:   192772k total,        0k used,   192772k free,   123988k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
1379 root      16   0  7976 2456 1980 S  0.7  1.3   0:11.03 sshd
14704 root      16   0  2128  980  796 R  0.7  0.5   0:02.72 top
1 root      16   0  1992  632  544 S  0.0  0.3   0:00.90 init
2 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0

统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

01:06:48    当前时间
up 1:22 系统运行时间,格式为时:分
1 user 当前登录用户数
load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

Tasks:  
  total 进程总数
  running 正在运行的进程数
  sleeping 睡眠的进程数
  stopped 停止的进程数
  zombie 僵尸进程数
Cpu(s): 
  0.3% us 用户空间占用CPU百分比
  1.0% sy 内核空间占用CPU百分比
  0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
  98.7% id 空闲CPU百分比
  0.0% wa 等待输入输出的CPU时间百分比
  0.0%hi:硬件CPU中断占用百分比
  0.0%si:软中断占用百分比
  0.0%st:虚拟机占用百分比

判断cpu使用情况

  wa低,us高 :说明系统缓慢的原因在于进程占用大量CPU,通常还会伴有教低的id,说明CPU空转时间很少;
  wa低,id高 :可以排除CPU资源瓶颈的可能;
  wa高 :说明I/O占用了大量的CPU时间,需要检查交换空间的使用,交换空间位于磁盘上,性能远低于内存,当内存耗尽开始使用交换空间时,将会给性能带来严重影响,所以对于性能要求较高的服务器,一般建议关闭交换空间。另一方面,如果内存充足,但wa很高,说明需要检查哪个进程占用了大量的 I/O资源。

最后两行为内存信息。内容如下:

Mem(物理内存):
  191272k total    物理内存总量
  173656k used    使用的物理内存总量
  17616k free    空闲内存总量
  22052k buffers    用作内核缓存的内存量
Swap(虚拟内存): 
  192772k total    交换区总量
  0k used    使用的交换区总量
  192772k free    空闲交换区总量
  123988k cached    缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
 

swap介绍
  在详细介绍swap之前,我们需要知道的是计算机对内存分为物理内存与虚拟内存(注意虚拟内存虚拟地址空间的区别)。物理内存就是计算机的实际内存大小,由RAM芯片组成的。虚拟内存则是虚拟出来的、使用磁盘代替内存。虚拟内存的出现,让机器内存不够的情况得到部分解决。当程序运行起来由操作系统做具体虚拟内存到物理内存的替换和加载(相应的页与段的虚拟内存管理)。这里的虚拟内存即所谓的swap。

  当用户提交程序,然后产生进程,在机器上运行。机器会判断当前物理内存是否还有空闲允许进程调入内存运行,如果有那么则直接调入内存进行运行;如果没有,那么会根据优先级选择一个进程挂起,把该进程交换到swap中等待,然后把新的进程调入到内存中运行。根据这种换入和换出,实现了内存的循环利用,让用户感觉不到内存的限制。从这也可以看出swap扮演了一个非常重要的角色,就是暂存被换出的进程。

  内存与swap之间是按照内存页为单位来交换数据的,一般Linux中页的大小设置为4kb。而内存与磁盘则是按照块来交换数据的。

总结:

  1、当物理内存快被耗尽时,系统并没有崩溃,而是拿swap做临时内存,当两者都耗尽,系统OutofMemory
  2、物理内存到达峰值,系统中可能一些不常用的进程内存占用被踢到swap区
  3、当Mem区的资源进行释放时,被挪到swap的内存并不会全部回来的,随着系统或者程序的唤醒才会慢慢回到mem区
  4、Swap是内存不够时磁盘虚拟出来的内存,磁盘主要是I/O级别的操作并不是系统内核级别的操作,处理速度跟Mem区不是一个等级

怎么看内存有多少空闲呢?
  totalfree = free17616 + buffers22052 + cached123988

进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

序号  列名    含义
a    PID     进程id
b    PPID    父进程id
c    RUSER   Real user name
d    UID     进程所有者的用户id
e    USER    进程所有者的用户名
f    GROUP   进程所有者的组名
g    TTY     启动进程的终端名。不是从终端启动的进程则显示为 ?
h    PR      优先级
i    NI      nice值。负值表示高优先级,正值表示低优先级
j    P       最后使用的CPU,仅在多CPU环境下有意义
k    %CPU    上次更新到现在的CPU时间占用百分比
l    TIME    进程使用的CPU时间总计,单位秒
m    TIME+   进程使用的CPU时间总计,单位1/100秒
n    %MEM    进程使用的物理内存百分比
o    VIRT    进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p    SWAP    进程使用的虚拟内存中,被换出的大小,单位kb。
q    RES     进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r    CODE    可执行代码占用的物理内存大小,单位kb
s    DATA    可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t    SHR     共享内存大小,单位kb
u    nFLT    页面错误次数
v    nDRT    最后一次写入到现在,被修改过的页面数。
w    S       进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
x    COMMAND 命令名/命令行
y    WCHAN   若该进程在睡眠,则显示睡眠中的系统函数名
z    Flags   任务标志,参考 sched.h
 

默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。 

更改显示内容通过 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。 
按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。 
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。

 

 6、su (Substitute User)命令

  使用 whoami 命令查看当前用户 (或者 分开写: who am i)

                    

用户切换的命令为:su 用户名,如图我切换到blegn用户

                   

再操作从blegn用户切换到root用户,提示需要输入密码。

                 

超级管理员命令以“#”开始,普通用户以“$”开始

               

 

 7、date 命令  (查看系统时间)

设置当前系统时间为2015年5月8日19点48分0秒

  date -s "2015-05-08 19:48:00"

查看系统时间多种方式  基本上,date命令会翻译所有所有的百分号(%)开头的格式和输出在引号("")内所有的内容。

  date "+%Y-%m-%d %H-%M-%S "       2017-09-20 11-06-30

  date +%D                                           17/05/13

 

8、备份数据库表数据

 (1) 复制表结构和表数据     

create table 表名_BAK_日期 as select * from 表名;   ## 并不会创建索引   

 (2)  只复制表结构:      

create table 表名_BAK_日期 as select * from 表名 where 1=2; 

 (3)  只复制数据: 

   3.1:两个表结构一样

insert into d_table_name select * from s_table_name;

     3.2:两个表的结构不一样,只复制部分列

insert into d_table_name (column1,column2,column3) select column1x,column2x,column3x from s_table_name;

 

9、touch 创建文件和修改文件或者目录的时间戳

语法:touch  【选项】 【文件名或者目录名】

参数:

 -a  只修改文件的access(访问)时间.

    -c  或--no-create  不创建不存在的文件。

    -d  使用指定的日期时间,而非现在的时间

    -m 指修改Modify(修改)时间,而不修改access(访问)时间

    -r  file  使用指定file文件的时间戳(access,modify)更新文件的时间戳(access,modify)

               注:access 表示最后一次访问(仅仅是访问,没有改动)文件的时间

                     modify 表示最后一次修改文件的时间

                     change 表示最后一次对文件属性改变的时间,包括权限,大小,属性等等

    -t  将时间修改为参数指定的日期,如:07081556代表7月8号15点56分

 

10、vim 

 vim编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器;vi也是Linux中最基本的文本编辑器,vim就是vi的升级版。

常用命令:

  a:vim 文件名

    vi之后处于命令行模式,您要切换到插入模式才能够输入文字。

  b:切换至插入模式(Insert mode)编辑文件

    在命令行模式下按一下字母 就可以进入插入模式,输入文字了。

  c: Insert 的切换

    处于插入模式,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下ESC键转到命令行模式再删除文字。

  d: 退出vi及保存文件 

    在命令行模式下,按一下:冒号键进入底行模式,例如:
    : w filename (输入w filename将文章以指定的文件名filename保存)
    : wq (输入wq,存盘并退出vi)
    : q! (输入q!, 不存盘强制退出vi)

  

 11、chmod  (Change mode)访问权限

  chmod命令用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限

  Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以藉以控制文件如何被他人所调用

语法:         

      第一种方法(符号模式)      chmod     [{ugoa}{+-=}{rwx}]      [文件或目录]

                    备注:             u:所有者    g:所属组    o:其他人    a:所有人

                                            +:为用户增加权限     -:为用户减少权限     =:为用户赋予权限

                                            r:读权限     w:写权限      x:执行权限 

      范例:  (1)chmod a+x file.txt      // 此处的a代表所有用户,+代表添加权限,x代表执行权限

           (2)chmod a+r file1.txt   // 将文件 file1.txt 设为所有人皆可读取 

           (3)chmod ugo+r file1.txt   // 将文件 file1.txt 设为所有人皆可读取 

 

                    第二种方法(绝对模式)      chmod   -R    [mode=421]     [文件或目录]     ←(这种方法用的比较多)

                     备注:            r:4   w:2   x:1

                                            r为读权限,可以用4来表示,

                                            w为写权限,可以用2来表示,

                                            x为执行权限,可以用1来表示。

                                           -R 递归修改(就是将嵌套在很多文件夹中的文件权限修改了,如果没有这个,只能到指定的文件夹下进行修改)

     范例:         (1)chmod     777     /etc/hurenxiang       // 将hurenxiang这个文件夹权限改为对所有用户可读,可写,可执行

                         (2)chmod     775     /etc/caiyao               // 将caiyao这个文件夹权限改为其他用户不可写
  linux数字权限解析:

  数字:左至右,第一位数字代表文件所有者的权限,第二位数字代表同组用户的权限,第三位数字代表其他用户的权限。

  而具体的权限是由数字来表示的,读取的权限等于4,用r表示;写入的权限等于2,用w表示;执行的权限等于1,用x表示;

  通过4、2、1的组合,得到以下几种权限:0(没有权限);4(读取权限);5(4+1 | 读取+执行);6(4+2 | 读取+写入);7(4+2+1 | 读取+写入+执行)

以755为例:

  第一位7等于4+2+1,rwx,所有者具有读取、写入、执行权限;

  第二位5等于4+1+0,r-x,同组用户具有读取、执行权限但没有写入权限;

  第三位5,同上,也是r-x,其他用户具有读取、执行权限但没有写入权限。

 

12、sh脚本(处理用户输入)

  bash shell 会将一些称为位置参数(positional parameter)的特殊变量分配给输入到命令行中的所有参数。这也包括 shell 所执行的脚本名称。位置参数变量是标准的数字:$0 是程序名,$1是第一个参数,$2 是第二个参数,依次类推,直到第九个参数 $9。 

例子:test1.sh

#!/bin/bash
# testing two command line parameters
#
total=$[ $1 * $2 ]
echo The first parameter is $1.
echo The second parameter is $2.
echo The total value is $total.

执行:$ ./test1.sh 2 5

输出:

The first parameter is 2.
The second parameter is 5.
The total value is 10.

read 等待用户输入

 read 命令从标准输入(键盘)或另一个文件描述符中接受输入。在收到输入后,read 命令会将数据放进一个变量。

例子:test2.sh

#!/bin/bash
# testing the read command
#
echo -n "Enter your name: "
read name
echo "Hello $name, welcome to my program. "

执行:$ ./test2.sh 

输出:

Enter your name: Tom
Hello Tom, welcome to my program.

其他相关用法请看: shell 学习笔记

 

13、scp(secure copy)用于Linux之间复制文件和目录

 scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令

简易写法: 

scp [可选参数] file_source file_target 

实例

1、从本地复制到远程

命令格式:

scp local_file remote_username@remote_ip:remote_folder 
#或者 
scp local_file remote_username@remote_ip:remote_file 
#或者 
scp local_file remote_ip:remote_folder 
#或者 
scp local_file remote_ip:remote_file 
  • 第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;
  • 第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名;

应用实例:

scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music 
scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music/001.mp3 
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music 
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music/001.mp3 

 

复制目录命令格式:

scp -r local_folder remote_username@remote_ip:remote_folder 
#或者 
scp -r local_folder remote_ip:remote_folder 
  • 第1个指定了用户名,命令执行后需要再输入密码;
  • 第2个没有指定用户名,命令执行后需要输入用户名和密码;

应用实例:

scp -r /home/space/music/ root@www.runoob.com:/home/root/others/ 
scp -r /home/space/music/ www.runoob.com:/home/root/others/ 

  上面命令将本地 music 目录复制到远程 others 目录下。

2、从远程复制到本地

从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可,如下实例

应用实例:

scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3 
scp -r www.runoob.com:/home/root/others/ /home/space/music/

说明

1.如果远程服务器防火墙有为scp命令设置了指定的端口,我们需要使用 -P 参数来设置命令的端口号,命令格式如下:

#scp 命令使用端口号 4588
scp -P 4588 remote@www.runoob.com:/usr/local/sin.sh /home/administrator

2.使用scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用的。

 

14、新建文件或文件夹、删除文件或文件夹( mkdir、touch、rm)

  新建文件命令:touch

  新建文件夹命令:mkdir

  删除文件或文件夹命令:rm

 

(一) touch命令

 linux下新建文件的方式有非常多,比如:使用vi新建文件、使用cp命令拷贝一个文件、可是最经常使用的还是使用touch命令新建一个文件。

  Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

  ls -l 可以显示档案的时间记录。

语法:

touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]

 

实例:

使用指令"touch"修改文件"testfile"的时间属性为当前系统时间,输入如下命令

$ touch testfile                #修改文件的时间属性

首先,使用ls命令查看testfile文件的属性,如下所示:

$ ls -l testfile                #查看文件的时间属性  
#原来文件的修改时间为16:09  
-rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile  

执行指令"touch"修改文件属性以后,并再次查看该文件的时间属性,如下所示:

$ touch testfile                #修改文件时间属性为当前系统时间  
$ ls -l testfile                #查看文件的时间属性  
#修改后文件的时间属性为当前系统时间  
-rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile  

使用指令"touch"时,如果指定的文件不存在,则将创建一个新的空白文件。例如,在当前目录下,使用该指令创建一个空白文件"file",输入如下命令:

$ touch file            #创建一个名为“file”的新的空白文件 

 

(二) mkdir 命令 (递归创建文件夹)

语法:

mkdir [-p] dirName

    -p:递归创建文件夹 ,确保目录名称存在,不存在的就建一个
    -mmode:新建文件夹,并设置文件夹的文件訪问模式为mode

使用-p选项递归的创建zsy/hxn文件夹。 

 

 使用-m选项指定新建文件夹的文件訪问模式为770,即rwxrwx---。

 

 

(三) rm命令 (用于删除一个文件或者目录)

语法:

rm [options] name...

参数

  • -i 删除前逐一询问确认。
  • -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
  • -r 将目录及以下之档案亦逐一删除。

在实际使用中。-r和-f选项一般同一时候使用,用来强制、递归的删除指定的文件或者文件夹。

 

实例

删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r",例如:

# rm  test.txt 
rm:是否删除 一般文件 "test.txt"? y  
# rm  homework  
rm: 无法删除目录"homework": 是一个目录  
# rm  -r  homework  
rm:是否删除 目录 "homework"? y 

删除当前目录下的所有文件及目录,命令行为:

rm  -r  * 

文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令。

对于关键的文件或者文件夹,在删除时建议使用-i选项。避免误操作。

 

15、解决执行shell脚本时提示这样的错误主要是由于shell脚本文件是dos格式导致

在执行shell脚本时提示这样的错误主要是由于shell脚本文件是dos格式,即每一行结尾以\r\n来标识,而unix格式的文件行尾则以\n来标识。
  查看脚本文件是dos格式还是unix格式的几种办法。
 (1)cat -A filename  从显示结果可以判断,dos格式的文件行尾为^M$,unix格式的文件行尾为$。
 (2)od -t x1 filename 如果看到输出内容中存在0d 0a的字符,那么文件是dos格式,如果只有0a,则是unix格式。
 (3)vi filename打开文件,执行 : set ff,如果文件为dos格式在显示为fileformat=dos,如果是unxi则显示为fileformat=unix。

  解决方法:
 (1)使用linux命令dos2unix filename,直接把文件转换为unix格式
 (2)使用sed命令sed -i "s/\r//" filename  或者 sed -i "s/^M//" filename直接替换结尾符为unix格式
 (3)vi filename打开文件,执行 : set ff=unix 设置文件为unix,然后执行:wq,保存成unix格式。

16、telnet命令

  telnet命令通常用来远程登录。telnet程序是基于TELNET协议的远程登录客户端程序。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的 能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个 telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。

  但是,telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统可能采用了telnet方式来提供远程登录,因此弄清楚telnet客户端的使用方式仍是很有必要的。

  telnet命令还可做别的用途,比如确定远程服务的状态,比如确定远程服务器的某个端口是否能访问。

常用命令:

  telnet ip

  telnet ip 端口号

 

17、 ssh命令

SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口,22端口是ssh服务的),包括公共秘钥等交换等信息。

ssh服务端由2部分组成: openssh(提供ssh服务)    openssl(提供加密的程序)

ssh的客户端可以用 XSHELL,Securecrt, Mobaxterm等工具进行连接

SSH的工作机制 

      服务器启动的时候自己产生一个密钥(768bit公钥),本地的ssh客户端发送连接请求到ssh服务器,服务器检查连接点客户端发送的数据和IP地址,确认合法后发送密钥(768bits)给客户端,此时客户端将本地私钥(256bit)和服务器的公钥(768bit)结合成密钥对key(1024bit),发回给服务器端,建立连接通过key-pair数据传输。       

SSH的加密技术

加密技术:传输过程,数据加密。             
1.SSH1没有对客户端的秘钥进行校验,很容易被植入恶意代码 
2.SSH2增加了一个确认联机正确性的Diffe_Hellman机制,每次数据的传输,Server都会检查数据来源的正确性,避免黑客入侵。                    
  SSH2支持RSA和DSA密钥    
        DSA:digital signature Algorithm  数字签名
        RSA:既可以数字签名又可以加密      

SSH知识小结           

   1.SSH是安全的加密协议,用于远程连接Linux服务器                
   2.SSH的默认端口是22,安全协议版本是SSH2                
   3.SSH服务器端主要包含2个服务功能SSH连接和SFTP服务器                
   4.SSH客户端包含ssh连接命令和远程拷贝scp命令等 

 

常用命令: ssh 用户名@ip

 

18、目录的操作命令(增删改查)

1: ls或者llllls -l的别名,ll命令可以看到该目录下的所有目录和文件的详细信息):查看目录信息

2: find 目录 参数: 寻找目录(查)

示例:

  • 列出当前目录及子目录下所有文件和文件夹: find .
  • /home目录下查找以.txt结尾的文件名:find /home -name "*.txt"
  • 同上,但忽略大小写: find /home -iname "*.txt"
  • 当前目录及子目录下查找所有以.txt和.pdf结尾的文件:find . \( -name "*.txt" -o -name "*.pdf" \)find . -name "*.txt" -o -name "*.pdf"

3:  mv 目录名称 新目录名称: 修改目录的名称(改)

  注意:mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行 重命名的操作。mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。后面会介绍到mv命令的另一个用法。

4:  mv 目录名称 目录的新位置: 移动目录的位置---剪切(改)

  注意:mv语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作。另外mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。

5:  cp -r 目录名称 目录拷贝的目标位置: 拷贝目录(改),-r代表递归拷贝

  注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不 用写-r递归

6:  rm [-rf] 目录: 删除目录(删)

  注意:rm不仅可以删除目录,也可以删除其他文件或压缩包,为了增强大家的记忆, 无论删除任何目录或文件,都直接使用rm -rf 目录/文件/压缩包

 

19:文件的操作命令(增删改查)

  1. touch 文件名称: 文件的创建(增)

  2. cat/more/less/tail 文件名称 文件的查看(查)

    • cat: 查看显示文件内容
    • more: 可以显示百分比,回车可以向下一行, 空格可以向下一页,q可以退出查看
    • less: 可以使用键盘上的PgUp和PgDn向上 和向下翻页,q结束查看
    • tail-10 : 查看文件的后10行,Ctrl+C结束

    注意:命令 tail -f 文件 可以对某个文件进行动态监控,例如tomcat的日志文件, 会随着程序的运行,日志会变化,可以使用tail -f catalina-2016-11-11.log 监控 文 件的变化

  3. vim 文件: 修改文件的内容(改)

    vim编辑器是Linux中的强大组件,是vi编辑器的加强版,vim编辑器的命令和快捷方式有很多,但此处不一一阐述,大家也无需研究的很透彻,使用vim编辑修改文件的方式基本会使用就可以了。

    在实际开发中,使用vim编辑器主要作用就是修改配置文件,下面是一般步骤:

    vim 文件------>进入文件----->命令模式------>按i进入编辑模式----->编辑文件 ------->按Esc进入底行模式----->输入:wq/q! (输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存。)

  4. rm -rf 文件: 删除文件(删)

    同目录删除:熟记 rm -rf 文件 即可

20: 压缩文件的操作命令

1)打包并压缩文件:

  Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。

  而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。 命令:tar -zcvf 打包压缩后的文件名 要打包压缩的文件 其中:

    z:调用gzip压缩命令进行压缩

    c:打包文件

    v:显示运行过程

    f:指定文件名

  比如:假如test目录下有三个文件分别是:aaa.txt bbb.txt ccc.txt,如果我们要打包test目录并指定压缩后的压缩包名称为test.tar.gz可以使用命令:tar -zcvf test.tar.gz aaa.txt bbb.txt ccc.txt或:tar -zcvf test.tar.gz /test/

2)解压压缩包:

命令:tar [-xvf] 压缩文件

其中:x:代表解压

示例:

1 将/test下的test.tar.gz解压到当前目录下可以使用命令:tar -xvf test.tar.gz

2 将/test下的test.tar.gz解压到根目录/usr下:tar -xvf test.tar.gz -C /usr(- C代表指定解压的位置)

21: Linux的权限命令

  操作系统中每个文件都拥有特定的权限、所属用户和所属组。权限是操作系统用来限制资源访问的机制,在Linux中权限一般分为读(readable)、写(writable)和执行(excutable),分为三组。分别对应文件的属主(owner),属组(group)和其他用户(other),通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。通过 ls -l 命令我们可以 查看某个目录下的文件或目录的权限

示例:在随意某个目录下ls -l

第一列的内容的信息解释如下:

下面将详细讲解文件的类型、Linux中权限以及文件有所有者、所在组、其它组具体是什么?

文件的类型:

  • d: 代表目录
  • -: 代表文件
  • l: 代表软链接(可以认为是window中的快捷方式)

Linux中权限分为以下几种:

  • r:代表权限是可读,r也可以用数字4表示
  • w:代表权限是可写,w也可以用数字2表示
  • x:代表权限是可执行,x也可以用数字1表示

文件和目录权限的区别:

对文件和目录而言,读写执行表示不同的意义。

对于文件:

权限名称可执行操作
r 可以使用cat查看文件的内容
w 可以修改文件的内容
x 可以将其运行为二进制文件

对于目录:

权限名称可执行操作
r 可以查看目录下列表
w 可以创建和删除目录下文件
x 可以使用cd进入目录

需要注意的是超级用户可以无视普通用户的权限,即使文件目录权限是000,依旧可以访问。 在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。

  • 所有者

    一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者,用ls ‐ahl命令可以看到文件的所有者 也可以使用chown 用户名 文件名来修改文件的所有者 。

  • 文件所在组

    当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组 用ls ‐ahl命令可以看到文件的所有组 也可以使用chgrp 组名 文件名来修改文件所在的组。

  • 其它组

    除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

我们再来看看如何修改文件/目录的权限。

修改文件/目录的权限的命令:chmod

示例:修改/test下的aaa.txt的权限为属主有全部权限,属主所在的组有读写权限, 其他用户只有读的权限

chmod u=rwx,g=rw,o=r aaa.txt

上述示例还可以使用数字表示:

chmod 764 aaa.txt

补充一个比较常用的东西:

假如我们装了一个zookeeper,我们每次开机到要求其自动启动该怎么办?

  1. 新建一个脚本zookeeper
  2. 为新建的脚本zookeeper添加可执行权限,命令是:chmod +x zookeeper
  3. 把zookeeper这个脚本添加到开机启动项里面,命令是:chkconfig --add zookeeper
  4. 如果想看看是否添加成功,命令是:chkconfig --list

22: Linux 用户管理

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

Linux用户管理相关命令:

  • useradd 选项 用户名:添加用户账号
  • userdel 选项 用户名:删除用户帐号
  • usermod 选项 用户名:修改帐号
  • passwd 用户名:更改或创建用户的密码
  • passwd -S 用户名 :显示用户账号密码信息
  • passwd -d 用户名: 清除用户密码

useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

23: Linux系统用户组的管理

  每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

Linux系统用户组的管理相关命令:

  • groupadd 选项 用户组 :增加一个新的用户组
  • groupdel 用户组:要删除一个已有的用户组
  • groupmod 选项 用户组 : 修改用户组的属性

24: 其他常用命令

  • pwd: 显示当前所在位置

  • sudo + 其他命令:以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

  • grep 要搜索的字符串 要搜索的文件 --color: 搜索命令,--color代表高亮显示

  • ps -ef/ps -aux: 这两个命令都是查看当前系统正在运行进程,两者的区别是展示格式不同。如果想要查看特定的进程可以使用这样的格式:ps aux|grep redis (查看包括redis字符串的进程),也可使用 pgrep redis -a

    注意:如果直接用ps((Process Status))命令,会显示所有进程的状态,通常结合grep命令查看某进程的状态。

  • kill -9 进程的pid: 杀死进程(-9 表示强制终止。)

    先用ps查找进程,然后用kill杀掉

  • 网络通信命令:

    • 查看当前系统的网卡信息:ifconfig
    • 查看与某台机器的连接情况:ping
    • 查看当前系统的端口使用:netstat -an
  • net-tools 和 iproute2 : net-tools起源于BSD的TCP/IP工具箱,后来成为老版本Linux内核中配置网络功能的工具。但自2001年起,Linux社区已经对其停止维护。同时,一些Linux发行版比如Arch Linux和CentOS/RHEL 7则已经完全抛弃了net-tools,只支持iproute2。linux ip命令类似于ifconfig,但功能更强大,旨在替代它。更多详情请阅读如何在Linux中使用IP命令和示例

  • shutdown: shutdown -h now: 指定现在立即关机;shutdown +5 "System will shutdown after 5 minutes":指定5分钟后关机,同时送出警告信息给登入用户。

  • reboot: reboot: 重开机。reboot -w: 做个重开机的模拟(只有纪录并不会真的重开机)。

 

posted @ 2019-04-30 18:23  myseries  阅读(5150)  评论(0编辑  收藏  举报