Linux(Ubuntu) 常用命令的总结

总结工作中用到的ubuntu命令,和添加一些常见的Linux的命令;

1.文件操作&常见命令操作

前置补充:Linux 终端提示符 && 命令语法

 Centos
 [root@oldboy_python ~] #
 # [用户名@主机机器名 路径] 提示符
 
 # 用户名 root
 # 主机名 oldboy_python
 # 路径 ~
 # 提示符 #

ubuntu 中没有上述的中括号,其他的都一样;

 # 1.一般情况下,【参数】是可选的,一些情况下【文件或路径】也是可选的
 
 # 2.参数 > 同一个命令,跟上不同的参数执行不同的功能
 
 # 执行linux命令,添加参数的目的是让命令更加贴切实际工作的需要!
 
 # linux命令,参数之间,普遍应该用一个或多个空格分割

**补充:**Ubuntu 中出现错权限的问题,一般都是加上sudo;

1.1 基础文件操作

  • 创建

     #创建文件: 最长使用的语句是   语法 touch 文件名;
     touch test.txt
     touch name.py
     
     # 创建文件夹
     mkdir fielname1
     mkdir filename1 filename2  # 直接创建两个到多个文件夹;
    
  • 复制

     # 复制文件和复制文件夹  语法: cp [原文件/原文件夹名(可以包含路径)] [复制到的路径]   
     cp -r /data/  /home/    # 复制文件夹的时候加上参数 -r
     cp /data/reqirement.txt /data/project/  # 复制文件到指定的路径中
    

    其他常见情况的参数补充

    • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
    • -d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
    • -f:覆盖已经存在的目标文件而不给出提示。
    • -i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
    • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
    • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
    • -l:不复制文件,只是生成链接文件。
  • 移动

     # 相当于 windows 中的剪切与粘贴  mv [原文件/原文件夹名(可以包含路径)] [移动到的路径]   
     mv code.zip ~/data/t1     # 移动文件
     mv t2 ~/data/t1           # 移动文件夹
     
     # 文件/文件夹改名
     mv x.log xx.log           # mv 命令实现重命名
    
  • 删除

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

     # 语法 : rm -rf 文件名或文件夹名, 当提示权限不足的时候在 Ubuntu 中使用 sudo 获取权限;
     rm -rf code.py       # 删除文件
     rm -rf file_set      # 删除文件夹
     
     # rm  test.txt 
     rm  # 是否删除 一般文件 "test.txt"? y  
     # rm  homework  
     rm: 无法删除目录"homework": 是一个目录  
     # rm  -r  homework  
     rm:是否删除 目录 "homework"? y 
    

    参数解释

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

    危险中的危险命令

     rm -rf /*    # 开天辟地,删库跑路的命令,不要执行;
    
  • 编辑

     # 文件内容的编辑通常使用的是 vi(ubuntu 自带),vi 的功能由一定的缺陷,而且有的时候方向按键无法使用;
     vi test.py    # 输入 i 之后进行编辑;
     # vim 与 vi 的语法几乎相同,后期将详细剖析 vim 的用法;
     vim test.py   # i 编辑 ESC + : 输入 wq! 保存退出, q! 不保存退出;
    

    底部命令行

    特别注意,在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思。

    举例来说,要删除 50 行,则是用 『50dd』 对吧! 数字加在动作之前,如我要向下移动 20 行呢?那就是『20j』或者是『20↓』即可。

  • 查看

     # 查看文件夹下的内容
     ls
     # 查看指定路径下的文件夹的内容
     ls /
     
     # linux 中的路径都是以 斜杠进行分割 /
     
     ls -ltr s*   # 列出目前工作目录下所有名称是 s 开头的文件,越新的排越后面 :
     
    

    查看文件中的内容

     cat # 查看较少的内容
     cat test.py  
     
     more # 查看较多内容
     # more /etc/passwd
     # 按下空格space是翻页
     # 按下b键是上一页
     # 回车键向下读取内容
    

    查看头部或尾部的信息

     # head显示文件前几行,默认前10行
     # tail显示文件后几行,默认后10行
     -------------------------- 案例 -----------------------------
     root@root:~/data$ cat change.txt 
     我有过来了,又出去了,打我啊,笨蛋
     啊哈哈哈
     啊哈哈哈h
     # 查看头部
     root@root:~/data$ head -2 ./change.txt 
     我有过来了,又出去了,打我啊,笨蛋
     啊哈哈哈
     # 查尾头部
     root@root:~/data$ tail -2 ./change.txt 
     啊哈哈哈
     啊哈哈哈h
    
  • 查找命令

     #Linux里如何找到需要的文件 例如 oldboy.py
     find 在哪里(目录) 什么类型(文件类型) 叫什么名字(文件名)
     参数
     -name 按照文件名查找文件
     -type 查找某一类型的文件,诸如:
     b - 块设备文件。
     d - 目录。
     c - 字符设备文件。
     p - 管道文件。
     l - 符号链接文件。
     f - 普通文件。
     s - socket文件
     find /tmp/ -type f  -name "oldboy.py"
     #找出/tmp所有以 .txt 结尾的文件
     find /tmp/ -type f -name "*.txt"
     #找到/etc下所有名字以host开头的文件
     find /etc -name 'host*'
     #找到/opt上一个名为settings.py
     find /opt -name 'settings.py'
    

    which查找命令;

     which 命令用于查找并显示给定命名的绝对路径,环境变量 PATH 中保存了查找命令是需要遍历的目录。
     which 指令会在环境变量$PATH设置的目录查找符合条件的文件。
     也就是说 which 命令可以看到某个系统命令是否存在,以及到底执行哪一个位置的命令;
     
     which pwd
     ------------------
     which python3
     /usr/bin/python3
    

1.2 文件的权限操作

Linux 权限的目的是保护账户的资料

Linux 权限主要依据三种身份来决定:

 在Linux中,每个文件都有所属的所有者,和所有组,并且规定了文件的所有者,所有组以及其他人对文件的,可读,可写,可执行等权限。
 
 对于目录的权限来说,可读是读取目录文件列表,可写是表示在目录内新增,修改,删除文件。可执行表示可以进入目录
  • 查看权限

     # 查看命令 ls -l
     root@root:~/data$ ls -l ./change.txt 
     -rw-rw-r-- 1 root root 73 2月  16 17:49 ./change.txt
     权限 文件的连接数 属主 属组 文件大小 修改日期 修改时间 文件名
     # 权限  -rw-rw-r--
     # 文件连接数 1
     # 属主 root
     # 属组 root
     # 文件大小 73
     # 修改日期 2月
     # 修改时间 16 17:49
     # 文件名
    
  • 权限解读

     # 文件权限解读
     r    read 可读, 可以用 cat 等命令查看
     w    write 写入, 可以编辑或者写入这个文件
     x    exectable 可以执行
     
     # 文件夹的权限
     r   read 可以对此目录执行 ls 列出所有文件
     w   可以在这个目录创建文件
     x   可以 cd 进入这个目录,或者查看详细信息
    
     root@root:~/data$ ls -l ./change.txt 
     -rw-rw-r-- 1 root root 73 2月  16 17:49 ./change.txt
     这个表示 change.txt 文件的属主是 root,属组是 root,只有 root 用户可以读取编写这个文件,其他人只能读此文件。 
    

    我们已知的三种权限身份(属主,属组,其他人),每个人都有rwx三种权限,系统还提供了数字计算权限。

     r    read          4
     w    write        2
     x    execute     1
    

    每种身份最低是 0 分,最高是r+w+x = 4 + 2 + 1 = 7分;

    因此三种身份,最高权限是777,最低是000

     -rw-rw-r-- 1 root root 73 2月  16 17:49 ./change.txt
     # 由此可知该文件的属主是 6, 属组是 6, 其他人是 4
     664
    

    id查看用户所属群主

     id root
     用户id=0(root) 组id=0(root) 组=0(root)
    
  • 修改文件属性

    普通用户只能修改自己的文件名,时间与权限(注意),修改其他用户权限,只能用root用户;

     su - root
     # 修改属主为 root
     chown root pyyu.txt
     
     # 查看信息
     ll pyyu.txt 
     
     # 修改属组
     [root@oldboy_python /tmp 16:43:42]#ll pyyu.txt 
     -rw-rw-r-- 1 root pyyu 0 8月  11 16:41 pyyu.txt
     [root@oldboy_python /tmp 16:44:59]#chgrp root pyyu.txt 
     [root@oldboy_python /tmp 16:45:51]#ll pyyu.txt 
     -rw-rw-r-- 1 root root 0 8月  11 16:41 pyyu.txt
    
  • 修改文件/目录的权限

     chmod [身份] [参数] [文件]
     u(user)    +(添加)
     g(group)   -(减去)
     o(other)   =(赋值)
     a(all)     
     
     属主可读可写可执行
     属组可读可执行
     其他人可读可执行
     chmod 755 pyyu.txt
    
    
    
     # 为当前脚本添加可执行的权限
     chmod +x first.sh
     # 根据情况确定是否执行
     sudo chmod +x first.sh
    

    例如

     当前权限
     -rw-rw-r-- 1 root root 0 8月  11 16:41 pyyu.txt
     方法1
     减去属主的写权限
     chmod u-w pyyu.txt
     查看权限
     -r--rw-r-- 1 root root 0 8月  11 16:41 pyyu.txt
     方法2
     属主添加可读可写可执行权限
     chmod 700 pyyu.txt
    

    修改文件名,修改文件更改时间

     mv pyyu.txt chaoge.txt
     #触摸,修改时间
     touch chaoge.txtsh
    

1.3 常见目录的介绍

  • /bin: bin是Binary的缩写, 这个目录存放着最经常使用的命令。

  • /boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

  • /dev : dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

  • /etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。

  • /home: 用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

  • /lib: 这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

  • /lost+found: 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

  • /media: linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

  • /mnt: 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

  • /opt: 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

  • /proc: 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

  • /root: 该目录为系统管理员,也称作超级权限者的用户主目录。

  • /sbin: s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

  • /selinux: 这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

  • /srv: 该目录存放一些服务启动之后需要提取的数据。

  • /sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

    sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。

该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

  • /tmp: 这个目录是用来存放一些临时文件的。

  • /usr: 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

  • /usr/bin: 系统用户使用的应用程序。

  • /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。

  • **/usr/src:**内核源代码默认的放置目录。

  • /var: 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

  • 在linux系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

     /etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
     /bin、/sbin、 /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。
    

