AMao
小菜鸡目前对一些东西的认知,希望师傅们可以帮忙纠正!

Linux 快速入门

2020-07-17 计算机基础 Linux
Word count: 4.1k | Reading time: 16min

UNIX的登录与退出

  • 登录

    在DOS环境下用MS提供的telnet程序(也可使用WINDOWS 自带的telnet图形界面程序或多功能的S-Term终端程序),可使PC作为终端(terminal)登录(login)UNIX服务器(UNIX Server)。

    • 执行格式:

      telnet hostname(主机名)telnet 主机的IP地址

    • 步骤

      1
      2
      login:         (输入username)
      password: (输入密码)
  • 退出

    在UNIX系统提示符$下,输入:

    • logout
    • exit
    • shutdown 。

UNIX命令格式

命令 [选项] [处理对象]

例:ls -la mydir

注意:

  • 命令一般是小写字串。注意大小写有别
  • 选项通常以减号(-)再加上一个或数个字符表示,用来选择一个命令的不同操作
  • 同一行可有数个命令,命令间应以分号隔开
  • 命令后加上&可使该命令后台(background)执行

常用命令

  • 目录操作

    和DOS相似,UNIX采用树型目录管理结构,由根目录(/)开始一层层将子目录建下去,各子目录以 / 隔开。

    用户login后,工作目录的位置称为 home directory,由系统管理员设定。‘~’符号代表自己的home directory,例如 ~/myfile 是指自己home目录下myfile这个文件。

    UNIX的通配符有三种:*? 用法与DOS相同, - 代表区间内的任一字符,如test[0-5]即代表test0,test1,……,test5的集合。

    • 显示目录文件 ls

      执行格式: ls [-atFlgR] [name] (name可为文件或目录名称)

      • ls 显示出当前目录下的文件

      • ls -a 显示出包含隐藏文件的所有文件

      • ls -t 按照文件最后修改时间显示文件

      • ls -F 显示出当前目录下的文件及其类型

      • ls -l 显示目录下所有文件的许可权、拥有者、文件大小、修改时间及名称

      • ls -lg 同上

      • ls -R 显示出该目录及其子目录下的文件

        注:ls与其它命令搭配使用可以生出很多技巧(最简单的如”ls -l | more”),更多用法请输入ls –help查看,其它命令的更多用法请输入 命令名 –help 查看.

    • 建新目录 mkdir

      执行格式: mkdir directory-name

    • 删除目录  rmdir

      执行格式: rmdir directory-name 或 rm directory-name

      • rmdir dir1 删除目录dir1,但它必须是空目录,否则无法删除
      • rm -r dir1 删除目录dir1及其下所有文件及子目录
      • rm -rf dir1 不管是否空目录,统统删除,而且不给出提示,使用时要小心
    • 改变工作目录位置 cd

      执行格式: cd [name]

      • cd 改变目录位置至用户login时的working directory
      • cd dir1 改变目录位置,至dir1目录
      • cd ~user 改变目录位置,至用户的working directory
      • cd .. 改变目录位置,至当前目录的上层目录
      • cd - 回到进入当前目录前的上一个目录
      • cd ../user 改变目录位置,至上一级目录下的user目录
      • cd /dir-name1/dir-name2 改变目录位置,至绝对路径(Full path)
    • 显示当前所在目录 pwd

      执行格式: pwd

    • 查看目录大小du

      执行格式: du [-s] directory

      • du dir1 显示目录dir1及其子目录容量(以kb为单位)
      • du -s dir1 显示目录dir1的总容量
    • 显示环境变量

      echo $HOME 显示家目录

      echo $PATH 显示可执行文件搜索路径

      env 显示所有环境变量(可能很多,最好用”env | more”,”env | grep PATH”等)

    • 修改环境变量,在bash下用export

      export PATH=$PATH:/usr/local/bin

      想知道export的具体用法,可以用shell的help命令:help export

  • 文件操作
    • 查看文件(可以是二进制的)内容 cat

      执行格式:

      • cat filename
      • more filename
        • cat filename|more
    • 删除文件 rm

      执行格式: rm filename

      • rm file?
      • rm f*
    • 复制文件 cp

      执行格式: cp [-r] source destination

      • cp file1 file2 将file1复制成file2
      • cp file1 dir1 将file1复制到目录dir1
      • cp /tmp/file1 将file1复制到当前目录
      • cp /tmp/file1 file2 将file1 复制到当前目录名为file2
      • cp –r dir1 dir2 (recursive copy)复制整个目录。
    • 移动或更改文件、目录名称mv

      执行格式: mv source destination

      • mv file1 file2 将文件file1,更名为file2
      • mv file1 dir1 将文件file1,移到目录dir1下
      • mv dir1 dir2
    • 比较文件(可以是二进制的)或目录的内容 diff

      执行格式: diff [-r] name1 name2 (name1、name2同为文件或目录)

      • diff file1 file2 比较file1与file2的不同处
    • 文件中字符串的查找 grep

      执行格式: grep string file

      grep abc file1 查找并列出串abc所在的整行文字

    • 文件或命令的路径寻找
      • whereis command 显示命令的路径
      • which command 显示路径及使用者所定义的别名
      • whatis command 显示命令的功能摘要
      • find search -path -name filename -print 搜寻指定路径下某文件的路径
      • locate filename

      TIPS:

      根据系统预先生成的文件/目录数据库(/var/lib/slocate/slocate.db)查找匹配的文件/目录,查找速度很快。

      如果有刚进行的文件改变而系统未到执行定时更新数据库的时间,可以打入updatedb命令手动更新。

    • 建立文件或目录的链接 ln

      ln -s source target2 建立source文件的符号链接,命名为target2

      • ln source target1 建立source文件(已存在)的硬链接,命名为target1
  • 系统询问与权限口令
    • 查看系统中的使用者

      执行格式: who

    • 查看username

      执行格式: who am I 查看自己的username

    • 改变自己的username的帐号与口令 su

      执行格式: su username

      su username 输入帐号
      password 输入密码

    • 文件属性的设置 chmod

      改变文件或目录的读、写、执行的允许权

      执行格式: chmod [-R] mode name

      • 其中:[-R]为递归处理,将指定目录下所有文件及子目录一并处理

      • mode为3-8位数字,是文件/目录读、写、执行允许权的缩写

        • r:read,数字代号为”4”

        • w:write,数字代号为”2”

        • x:execute,数字代号为”1”

          1
          2
          3
          mode:  rwx   rwx   rwx 
          user group other
          缩写: (u) (g) (o)
      • eg.

        • chmod 755 dir1 将目录dir1设定成任何人皆有读取及执行的权利,但只有拥有者可作写修改。其中7=4+2+1,5=4+1
        • chmod 700 file1 将file1设为拥有者可以读、写和执行
        • chmod o+x file2 将file2,增加拥有者可执行的权利
        • chmod g+x file3 将file3,增加组使用者可执行的权利
        • chmod o-r file4 将file4,除去其它使用者可读取的权利
    • 改变文件或目录所有权 chown

      执行格式: chown [-R] username name

      • chown user file1 将文件file1改为user所有
      • chown .fox file1 将文件file1改为fox组所有
      • chown user.fox file1 将文件file1改为fox组的user所有
      • chown -R user dir1 将目录dir1及其下所有文件和子目录,改为user 所有
    • 检查用户所在组名称 groups

      执行格式: groups

    • 改变文件或目录的组拥有权 chgrp

      执行格式: chgrp [-R] groupname name

      • chgrp vlsi file1 将文件file1改为vlsi组所有
      • chgrp -R image dir1 将目录dir1及其下所有文件和子目录,改为image群组
    • 改变文件或目录的最后修改时间 touch

      执行格式: touch file_name

  • 进程操作
    • 查看系统目前的进程 ps

      执行格式: ps [-aux]

      • ps 或ps -x 查看系统中属于自己的process

      • ps -au 查看系统中所有使用者的process

      • ps -aux 查看系统中包含系统内部及所有使用者的process

      • ps -aux|grep apache 找出系统中运行的所有名称中带有”apache”串的process

    • 查看正在background中执行的process

      执行格式: jobs

    • 结束或终止进程 kill

      执行格式: kill [-9] PID (PID为利用ps命令所查出的process ID)

    • 后台(background)执行process command的命令

      执行格式: command & (在命令后加上 &)

      • gcc file1 & 在后台编译file1.c

      注意:按下^Z,暂停正在执行的process。键入”bg”,将所暂停的process置入background中继续执行。

      1
      2
      3
      4
      gcc file1 &
      ^Z
      stopped
      bg
    • 结束或终止在background中的进程 kill

      执行格式: kill %n

      • kill %1 终止在background中的第一个job
      • kill %2 终止在background中的第二个job
    • 显示系统中程序的执行状态

      top -q 不断地更新、显示系统程序的执行状态

      • 第一行显示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。

      • 第二行为进程情况,依次为进程总数、休眠进程数、运行进程数、僵死进程数、终止进程数。

      • 第三行为CPU状态,依次为用户占用、系统占用、优先进程占用、闲置进程占用。

      • 第四行为内存状态,依次为平均可用内存、已用内存、空闲内存、共享内存、缓存使用内存。

      • 第五行为交换状态,依次为平均可用交换容量、已用容量、闲置容量、高速缓存容量。

      参数说明:

      • PID 每个进程的ID。

      • PPID 每个进程的父进程ID。

      • UID 每个进程所有者的UID 。

      • USER 每个进程所有者的用户名。

      • PRI 每个进程的优先级别。

      • NI 该进程的优先级值。

      • SIZE 该进程的代码大小加上数据大小再加上堆栈空间大小的总数。单位是KB。

      • TSIZE 该进程的代码大小。对于内核进程这是一个很奇怪的值。

      • DSIZE 数据和堆栈的大小。

      • TRS 文本驻留大小。

      • D 被标记为“不干净”的页项目。

      • LIB 使用的库页的大小。对于ELF进程没有作用。

      • RSS 该进程占用的物理内存的总数量,单位是KB。

      • SHARE 该进程使用共享内存的数量。

      • STAT 该进程的状态。其中S代表休眠状态;D代表不可中断的休眠状态;R代表运行状态;Z代表僵死状态;T代表停止或跟踪状态。

      • TIME 该进程自启动以来所占用的总CPU时间。如果进入的是累计模式,那么该时间还包括这个进程子进程所占用的时间。且标题会变成CTIME。

      • %CPU 该进程自最近一次刷新以来所占用的CPU时间和总时间的百分比。

      • %MEM 该进程占用的物理内存占总内存的百分比。

      • COMMAND 该进程的命令名称,如果一行显示不下,则会进行截取。内存中的进程会有一个完整的命令行

        按”ctrl+c”停止查看

    • 以树状图显示执行的程序 pstree

      pstree -h 列出进程树并高亮标出当前执行的程序

    • 监视虚拟内存 vmstat

      vmstat对系统的虚拟内存、进程、CPU活动进行监视,同时它也对磁盘和forks和vforks操作的个数进行汇总。

      不足是:vmstat不能对某个进程进行深入分析,它仅是一对系统的整体情况进行分析。

      例如:[angel@home /angel]# vmstat

      1
      2
      3
      4
      5
       procs           memory        swap     io   system   cpu

      r b w swpd free buff cache si so bi bo in cs us sy id

      0 0 0 7180 1852 56092 48400 0 0 6 5 24 8 0 0 18

      参数说明:

      • Procs

        • r: 等待运行的进程数
        • b: 处在非中断睡眠状态的进程数
        • w: 被交换出去的可运行的进程数。
      • Memory

        • swpd: 虚拟内存使用情况,单位:KB
        • free: 空闲的内存,单位KB
        • buff: 被用来做为缓存的内存数,单位:KB
      • Swap

        • si: 从磁盘交换到内存的交换页数量,单位:KB/秒
        • so: 从内存交换到磁盘的交换页数量,单位:KB/秒
      • IO

        • bi: 发送到块设备的块数,单位:块/秒
        • bo: 从块设备接收到的块数,单位:块/秒
      • System

        • in: 每秒的中断数,包括时钟中断
        • cs: 每秒的环境(上下文)切换次数
      • CPU 按 CPU 的总使用百分比来显示

        • us: CPU 使用时间
        • sy: CPU 系统使用时间
        • id: 闲置时间
    • 分析共享内存、信号量和消息队列

      ipcs(相关命令ipcrm:用于给有权限的用户清除这些量,注意不要乱清除,除非该量确实失效了)

      例如:[angel@home /angel]# ipcs

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      ------ Shared Memory Segments --------

      key shmid owner perms bytes nattch status

      0x00280267 0 root 644 1048576 1

      0x61715f01 1 root 666 32000 33

      0x00000000 2 nobody 600 92164 11 dest



      ------ Semaphore Arrays --------

      key semid owner perms nsems status

      0x00280269 0 root 666 14

      0x61715f02 257 root 777 1



      ------ Message Queues --------

      key msqid owner perms used-bytes messages
    • 监视用户空间程序发出的全部系统调用 strace

      strace 还能显示调用的参数,以及用符号方式表示的返回值。

      strace 从内核中接收信息,所以一个程序无论是否按调试方式编译(gcc -g)或是否被去掉了调试信息,都可以被跟踪。

      执行格式: strace [-tTeo] executable-program-name

      • -t : 用来显示调用发生的时间
      • -T : 显示调用花费的时间
      • -e : 限定被跟踪的调用类型
      • -o : 将输出重定向到一个文件中

      类似命令:ltrace [-fiS] executable-program-name

  • 通信类
    • 本地工作站与UNIX服务器间的文件传输 ftp

      执行格式: ftp 主机名 或 ftp 主机的IP地址

      后续执行步骤:

      name: 输入帐号
      password: 输入密码
      ftp>help 显示ftp可使用的所有命令
      ftp>lcd dir1 改变本地机当前目录为dir1
      ftp>get file1 将UNIX服务器文件file1拷到本地机
      ftp>put file2 将本地文件file2,拷到UNIX服务器
      ftp>!ls 显示本地机当前目录下所有文件
      ftp>!pwd 显示本地机当前所在目录下所有文件
      ftp>ls 显示UNIX服务器当前目录下所有文件
      ftp>dir 显示服务器当前目录下所有文件(略同于UNIX的 ls -l指令)
      ftp>pwd 显示UNIX服务器当前所有目录位置
      ftp>cd dir1 更改UNIX服务器的目录至dir1下
      ftp>mget *.c 将服务器中 .c 文件拷到本地机中
      ftp>mput *.txt 将所有 .txt 文件拷贝到服务器
      ftp>quit 结束ftp工作
      ftp>bye 结束ftp工作
    • 检查与UNIX服务器连接是否正常 ping

      执行格式: ping hostname 或 ping IP-Address

    • 将文件当做E-mail的内容送出 mail

      执行格式:mail -s “Subjict-string” username@address<filename

      mail -s “program” user <file.c

      功能:将file.c当做mail的内容,送至user,subject name为program

    • 传送E-mail给本地UNIX服务器上的用户 mail

      执行格式: mail username

    • 读取信件 mail

      执行格式: mail

    • 列出套接字使用情况 socklist
    • 查看网络连接 netstat
  • I/O命令
    • 管道(pipe-line)的使用

      执行格式: command1|command2

      功能:将command1的执行结果送到command2 作为输入

      • ls -R1|more 以分页方式列出当前目录文件及子目录名称
      • cat file1|more 以分页方式,列出file1的内容
    • 标准输入控制

      执行格式: command-line<file 将file作为command-line的输入

      mail -s “mail test” user@iis.sinica.edu.tw<file1

      功能:将文件file1当作信件的内容,subject 名称为mail test 送给收信人

    • 标准输出控制
      • 执行格式一: command>filename

        功能:将command的执行结果送至指定的filename中

        ls -l >list 将执行”ls -l” 的结果写入文件list中

      • 执行格式二: command>!filename

        功能:同上,若filename文件已存在,则强迫重写

      • 执行格式三: command>&filename

        功能:将command执行所产生的任何信息写入filename

      • 执行格式四:command>>filename

        功能:将command 的执行结果,附加(append)到filename

      • 执行格式五:command>>&filename

        功能:将command执行所产生的任何信息附加于filename中

  • 其它常用命令
    • 命令在线帮助 man

      执行格式: man command

      man ls 查询ls这个指令的用法

    • 设定命令记录表长度 history
      • 执行格式一: set history=n

        set history=40

        功能:设定命令记录表长度为40(可记载执行过的前面40个命令)

      • 执行格式二: history 查看命令记录表的内容

    • 显示说明 info

      执行格式: info command-name

      info gcc

      功能: 查看gcc的说明,按上下箭头选定菜单,回车进入,”u”键返回上级菜单

      info不加参数则进入最上一级菜单

  • 用cat 命令查看 /proc 动态文件系统目录下的文件,辨识其中的系统信息
    • cat interrupts 列出当前中断占用情况
  • cat ioports 列出设备的硬件IO占用情况

    • cat pci 列出pci设备的情况