1.4其他常见操作

  • 获取提示

     # 一般的命令都会有提示直接输入 --help即可
     ls --help
    
  • 打印

     echo "Hello World"     # 终端打印
     Hello World
     root@root:~/data$ echo $PATH  # 取出打印 PATH 的值
     /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    

    echo 还具有重定向的作用

     root@root:~/data$ echo "Hello World" > ./change.txt   # > 后的路径可以是相对的也可以是绝对的;
     root@root:~/data$ ls
     change.txt  test.py
     root@root:~/data$ cat change.txt 
     Hello World   # 文本被重定向输出到 change.txt 的文件夹中
     root@root:~/data$ 
    
  • 特殊符号

     # 输入输出重定向符号
     >>      # 追加重定向,把文字追加到文件的结尾
     >       # 重定向,清空原有文件的所有内容,然后把文件覆盖到文件末尾
     <       # 输入重定向
     <<      # 将输入结果输入重定向,建议百度,有些模糊
     
     ----------------- 实际操作 --------------------
     root@root:~/data$ echo "上一次的还在吗" > ./change.txt 
     root@root:~/data$ cat change.txt 
     上一次的还在吗  # 完全覆盖了上一次的内容
     
     root@root:~/data$ echo "这一次有吗?" >> ./change.txt 
     root@root:~/data$ cat change.txt 
     上一次的还在吗
     这一次有吗?
     
    
  • 管道符

    Linux提供管道符|将两条命令隔开,管道符左边命令的输出会作为管道符右边的输入

     # 常见用法
     ps -ef| grep python3        # 检查 python3 的程序是否启动
     ls ./ | grep '.txt'         # 查找当前目录下的 txt 文件
     netstat -tunlp | grep nginx # 检查 nginx 是否存活
    
  • grep

    grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,他能使用正则表达式搜索文本,并把匹配的行打印出来;

     # 语法
     grep [参数] [--color=auto] [字符串] filename
     参数详解:
     -i : 忽略大小写
     -n : 输出行号
     -v : 反向选择
     --color=auto # 部分关键词添加颜色
     ------------------- 案例 ----------------------
     
     # 寻找目标
     root@root:~/data$ grep "哈哈" ./change.txt
     啊哈哈哈
     啊哈哈哈h
     # 取反,寻找除目标外的
     root@root:~/data$ grep -v "哈哈" ./change.txt
     我有过来了,又出去了,打我啊,笨蛋
     # 找到/etc/passwd的所有与mysql有关行,行号(-n)
     root@root:~/data$ cat /etc/passwd | grep 'mysql' -n 
     50:........
    
  • alias别名

    Linux在使用rm(删除)、cp(覆盖)、mv(搬家)等命令的时候,必须非常小心,因为这些命令都是炸弹,想必大家都听过删库到跑路,一言不合rm -rf /,假如你真的这么做了,那么。。。

     Linux如何提示你,在使用这些命令时候,提醒你小心呢?
     #查看系统别名
     alias cp='cp -i'
     alias egrep='egrep --color=auto'
     alias fgrep='fgrep --color=auto'
     alias grep='grep --color=auto'
     alias l.='ls -d .* --color=auto'
     alias ll='ls -l --color=auto'
     alias ls='ls --color=auto'
     alias mv='mv -i'
     alias rm='rm -i'
     alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
     
     # 别名的作用
     我们在linux中使用cp时候相当于执行了cp -i
     -i:删除已有文件或目录之前先询问用户;
    

    rm设置别名;

     #让系统显示 do not use rm
     echo do not use rm
     #设置rm别名
     alias rm='echo do not use rm'
     #设置别名永久生效,写入到/etc/profile(针对登录用户的合同,设置环境变量)
     vim /etc/profile #编辑文件
     G  快速到达最后一行
     o  当前行下一行,创建一个新行,进入编辑模式
     source /etc/profile #读取文件(合同生效)
     ---------------
     #取消别名
     unalias rm
    
  • 软连接

    软连接也叫做符号链接,类似于windows的快捷方式。

    常用于安装软件的快捷方式配置 python、nginx 等。

     # 语法
     ln -s 目标文件  软连接名
     
     # 1. 存在文件 ~/data/change.txt
     # 2. 在 home 中建立软连接,指向该文件
     ln -s ./data/change.txt my_change    # 当前目录下会出现一个 my_change 文件;
     # 3.查看软连接信息
     ll my_change  或者 ls -l my_change 
     # 输出当前软连接的信息
     lrwxrwxrwx 1 wsn wsn 17 2月  17 13:37 my_change -> ./data/change.txt
     
     # 4.通过软连接查看文件
     cat my_change   
     我有过来了,又出去了,打我啊,笨蛋
     啊哈哈哈
     啊哈哈哈h
     
     # 软连接 my_change 只是 ./data/change.txt 的一个别名,因此删除 my_test,不会影响 ./data/change.txt
     # 但是删除了原本的文件 快捷方式(软连接)就无意义不存在了。
    
  • 统计文件大小

    Linux 中的du命令用于显示目录或文件的大小。

    du 会显示指定目录或文件所占用的磁盘空间。

     # 语法
     du [参数] [文件或目录]
     -s 显示总计
     -h 以k,M,G 为单位显示, 可读性强
     ------------------------------ 实例 -----------------------------------
     显示目录或文件所占空间
     #什么都不跟,代表显示当前目录所有文件大小
     du   
     
     # 显示 /home 的总大小
     du -sh /home/
     # 输出 1.6G    /home/
    

2.网络操作&时间操作

2.1 远程传输&远程连接

  • scp远程传输

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

     # 语法
     scp 【可选参数】 本地源文件 远程文件标记
     # 参数
     -r :递归复制整个目录
     -v:详细方式输出
     -q:不显示传输进度条
     -C:允许压缩
     --------------------------- 案例 ----------------------------
     #传输本地文件到远程地址
     scp 本地文件  远程用户名@远程ip:远程文件夹/
     scp 本地文件  远程用户名@远程ip:远程文件夹/远程文件名
     scp /tmp/chaoge.py root@192.168.1.155:/home/
     scp /tmp/chaoge.py root@192.168.1.155:/home/chaoge_python.py
     scp -r  本地文件夹  远程用户名@远程ip:远程文件夹/
     scp -r /tmp/oldboy root@192.168.1.155:/home/oldboy
     #复制远程文件到本地
     scp root@192.168.1.155:/home/oldboy.txt /tmp/oldboy.txt
     scp -r root@192.168.1.155:/home/oldboy /home/
    

    使用较少,通常在使用远程传输的时候会在远程连接之后使用第三方工具进行传输;

  • ssh远程连接

     ssh ip  # 通常被连接的主机要开放22端口;
    
     # Ubuntu 中,如果想被远程连接需要安装 openssh-server
     sudo apt-get install openssh-server
    