< PreviousPost
PHP反序列化详解
NextPost >
浅谈 Docker
CATALOG
  1. 1. UNIX的登录与退出
    1. 1.1. 登录
    2. 1.2. 退出
  2. 2. UNIX命令格式
  3. 3. 常用命令
    1. 3.1. 目录操作
      1. 3.1.1. 显示目录文件 ls
      2. 3.1.2. 建新目录 mkdir
      3. 3.1.3. 删除目录  rmdir
      4. 3.1.4. 改变工作目录位置 cd
      5. 3.1.5. 显示当前所在目录 pwd
      6. 3.1.6. 查看目录大小du
      7. 3.1.7. 显示环境变量
      8. 3.1.8. 修改环境变量,在bash下用export
    2. 3.2. 文件操作
      1. 3.2.1. 查看文件(可以是二进制的)内容 cat
      2. 3.2.2. 删除文件 rm
      3. 3.2.3. 复制文件 cp
      4. 3.2.4. 移动或更改文件、目录名称mv
      5. 3.2.5. 比较文件(可以是二进制的)或目录的内容 diff
      6. 3.2.6. 文件中字符串的查找 grep
      7. 3.2.7. 文件或命令的路径寻找
      8. 3.2.8. 建立文件或目录的链接 ln
    3. 3.3. 系统询问与权限口令
      1. 3.3.1. 查看系统中的使用者
      2. 3.3.2. 查看username
      3. 3.3.3. 改变自己的username的帐号与口令 su
      4. 3.3.4. 文件属性的设置 chmod
      5. 3.3.5. 改变文件或目录所有权 chown
      6. 3.3.6. 检查用户所在组名称 groups
      7. 3.3.7. 改变文件或目录的组拥有权 chgrp
      8. 3.3.8. 改变文件或目录的最后修改时间 touch
    4. 3.4. 进程操作
      1. 3.4.1. 查看系统目前的进程 ps
      2. 3.4.2. 查看正在background中执行的process
      3. 3.4.3. 结束或终止进程 kill
      4. 3.4.4. 后台(background)执行process command的命令
      5. 3.4.5. 结束或终止在background中的进程 kill
      6. 3.4.6. 显示系统中程序的执行状态
      7. 3.4.7. 以树状图显示执行的程序 pstree
      8. 3.4.8. 监视虚拟内存 vmstat
      9. 3.4.9. 分析共享内存、信号量和消息队列
      10. 3.4.10. 监视用户空间程序发出的全部系统调用 strace
    5. 3.5. 通信类
      1. 3.5.1. 本地工作站与UNIX服务器间的文件传输 ftp
      2. 3.5.2. 检查与UNIX服务器连接是否正常 ping
      3. 3.5.3. 将文件当做E-mail的内容送出 mail
      4. 3.5.4. 传送E-mail给本地UNIX服务器上的用户 mail
      5. 3.5.5. 读取信件 mail
      6. 3.5.6. 列出套接字使用情况 socklist
      7. 3.5.7. 查看网络连接 netstat
    6. 3.6. I/O命令
      1. 3.6.1. 管道(pipe-line)的使用
      2. 3.6.2. 标准输入控制
      3. 3.6.3. 标准输出控制
    7. 3.7. 其它常用命令
      1. 3.7.1. 命令在线帮助 man
      2. 3.7.2. 设定命令记录表长度 history
      3. 3.7.3. 显示说明 info
    8. 3.8. 用cat 命令查看 /proc 动态文件系统目录下的文件,辨识其中的系统信息