2.2 查看端口

  • lsof 查看端口占用情况

    该命令会把进程号PID显示出来;

     # 语法
     lsof -i:端口号  # 注意冒号两边没有冒号;
     -----------------------------
     # 查看 80 端口的的状态
     lsof -i:80
     -----------------------------
     sudo lsof -i  # 查看多有的被占用的端口
    
  • netstat

    netstat命令用来打印 Linux 中网络系统的状态信息,可以让你得知整个 Linux 系统的网络情况.

     netstat [选项]
     -t | --tcp: 显示 TCP 传输协议的连线状况;
     -U | --udp: 显示 UDP 传输协议的连线状况;
     -n 或 --numeric: 直接使用ip地址,而不通过域名服务器;
     -l 或 --listening: 显示监控中的服务器的Socket;
     -p 或 --programs: 显示正在使用Socket的程序识别码和程序名称;
     -a 或 --all: 显示所有连线中的Socket;
     
     ---------------------- 实例 -------------------------
     netstat -tunlp  # 显示所有的连接
     # 通常上述的命令会结合管道符(|) 进行使用;
     netstat -tunlp | grep 80
     # 查询所有用户的时候
     sudo netstat |grep 80
    

2.3 防火墙

大多数 ssh 连接不上虚拟机, 都是因为防火墙阻挡了;在学习阶段,关闭放火墙可以方便学习,,在企业环境中,一般只有配置外网ip的linux 服务器才会开启防火墙,但是对于高并发流量的业务服务器仍然是不能开启的,会有很大性能损失,因此需要更nb的硬件防火墙。

 # 防火墙的相关操作
 [Centos]
 centos7默认已经使用firewall作为防火墙了
 1.关闭防火墙
 systemctl status firewalld #查看防火墙状态
 systemctl stop firewalld    #关闭防火墙
 systemctl disable firewalld#关闭防火墙开机启动
 systemctl is-enabled firewalld.service#检查防火墙是否启动
 
 # [Ubuntu]   # 默认关闭
 # 查看当前的状态
 sudo ufw status
 --------------------
 sudo ufw status
 状态:不活动
 --------------------
 # 开启防火墙
 sudo ufw enable   # 此命令在远程连接中使用会导致连接断开
 # 关闭防火墙
 sudo ufw disable    

2.4 网络管理

Linux 的网络相当强悍,一时间无法了解所有的网络指令,在配置服务器基础环境,先了解网络参数的设定命令;

 ifconfig:       # 查询、设置网卡和IP等参数             注意:不要与windows中的ipconfig 记错了
 ifup,ifdown:    # 脚本命令,更简单的方式启动关闭网络
 ip:            # 符合指令,直接修改上述功能



 # 在我们刚装好linux的时候,需要用xshell进行远程连接,那就得获取ip地址,有时候网卡默认是没启动的,Linux也就拿不到ip地址,因此我们得手动启动网卡
 # 编辑网卡配置文件
 vim /etc/sysconfig/network-scripts/ifcfg-eth0 
 # 修改配置参数
 ONBOOT=yes
 # 然后重启
 systemctl restart network
  • 启停网络

     启动/关闭一块网卡
     ifup和ifdown是直接连接到/etc/sysconfig/network-scripts目录下搜索对应的网卡文件,例如ifcfg-eth0然后加以设置
     ifup eth0
     ifdown eth0
     启停网络服务
     /etc/init.d/network start/stop/restart
     系统服务管理命令
     systemctl restart/start/stop network
    

2.5 其他常见命令

  • ping测试网络连通性;

  • telnet

     # 远程登录
     telnet 192.168.0.5
    

3.软件操作

前置补充:Ubuntu 的源;参考文章https://blog.csdn.net/m0_53774040/article/details/126908358

软件源是指Linux系统在线安装的软件包的来源,是Linux操作系统官方发布的软件安装包的一个集合,简单来说,就是应用程序安装仓库。很多的应用软件都会这收录到这个软件源里面,按类型分则有:

在这里,你可以找到任何包含在源中的软件包,当然第三方的软件除外。第三方的软件只能通过其他途径来获取,也可以生成第三方软件源。

  • 格式

    Debian 与 Ubuntu 包管理工具就是都是apt,这里以阿里云软件源为例:

    第一部分

    • deb行是相对于二进制软件包的,您可以使用进行安装apt
    • deb-src相对于源代码包(由下载apt-get source $package),然后进行编译。
  • 软件源的分类

    在 Ubuntu 中软件源其实还细分为下面两种:

    • Ubuntu 官方软件源
    • PPA 软件源

3.1 安装软件

参考文章:https://zhuanlan.zhihu.com/p/270908077?utm_id=0

3.2 下载命令的区别

  • apt && apt-get

    如果你已阅读过我们的 [apt-get 命令指南](https://www.sysgeek.cn/linux-package-management/),可能已经遇到过许多类似的命令,如apt-cache、apt-config 等。如你所见,这些命令都比较低级又包含众多功能,普通的 Linux 用户也许永远都不会使用到。换种说法来说,就是最常用的 Linux 包管理命令都被分散在了 apt-get、apt-cache 和 apt-config 这三条命令当中。
    
    apt 命令的引入就是为了解决命令过于分散的问题,它包括了 apt-get 命令出现以来使用最广泛的功能选项,以及 apt-cache 和 apt-config 命令中很少用到的功能。
    
    在使用 apt 命令时,用户不必再由 apt-get 转到 apt-cache 或 apt-config,而且 apt 更加结构化,并为用户提供了管理软件包所需的必要选项。
    
    # apt apt-get wget yum curl 等操作;
    

3.3 软件的卸载

参考文章:https://blog.csdn.net/get_set/article/details/51276609

# ubuntu 中卸载软件的通常命令是使用 apt 
`# 删除软件及其配置文件
apt-get --purge remove <package>
# 删除没用的依赖包
apt-get autoremove <package>
# 此时dpkg的列表中有“rc”状态的软件包,可以执行如下命令做最后清理:
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
 

3.3.1 yum

在 ubuntu 的操作系统中需要手动安装yum,进行包的管理。

  • 安装

    yum是Red Hat系列操作系统上的软件包管理器,而Ubuntu使用的是apt软件包管理器,因此在Ubuntu系统上默认情况下不会安装yum。如果您需要在Ubuntu上安装yum,可以按照以下步骤进行操作:

    1. 在Ubuntu系统上运行以下命令以更新软件包列表。

      sudo apt-get update
      
    2. 通过以下命令安装yum-utils包,它包含了yum脚本和重要的工具:

      sudo apt-get install yum-utils
      
    3. 通过以下命令安装yum

      sudo yum install yum
      

    请注意,使用yum来管理Ubuntu系统上的软件包可能会导致不兼容和依赖问题,因此建议您使用apt软件包管理器来管理Ubuntu系统上的软件包。

  • 常用命令语法

    yumYellowdog Updater, Modified的缩写,是基于rpm的软件包管理器,用于自动下载、安装以及更新Red Hat系列操作系统中的软件包,以及解决软件包之间的依赖关系。

    以下是常用的yum命令:

    • yum install <package-name>:安装一个软件包。可以同时安装多个软件包,例如yum install package1 package2
    • yum remove <package-name>:删除一个软件包。可以同时删除多个软件包,例如yum remove package1 package2
    • yum update:更新系统安装的所有软件包。
    • yum search <keyword>:搜索安装了的、可用于安装的和不可用于安装的所有包的关键字匹配。
    • yum info <package-name>:显示有关指定软件包的详细信息,例如安装大小、版本、发布日期以及其他依赖关系和相关软件包的信息等。
    • yum check-update:检查系统中可更新的软件包。
    • yum clean [all | packages | metadata | dbcache | plugins | expire-cache]:清理缓存文件,以释放磁盘空间。
      • all 选项将清除 packages, metadata,和 dbcache
      • packages 选项将清除下载、但未安装的包。
      • metadata 选项将清除仓库中的元数据。
      • dbcache 选项将清除元数据所存储的 sqlite 数据库缓存。
      • plugins 选项将清除所有插件生成的缓存。
      • expire-cache 选项将使 yum 忽略现有缓存并强制重新生成它。

    这些是最常用的yum命令,它们可以使您完成常见的软件包管理任务。

  • 命令示例

    # 要使用 yum 安装 vim编辑器,可以使用以下命令:
    sudo yum install vim
    

    这个命令将会自动下载vim软件包及其所有的依赖项,并将其安装到您的系统中。如果已经安装过vim,则运行该命令将会更新该软件包及其依赖项到最新版本。

3.3.2 apt

# 下载&安装,sudo 可以根据情况进行添加;
sudo apt install vim
sudo apt-get install vim
# 只下载不安装,通常用于软件的离线安装的情况下;

# 下载安装包以及相关的依赖.
apt-get download $(apt-rdepends vim | grep -v "^ " | sed 's/debconf-2.0/debconf/g')
# 只下载一个安装包
apt-get download vim  # vim 是列举的包的的名称;

3.3.3 dpkg

dpkg 是安装离线包的时候的一种操作;

 # (1)安装软件
 sudo dpkg -i package_name.deb
 # 安装一个目录下的所有文件
 sudo dpkg -i *
 # (2)卸载软件
 sudo dpkg -r pkg1 pkg2  # 移除式卸载
 sudo dpkg --remove pkg1 pkg2  # 移除式卸载
 sudo dpkg -P pkg1 pkg2  # 清除式卸载
 sudo dpkg --purge pkg1 pkg2  # 清除式卸载

4.用户操作

在Unix或Linux系统中,普通用户和root用户之间有以下区别:

  1. 账户权限:root用户拥有系统中的所有权限,包括对系统文件的写入、读取、修改和删除,以及对用户和其他进程的控制。普通用户访问系统时只有受限的权限。

  2. 环境变量:root用户和普通用户之间有不同的环境变量设置。例如,root用户的环境路径包含了系统中的所有基本命令路径,而普通用户只能在它自己的工作目录中找到它们。

  3. 安全性:root用户拥有所有权限,因此在进行操作时需要格外小心,以免意外修改或删除重要的系统文件。普通用户因其受限的权限而不会对系统造成重大损害。

  4. 使用场景:普通用户通常用于常规工作,如浏览网站、编辑文件、使用软件等。而root用户通常在需要对系统进行管理和调整时使用,如安装新软件、配置服务器、备份和恢复文件等。

一般来说,普通用户能够做的事情受到非常严格的控制。只有通过sudo或su命令获得root用户的权限,普通用户才能进行一些需要root权限才能完成的任务。这样可以保证系统不会因为误操作或恶意攻击而受到较大的影响。

常见的操作

在Ubuntu中,默认情况下root用户账户是被禁用的。要启用root账户并设置root密码,可以通过以下步骤进行操作:

  1. 在Ubuntu系统中,使用普通用户账户登录。

  2. 打开终端窗口,并使用以下命令切换到root账户:

    sudo -i
    

    输入普通用户的密码即可进入root用户模式。

  3. 通过以下命令设置root用户的密码:

    passwd
    

    然后按照提示输入新密码并确认即可。

现在,您已经成功启用了root账户并设置了root密码。下次您可以通过以下方式进入root用户模式:

  1. 在Ubuntu系统中,使用普通用户账户登录。

  2. 打开终端窗口,并使用以下命令切换到root账户:

    su -
    # 另一种方式
    su root
    

    输入root用户的密码即可进入root用户模式。

请注意,在root用户模式下,请小心地进行操作,以避免由于误操作或恶意软件引起的系统损坏。还要注意的是,一旦完成操作,请尽快从root模式退出,以确保系统的安全性。

5.进程操作

5.1 进程的查看与查找

  • top系统负载查看

    top 命令用于动态地监视进程活动与系统负载等信息
    top
    

    Linux 常用命令记录-LMLPHP

    第一行 (uptime)
    系统时间 主机运行时间 用户连接数(who) 系统1,5,15分钟的平均负载
    第二行:进程信息
    进程总数 正在运行的进程数 睡眠的进程数 停止的进程数 僵尸进程数
    第三行:cpu信息
    1.5 us:用户空间所占CPU百分比
    0.9 sy:内核空间占用CPU百分比
    0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比
    97.5 id:空闲CPU百分比
    0.2 wa:等待输入输出的CPU时间百分比
    0.0 hi:硬件CPU中断占用百分比
    0.0 si:软中断占用百分比
    0.0 st:虚拟机占用百分比
    第四行:内存信息(与第五行的信息类似与free命令)
    8053444 total:物理内存总量
    7779224 used:已使用的内存总量
    274220 free:空闲的内存总量(free+used=total)
    359212 buffers:用作内核缓存的内存量
    第五行:swap信息
    8265724 total:交换分区总量
    33840 used:已使用的交换分区总量
    8231884 free:空闲交换区总量
    4358088 cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
    
  • ps命令

    ps 命令可以列出正在运行的进程;
    # 列出所有的进程信息
    ps -A  # 产生结果比较多,因此阅读不方便;
    
    # 查看方式 1. 滚动查看
    ps -A| less
    # 最常用的是 管道符 | + grep
    ps -A |grep python
    ps -ef|grep python
    ps -aux|grep python
    
    

    Linux 常用命令记录-LMLPHP

    Linux 常用命令记录-LMLPHP

    参数解释

    -A 	 列出所有的进程
    -w   显示加宽可以显示较多的资讯
    -au  显示较详细的资讯
    -aux 显示所有包含其他使用者的进程
    -e  列出进程时,显示每个进程所使用的环境变量。
    -u  以用户为主的格式来显示进程状况。
    -x  显示所有进程,不以终端机来区分。
    

5.2 进程的关闭

  • kill 命令

    # 在关闭进程之前,通常会使用查看的命令,查看一下进程的ID 信息;
    ps -ef| grep python
    # 语法: kill -9 pid
    kill -9 1284497  # 杀死进程为 1284497 的pid
    
  • pkill命令

    # 按照名称进行进程的杀死
    # 语法:pkill -9 python
    杀死所有的python 进程;
    pkill -9 python
    
06-28 03:26