Ubuntu精通:利用基本命令行工具的力量

一、引言

Ubuntu是一种基于Linux操作系统的开源软件,它是由南非企业家马克·舍特尔沃思创建的。Ubuntu以其简单易用、稳定可靠以及丰富的可定制性而广受欢迎。

作为一个开源操作系统,Ubuntu的源代码开放给公众,任何人都可以查看、修改和分发它。用户可以自由选择并根据自己的需求进行个性化的配置和开发。

Ubuntu以其快速、响应迅捷的用户界面而闻名,它搭载了众多强大的预安装应用程序(如LibreOffice套件、Mozilla Firefox和GIMP等)。

Ubuntu在安全性方面也表现出色。它受到全球开源社区的审查和支持,通过定期的更新和安全补丁提供保护,以防止潜在的安全漏洞和威胁。

Ubuntu的普及性也是其重要特点之一。它可以在各种硬件设备上运行,包括台式机、笔记本电脑、服务器和物联网设备等。此外,Ubuntu也支持大量软件应用程序和游戏。
在这里插入图片描述

掌握基本命令行工具对于精通Ubuntu至关重要:

  1. 命令行工具提供了比图形用户界面更丰富和高级的功能。通过命令行可以直接访问和操作操作系统的底层功能,执行各种任务和操作,如文件和目录管理、软件包管理、网络配置和故障排除等。

  2. 相比于图形用户界面,命令行工具通常更加高效。通过简单的命令可以快速完成各种任务,而无需通过繁琐的鼠标点击和界面操作来实现相同的目的。

  3. 命令行工具是自动化和批量处理任务的重要工具。可以使用脚本和命令行命令来批量执行任务,并能够根据自己的需求进行定制和控制。这对于处理大量文件、数据和配置任务非常有用。

  4. 命令行工具带来了更深层次的配置和调试能力。用户可以通过命令行方式修改配置文件、查看系统日志、检测和解决问题等。这是精通Ubuntu的重要方面,因为它使用户能够更好地理解和控制操作系统的内部运作。

  5. 命令行工具在远程管理和服务器管理方面非常有用。通过SSH等协议,用户可以通过命令行方式远程登录和管理Ubuntu服务器,进行管理、监控、维护和故障排除等操作。

二、命令行基础

命令行界面(Command Line Interface,简称CLI)是一种以文本形式进行交互的计算机界面。用户通过输入命令来与计算机进行通信和操作,计算机则通过输出文本信息来响应用户的指令。

命令行界面相比于图形用户界面(Graphical User Interface,简称GUI)的优势:

  1. 快速执行:通过命令行界面可以直接使用命令来执行操作,而无需通过图形界面中的各种鼠标点击和菜单选择来实现相同的功能。这使得命令行界面可以更快速地进行操作。

  2. 自动化操作:在命令行界面中可以使用脚本和批处理文件来自动化执行任务。通过编写一系列命令和参数的脚本,可以实现一次性完成多个操作的目的,以提高工作效率。

  3. 在远程管理和服务器管理方面,命令行界面非常实用。可以通过SSH等协议远程登录到目标机器,并通过命令行方式进行操作和管理,这对于无法使用图形界面的服务器和远程设备尤为重要。

  4. 命令行界面可以根据用户的需求进行定制和扩展。用户可以自定义命令别名、设置环境变量、使用管道符等技巧来实现更方便和高效的操作。

  5. 图形用户界面通常需要较多的系统资源来显示和处理图形界面元素,而命令行界面只需要输出文本信息,资源占用更少,尤其对于计算机资源有限的设备或环境来说,命令行界面更加合适。

进入命令行界面的方法:

  1. 使用终端应用程序:在大多数操作系统中,都有一个终端应用程序,例如在Ubuntu中是Terminal。可以在应用程序菜单中找到终端应用程序,然后点击打开。这会启动一个命令行窗口,可以在其中输入命令和执行操作。

  2. 使用快捷键:在许多操作系统中,可以使用快捷键来打开一个终端窗口。例如,在Ubuntu中,可以使用Ctrl + Alt + T快捷键打开终端。

  3. 通过在搜索栏或应用程序菜单中搜索“终端”、“命令行”或类似的关键词来找到并打开终端应用程序。

  4. 使用远程登录工具:如果需要远程登录到另一台计算机或服务器的命令行界面,可以使用SSH(Secure Shell)等远程登录工具来连接目标机器的命令行界面。在本地计算机上可以通过打开终端应用程序,并使用SSH命令指定目标机器的IP地址和登录凭据来进行远程登录。

命令行命令通常由命令本身和一些参数或选项组成。以下是命令行命令的基本语法和结构:

command [option] [argument]
  • command表示要执行的命令。它可以是内置命令(例如cd、ls)或外部命令(例如git、apt-get)。

  • option是可选的,用于修改命令的行为。选项通常以单个短横线(-)或双短横线(–)开始,后面跟随一个字母或单词。选项需要一些参数来提供额外的信息。

  • argument是命令的参数或操作对象。参数是命令需要的数据,例如文件名、目录名、URL等。命令通常至少需要一个参数。

示例:

ls -l ~

在这个命令中,ls是命令,-l是选项,~是参数。它的含义是列出当前用户的home目录中的文件和目录,并以长格式显示。

有些命令还可以具有更复杂的语法和结构。例如,使用管道符(|)将多个命令连接起来,使用重定向符(>、>>)将命令的输出重定向到文件或其他位置,使用通配符(*、?)匹配文件名等等。

在使用命令行命令时,可以使用命令的帮助文档(通常是通过在命令后面添加–help选项运行)来了解特定命令的详细语法和选项。
在这里插入图片描述

三、文件和目录管理

3.1、导航文件系统

导航文件系统是使用命令行的一个常见任务,包括创建、移动、复制和删除文件和目录。例如:

  • pwd: 显示当前工作目录的路径。
$ pwd
/Users/username/Documents
  • ls: 列出目录中的文件和子目录。
$ ls
file1.txt  file2.txt  folder1  folder2
  • cd: 切换到指定目录。
$ cd folder1
  • cd ..: 切换到上一级目录。
$ cd ..
  • cd /: 切换到根目录。
$ cd /
  • mkdir: 创建新目录。
$ mkdir new_folder
  • rm: 删除文件或目录。
$ rm file1.txt
$ rm -r folder1
  • cp: 复制文件或目录。
$ cp file1.txt file1_copy.txt
$ cp -r folder1 folder1_copy
  • mv: 移动文件或目录,或者重命名文件。
$ mv file1.txt folder1/file1.txt
$ mv folder1 folder_renamed
$ mv file1.txt file_renamed.txt
  • touch: 创建新文件。
$ touch new_file.txt
  • cat: 显示文件内容。
$ cat file1.txt
  • less: 分页方式显示文件内容。
$ less large_file.txt
  • head: 显示文件的前几行。
$ head file1.txt
  • tail: 显示文件的后几行。
$ tail file1.txt

3.2、查找文件和目录的方法

  1. ls命令:使用ls命令可以列出当前目录下的文件和目录,可以通过不同的选项来进行过滤和排序。

    • 列出当前目录下的所有文件和目录:
      $ ls
      
    • 列出指定目录下的所有文件和目录:
      $ ls /home/fly/learning
      
    • 列出所有文件和目录,包括隐藏文件:
      $ ls -a
      
    • 以长格式显示文件和目录信息:
      $ ls -l
      
  2. find命令:find命令可以在指定目录及其子目录中查找文件和目录,可以根据不同的条件进行搜索。

    • 在当前目录及其子目录中查找名为"file.txt"的文件:
      $ find . -name "file.txt"
      
    • 在指定目录中查找以".txt"为扩展名的文件:
      $ find  /home/fly/learning -name "*.txt"
      
    • 查找大于1MB的文件:
      $ find . -size +1M
      
  3. locate命令:locate命令可以快速在整个文件系统中查找文件和目录,它使用基于数据库的索引进行搜索。

    • 查找名为"file.txt"的文件:
      $ locate file.txt
      
    • 更新locate命令的数据库:
      $ sudo updatedb
      
  4. grep命令:grep命令可以在文件中搜索匹配的内容。可以与其他命令结合使用以过滤文件列表。比如在当前目录及其子目录下的所有文件中搜索包含"keyword"的行:

    $ grep "keyword" *
    

3.3、修改文件和目录权限

要修改文件和目录的权限,在命令行中可以使用chmod命令。

  1. 修改文件权限:

    • 使用数字形式设置权限。例如,将文件file.txt的权限设置为所有者可读写,组可读,其他人只可读:
      $ chmod 644 file.txt
      
    • 使用符号形式设置权限。例如,将文件file.txt的权限设置为所有者可读写,组所有权限,其他人只可读:
      $ chmod u=rw,g=r,o=r file.txt
      
  2. 修改目录权限:

    • 使用数字形式设置权限。例如,将目录directory的权限设置为所有者可读写执行,组和其他人只可读执行:
      $ chmod 755 directory
      
    • 使用符号形式设置权限。例如,将目录directory的权限设置为所有者可读写执行,组和其他人只可读执行:
      $ chmod u=rwx,g=rx,o=rx directory
      
  3. 递归修改权限:如果需要递归修改目录及其子目录中的所有文件和目录的权限,可以使用-R选项。例如递归修改目录directory及其子目录中所有文件和目录的权限为所有者可读写,组和其他人只可读:

    $ chmod -R u=rw,g=r,o=r directory
    

在示例中,数字权限中的第一位表示所有者权限,第二位表示组权限,第三位表示其他人权限。每一位权限使用三个数字表示,读为4,写为2,执行为1,没有权限为0

修改文件和目录的权限可能需要管理员权限或所有者权限,因此在需要使用sudo命令来运行chmod命令。

四、包管理器的使用

包管理器是一个软件工具,它允许用户在操作系统中轻松地安装、升级、管理和删除软件包(也称为程序包或扩展)。包管理器的主要作用:

  1. 包管理器可以从一个或多个软件仓库中下载、安装和配置软件包。只需要指定要安装的软件包名称,包管理器就会自动解决依赖关系并安装所需的软件包及其相关依赖。

  2. 包管理器可以轻松地检查软件仓库中是否有新版本的软件包,并自动更新已安装的软件包。这样可以保持系统中的软件始终是最新的。

  3. 软件包通常依赖于其他软件包或库。包管理器可以自动解决这些依赖关系,确保安装的软件包所需的所有依赖都正确安装和配置。

  4. 包管理器可以管理软件包的配置文件,包括修改和更新配置文件、配置环境变量等。它还可以提供一些工具,用于管理已安装的软件,如卸载软件、清理不再使用的依赖项等。

  5. 包管理器可以确保软件包来自可信的软件仓库。

  6. 包管理器提供了用户友好的接口,使用户能够在命令行或图形界面中方便地搜索、安装、更新和管理软件包。对于开发者来说,包管理器还提供了开发工具、库和依赖项的管理,使他们能够更轻松地构建、测试和发布软件。

常见的包管理器包括APT(Debian/Ubuntu)、Yum/DNF(Red Hat/CentOS/Fedora)、Homebrew(macOS)、Pacman(Arch Linux)等。

4.1、安装、升级、移除软件包

使用APT(Advanced Package Tool):

  • 安装软件包:使用apt-get install命令。例如,安装名为package_name的软件包:
    $ sudo apt-get install package_name
    
  • 升级软件包:使用apt-get upgrade命令。例如,升级所有已安装的软件包:
    $ sudo apt-get upgrade
    
  • 移除软件包:使用apt-get remove命令。例如,移除名为package_name的软件包:
    $ sudo apt-get remove package_name
    

命令中的sudo表示以管理员权限运行命令。

扩展:

  1. Yum(Yellowdog Updater Modified)/DNF(Dandified Yum):

    • 安装软件包:使用yum install命令。例如,安装名为package_name的软件包:
      $ sudo yum install package_name
      
    • 升级软件包:使用yum update命令。例如,升级所有已安装的软件包:
      $ sudo yum update
      
    • 移除软件包:使用yum remove命令。例如,移除名为package_name的软件包:
      $ sudo yum remove package_name
      
  2. Homebrew(macOS):

    • 安装软件包:使用brew install命令。例如,安装名为package_name的软件包:
      $ brew install package_name
      
    • 升级软件包:使用brew upgrade命令。例如,升级所有已安装的软件包:
      $ brew upgrade
      
    • 移除软件包:使用brew uninstall命令。例如,移除名为package_name的软件包:
      $ brew uninstall package_name
      

4.2、搜索和管理软件包的依赖关系

  1. 包管理器命令:

    • APT(Debian/Ubuntu):使用apt-cache search命令搜索软件包。例如,搜索包含关键词keyword的软件包:
      $ apt-cache search keyword
      
    • Yum/DNF(Red Hat/CentOS/Fedora):使用yum search命令搜索软件包。例如,搜索包含关键词keyword的软件包:
      $ yum search keyword
      
    • Homebrew(macOS):使用brew search命令搜索软件包。例如,搜索包含关键词keyword的软件包:
      $ brew search keyword
      
  2. 依赖关系管理工具:

    • apt-rdepends(Debian/Ubuntu):用于分析软件包的依赖关系。例如,获取包名为package_name的软件包及其所有依赖项:
      $ apt-rdepends package_name
      
    • yum-utils(Red Hat/CentOS/Fedora):提供了一些依赖关系管理工具,如yum deplist用于获取软件包的依赖项列表。例如,获取包名为package_name的软件包及其所有依赖项:
      $ yum deplist package_name
      
    • brewdeps(Homebrew,需要额外安装):用于获取软件包的依赖关系。例如,获取包名为package_name的软件包及其所有依赖项:
      $ brewdeps package_name
      

五、用户和权限管理

5.1、创建和配置用户账户

Linux(Debian/Ubuntu)上创建和配置用户账户:

  • 创建用户账户:使用adduser命令。例如,创建名为username的用户账户:
    $ sudo adduser username
    
  • 配置用户账户:可以使用usermod命令修改用户账户的属性,如修改用户名、用户主目录等。例如,将用户账户old_username改为new_username
    $ sudo usermod -l new_username old_username
    

扩展:Linux(Red Hat/CentOS/Fedora)上创建和配置用户账户。

  • 创建用户账户:使用useradd命令。例如,创建名为username的用户账户:
    $ sudo useradd username
    
  • 配置用户账户:可以使用usermod命令修改用户账户的属性,如修改用户名、用户主目录等。例如,将用户账户old_username改为new_username
    $ sudo usermod -l new_username old_username
    

5.2、管理用户组和权限

  1. 创建用户组:

    • Linux(Debian/Ubuntu):使用addgroup命令创建用户组。例如,创建名为groupname的用户组:
      $ sudo addgroup groupname
      
    • Linux(Red Hat/CentOS/Fedora):使用groupadd命令创建用户组。例如,创建名为groupname的用户组:
      $ sudo groupadd groupname
      
  2. 将用户加入用户组:

    • Linux(Debian/Ubuntu):使用adduser命令将用户加入用户组。例如,将名为username的用户加入名为groupname的用户组:
      $ sudo adduser username groupname
      
    • Linux(Red Hat/CentOS/Fedora):使用usermod命令将用户加入用户组。例如,将名为username的用户加入名为groupname的用户组:
      $ sudo usermod -a -G groupname username
      
  3. 分配文件和目录权限:

    • 使用chmod命令更改文件和目录的权限。例如,将file.txt设置为用户读写权限,用户组只读权限,其他用户无权限:
      $ chmod 640 file.txt
      
    • 可以使用chown命令更改文件和目录的所有者和用户组。例如,将file.txt的所有者更改为username,用户组更改为groupname
      $ sudo chown username:groupname file.txt
      

5.3、sudo命令的使用

sudo (superuser do) 是一个用于在 Unix-like 操作系统中以超级用户(root)权限执行命令的命令。 它允许普通用户在需要进行特权操作时暂时获得root权限,而无需完全切换到超级用户帐户。

使用sudo命令,用户可以在执行命令时提供他们自己的密码来验证他们的身份。一旦通过身份验证就可以执行具有superuser权限的命令,这些命令是普通用户通常不能执行的。比如:

  1. 安装和升级软件包:使用sudo可以以root权限运行包管理器命令,如apt、yum等,以安装和升级软件包。

  2. 管理系统配置:有些系统配置文件只允许root用户进行更改。通过使用sudo,用户可以修改这些文件,如/etc/hosts/etc/network/interfaces等。

  3. 管理服务:启动、停止和重启系统服务通常需要root权限。使用sudo可以允许普通用户执行这些操作。

  4. 管理用户和权限:创建和配置用户账户、更改文件和目录的权限等操作通常需要root权限。sudo使普通用户能够进行这些管理任务。

使用sudo的基本语法是在需要以root权限执行的命令之前添加sudo。例如,使用sudo执行apt update命令来更新软件包索引:

$ sudo apt update

sudo需要配置才能使用。普通用户需要在sudoers文件中被授权才能使用sudo命令。管理员可以使用visudo命令编辑sudoers文件来进行配置。

另外,使用sudo时要小心,确保不会滥用超级用户权限,以免对系统造成损害。只有在确实需要进行需要root权限的操作时才使用sudo

六、网络配置和管理

在网络设置中,IP地址、网关和DNS是重要的参数。它们定义了设备如何与网络进行通信。

  1. IP地址(Internet Protocol Address):IP地址是唯一标识网络上设备的地址。使设备能够在网络上进行通信。IP地址分为IPv4和IPv6两种格式。IPv4地址通常用“点分十进制”表示法,如192.168.0.1。IPv6地址则更长,通常使用八组四位十六进制数字表示。

  2. 网关(Gateway):网关是连接本地网络和其他网络的中转设备。它可以是路由器、交换机或者代理服务器。当设备需要访问外部网络时,数据流向网关,然后被转发到目标网络。通常网关的IP地址为本地网络中的路由器的IP地址。

  3. 子网掩码(Subnet Mask):子网掩码是用于将IP地址分成网络部分和主机部分的参数。它通过与IP地址进行逻辑与运算,来确定属于同一网络的设备。常见的子网掩码有255.255.255.0或者/24,它表示前24位是网络部分,后8位是主机部分。

  4. DNS(Domain Name System):DNS是将域名解析为IP地址的系统。当用户在浏览器中输入域名时,系统会向DNS服务器发送请求,以获取对应的IP地址。这个IP地址用于建立与目标服务器的连接。

6.1、网络设置

在Ubuntu中,可以通过命令行或图形化工具来配置IP地址、网关和DNS等网络设置。

  • 打开终端 (Ctrl+Alt+T)。
  • 使用ifconfig命令或ip命令来查看当前网络接口和IP地址:
    $ ifconfig
    #或
    $ ip addr
    
  • 使用sudo nano /etc/netplan/01-network-manager-all.yaml命令来编辑网络配置文件。
  • 在文件中,找到要配置的网络接口(如eth0、wlan0等)并添加IP地址、网关和DNS等配置。示例:
    network:
      version: 2
      renderer: NetworkManager
      ethernets:
        eth0:
          dhcp4: no
          addresses: [192.168.1.100/24]
          gateway4: 192.168.1.1
          nameservers:
            addresses: [8.8.8.8, 8.8.4.4]
    
  • 保存文件并关闭编辑器。
  • 运行sudo netplan apply命令来应用新的网络配置。
  • 使用ifconfig命令或ip命令来验证新的IP地址配置。

6.2、远程登录

在Ubuntu上,远程登录可以使用SSH和Telnet两种常见的协议。其中,SSH(Secure Shell)是一种加密的远程登录协议,而Telnet是一种不加密的远程登录协议。为了安全考虑,推荐使用SSH作为远程登录协议。

SSH配置:

  1. 确保Ubuntu系统上已安装ssh服务器软件。如果没有,可以使用以下命令安装:
    sudo apt-get install openssh-server
    
  2. 安装完成后,SSH服务将自动启动。使用以下命令检查SSH服务的运行状态:
    sudo service ssh status
    
  3. 配置SSH服务器可以在/etc/ssh/sshd_config文件中完成。打开该配置文件:
    sudo nano /etc/ssh/sshd_config
    
  4. 在打开的文件中修改SSH服务器的各种设置。例如,更改SSH服务器监听的端口、配置访问策略等。完成编辑后,保存文件并重新启动SSH服务:
    sudo service ssh restart
    
  5. 至此可以使用任何支持SSH协议的远程登录客户端连接到Ubuntu系统。示例:
    ssh username@ip-address
    
    其中,username是目标Ubuntu系统上的有效用户名,ip-address是目标Ubuntu系统的IP地址。

Telnet配置:

  1. 安装Telnet服务器软件,使用以下命令:
    sudo apt-get install telnetd
    
  2. 安装完成后,Telnet服务将自动启动。使用以下命令检查Telnet服务的运行状态:
    sudo service telnet status
    
  3. 配置Telnet服务器可以在/etc/inetd.conf文件中完成。
    sudo nano /etc/inetd.conf
    
  4. 在打开的文件中,找到telnet行,并确保该行没有被注释掉。如果被注释了,就删除注释符号(“#”)以启用Telnet服务。
  5. 保存文件并重新启动Telnet服务:
    sudo service inetd restart
    
  6. 至此就可以使用任何支持Telnet协议的远程登录客户端连接到Ubuntu系统。例如:
    telnet ip-address
    
    其中,ip-address是目标Ubuntu系统的IP地址。

6.3、设置网络服务和防火墙

在Ubuntu上可以使用systemd来管理和设置网络服务,以及使用ufw(Uncomplicated Firewall)来配置防火墙。

设置网络服务:

  1. 启动/停止/重启/查看网络服务。

    • 启动网络服务:
      sudo systemctl start networking
      
    • 停止网络服务:
      sudo systemctl stop networking
      
    • 重启网络服务:
      sudo systemctl restart networking
      
    • 查看网络服务状态:
      sudo systemctl status networking
      
  2. 配置网络接口文件:网络接口的配置文件位于/etc/network/interfaces。可以使用编辑器(如nano)打开该文件并添加/修改网络接口的配置。示例:

    sudo nano /etc/network/interfaces
    

    在文件中,添加类似以下内容的配置:

    auto eth0
    iface eth0 inet static
    address 192.168.0.100
    netmask 255.255.255.0
    gateway 192.168.0.1
    
  3. 完成网络配置后,使用以下命令来应用新的网络配置:

    sudo systemctl restart networking
    

配置防火墙(ufw):

  1. 检查ufw状态:

    sudo ufw status
    
  2. 启用/禁用ufw防火墙:

    • 启用ufw防火墙:
      sudo ufw enable
      
    • 禁用ufw防火墙:
      sudo ufw disable
      
  3. 配置ufw规则:

    • 允许特定端口/服务:
      sudo ufw allow <port>/<protocol>
      
      示例:
      sudo ufw allow 22/tcp
      sudo ufw allow 80/tcp
      
    • 允许特定IP地址访问:
      sudo ufw allow from <ip-address>
      
    • 拒绝特定IP地址访问:
      sudo ufw deny from <ip-address>
      
  4. 完成防火墙配置后,使用以下命令来应用新的防火墙规则:

    sudo ufw reload
    

七、进程管理

查看进程:

  • 使用ps命令可以列出当前正在运行的进程,可以显示进程的PID(进程ID)、CPU使用情况、内存占用等信息。默认情况下,它显示自己的进程和终端会话的进程。一些常用的ps命令选项:
    • ps aux:显示所有进程的完整列表,包括所有用户的进程。
    • ps -ef:类似于ps aux,也显示所有进程的完整列表。
    • ps -e | grep <process-name>:通过进程名过滤并显示特定进程。
  • 也可以使用top命令来实时查看正在运行的进程的资源使用情况,包括显示CPU使用率、内存占用、进程ID等信息。在top命令界面,按q键可退出。

启动进程:

  • 使用systemctl命令来启动和停止系统服务进程。一些常用的systemctl命令:
    • sudo systemctl start <service-name>:启动指定的系统服务。例如,sudo systemctl start apache2启动Apache Web服务器。
  • 一些后台进程可以通过命令行直接启动。例如,nohup <command> &将在后台启动命令,并将输出重定向到nohup.out文件。

停止进程:

  • 使用systemctl命令可以停止系统服务进程。一些常用的systemctl命令:
    • sudo systemctl stop <service-name>:停止指定的系统服务。例如,sudo systemctl stop apache2停止Apache Web服务器。
  • 使用kill命令可以终止运行中的进程。一些常用的kill命令:
    • kill <process-id>:通过进程ID(PID)来终止指定的进程。
    • killall <process-name>:通过进程名来终止所有匹配的进程。

管理进程:

  • htop是一个交互式的进程管理工具,是top命令的一个改进版本,提供了更加交互式和友好的界面。它具有更多的功能和选项,如图形化的CPU和内存使用情况、进程树视图等。使用以下命令安装和运行htop
    sudo apt-get install htop
    htop
    
  • renice命令允许修改正在运行的进程的优先级。例如,renice +10 <process-id>将指定进程的优先级增加10。
  • nice命令可以在启动进程时设置优先级。例如,nice -n 10 <command>将以较低的优先级启动指定的命令。

在Linux中,有许多常用的进程工具可用于查看、管理和监控系统中运行的进程。top/htop/pstree都是交互型的命令,它们在终端上提供了实时的进程信息。不过,它们也可以输出到文本文件中以供后续分析。使用以下命令将输出重定向到文件:

  • top -b -n 1 > output.txt:将一次top命令的输出保存到output.txt文件中。
  • htop --batch --print-processes > output.txt:将一次htop命令的输出保存到output.txt文件中。
  • pstree > output.txt:将pstree命令的输出保存到output.txt文件中。

八、数据压缩和归档

(1)tar命令实现文件和目录的压缩和解压缩。

  1. 压缩文件:

    • tar -czvf archive.tar.gz file1 file2:将文件file1file2压缩成一个名为archive.tar.gz的gzipped tar归档文件。
    • tar -cjvf archive.tar.bz2 file1 file2:将文件file1file2压缩成一个名为archive.tar.bz2的bzipped tar归档文件。
    • tar -cf archive.tar file1 file2:将文件file1file2压缩成一个名为archive.tar的tar归档文件。
  2. 压缩目录:

    • tar -czvf archive.tar.gz directory/:将目录directory/压缩成一个名为archive.tar.gz的gzipped tar归档文件。
    • tar -cjvf archive.tar.bz2 directory/:将目录directory/压缩成一个名为archive.tar.bz2的bzipped tar归档文件。
    • tar -cf archive.tar directory/:将目录directory/压缩成一个名为archive.tar的tar归档文件。
  3. 解压缩文件:

    • tar -xzvf archive.tar.gz:解压缩名为archive.tar.gz的gzipped tar归档文件。
    • tar -xjvf archive.tar.bz2:解压缩名为archive.tar.bz2的bzipped tar归档文件。
    • tar -xf archive.tar:解压缩名为archive.tar的tar归档文件。
  4. 解压缩到指定目录:

    • tar -xzvf archive.tar.gz -C /home/directory:将名为archive.tar.gz的gzipped tar归档文件解压缩到指定目录/path/to/directory
    • tar -xjvf archive.tar.bz2 -C /home/directory:将名为archive.tar.bz2的bzipped tar归档文件解压缩到指定目录/path/to/directory
    • tar -xf archive.tar -C /home/directory:将名为archive.tar的tar归档文件解压缩到指定目录/home/directory

(2)使用gzip和bzip2进行更高级的数据压缩。 这些工具使用了更强大的压缩算法,可以在一定程度上提供更高的压缩比。

  1. 使用gzip进行压缩和解压缩:

    • 压缩文件:gzip file.txt:将file.txt压缩成file.txt.gz
    • 解压缩文件:gzip -d file.txt.gz:解压缩file.txt.gz文件,得到file.txt
  2. 使用bzip2进行压缩和解压缩:

    • 压缩文件:bzip2 file.txt:将file.txt压缩成file.txt.bz2
    • 解压缩文件:bzip2 -d file.txt.bz2:解压缩file.txt.bz2文件,得到file.txt

在使用gzipbzip2进行压缩时,会生成相应的压缩文件,原始文件将被删除。如果想保留原始文件,可以使用以下命令:

  • gzip -c file.txt > file.txt.gz:将file.txt压缩成file.txt.gz,并保留原始文件。
  • bzip2 -c file.txt > file.txt.bz2:将file.txt压缩成file.txt.bz2,并保留原始文件。

gzipbzip2工具不能直接处理目录,如果要压缩整个目录,要先使用tar命令将目录打包成归档文件,然后再使用gzipbzip2进行压缩。

(3)使用zip命令创建和解压缩ZIP文件。

  1. 创建ZIP文件:

    • zip archive.zip file1 file2:将文件file1file2打包成一个名为archive.zip的ZIP文件。
    • zip -r archive.zip directory/:将目录directory/及其下所有文件打包成一个名为archive.zip的ZIP文件。
  2. 添加文件到已存在的ZIP文件中:

    • zip archive.zip file3 file4:将文件file3file4添加到名为archive.zip的ZIP文件中。
  3. 解压缩ZIP文件:

    • unzip archive.zip:解压缩名为archive.zip的ZIP文件。
  4. 解压缩ZIP文件到指定目录:

    • unzip archive.zip -d /path/to/directory:将名为archive.zip的ZIP文件解压缩到指定目录/path/to/directory

zip命令需要先安装zip软件包,使用sudo apt install zip命令来安装它。

九、系统监控和故障排除

查看系统资源和使用情况:

  1. top:实时显示系统的整体状态,包括CPU使用率、内存使用率、进程列表等。按下键盘上的q来退出。

  2. free:显示系统的内存使用情况,包括总内存、已使用内存、空闲内存和缓存/缓冲区内存等信息。

  3. vmstat:提供实时的虚拟内存统计信息,并显示CPU使用率、内存使用率、系统活动等。也可以使用vmstat <时间间隔> <次数>来指定时间间隔和显示次数。

  4. df:显示系统中文件系统的磁盘使用情况,包括磁盘空间总量、已使用空间、可用空间和挂载点等。

  5. du:查看文件或目录的磁盘使用情况。通过指定不同的选项可以查看特定目录、限制深度等。du -h <目录或文件>命令以人类可读的格式显示磁盘使用情况。

在Ubuntu中,一些常见问题及其解决方法:

  1. 系统卡顿或运行缓慢:

    • 检查系统资源使用情况,例如使用top命令查看CPU和内存的使用情况,以及是否有异常进程占用资源。
    • 清理不需要的缓存和临时文件,可以使用sudo apt clean命令清理软件包缓存。
    • 禁用不必要的启动应用程序,可以在“启动应用程序”设置中进行调整。
    • 更新系统和软件包,使用sudo apt updatesudo apt upgrade命令。
  2. 无法连接到互联网:

    • 检查网络连接是否正常,可以使用ping命令测试互联网连通性。
    • 检查网络设置,确保正确配置了IP地址、网关和DNS服务器。
    • 检查防火墙设置,确保不会阻止互联网访问。
  3. 屏幕分辨率不正确或显示问题:

    • 检查显示设置,确保选择了正确的分辨率。
    • 检查图形驱动程序是否正确安装和更新,使用lshw -C video命令查看显示控制器的详细信息。
    • 可以尝试重新安装或配置相关的图形驱动程序。
  4. 容量不足:

    • 使用df -h命令检查磁盘使用情况,确定哪些目录或文件占用了较多空间。
    • 删除不需要的文件和目录,使用rm命令删除文件或rm -r命令删除目录。
    • 移动大文件到其他磁盘或存储介质。

在Ubuntu中,系统日志被记录在/var/log目录中的各个日志文件中。一些常见的系统日志文件和其对应的用途:

  1. /var/log/syslog:记录了系统事件、错误和警告等信息,包括内核消息和系统服务日志。

  2. /var/log/auth.log:记录了与系统身份验证相关的信息,包括用户登录、身份验证错误等。

  3. /var/log/dmesg:记录了内核和设备驱动程序的启动信息,以及可能的错误和警告。

  4. /var/log/boot.log:系统启动过程中的相关信息,包括启动服务和脚本执行的日志。

  5. /var/log/kern.log:内核日志,包括内核级别的事件、错误和警告。

  6. /var/log/apt/history.log:系统包管理器(APT)操作的历史记录,例如安装、升级或移除软件包的信息。

除了这些常见的日志文件,还可能会有其他应用程序特定的日志文件,如Web服务器(/var/log/apache2/error.log)和数据库服务器(/var/log/mysql/error.log)。

要记录和分析系统日志,可以使用一些命令和工具:

  1. 查看最新日志信息:使用tail命令查看最后几行日志,例如tail -n 100 /var/log/syslog
  2. 检查日志文件的完整内容:使用catless命令查看整个日志文件,例如cat /var/log/syslogless /var/log/syslog
  3. 过滤特定内容:使用grep命令根据关键字过滤日志内容,例如grep "error" /var/log/syslog将只显示包含"error"关键字的日志行。
  4. 使用图形界面工具:Ubuntu还提供了GUI工具"Logs"(gnome-logs),它可以用于查看和分析系统日志。

十、总结

  1. 基本命令:

    • ls:列出目录内容。
    • cd:切换目录。
    • pwd:显示当前工作目录。
    • touch:创建空文件。
    • cp:复制文件或目录。
    • mv:移动或重命名文件或目录。
    • rm:删除文件或目录。
    • mkdir:创建目录。
    • cat:显示文件内容。
    • head/tail:显示文件头几行或尾几行内容。
  2. 文件操作:

    • chmod:更改文件权限。
    • chown:更改文件所有者。
    • chgrp:更改文件所属组。
    • find:按条件查找文件。
    • grep:在文件中搜索匹配的模式。
    • wc:统计文件的行数、单词数和字节数。
  3. 系统管理:

    • ps:查看进程状态。
    • top/htop:实时查看系统资源使用情况。
    • systemctl:管理系统服务。
    • apt:管理软件包。
    • sudo:以超级用户权限运行命令。
  4. 网络和连接:

    • ip/ifconfig:查看和配置网络接口。
    • ping:测试网络连接。
    • ssh:远程登录到服务器。
    • scp:在本地和远程系统之间复制文件。
    • curl:发送和接收网络请求。
  5. 基本技巧:

    • Tab补全:按Tab键可以自动补全命令、文件和目录名。
    • 历史命令:使用上下箭头键可以访问之前执行的命令。
    • 重定向:使用>或>>将输出重定向到文件,使用<将文件内容作为输入。
    • 管道:使用|将一个命令的输出传递给另一个命令进行处理。
    • 别名:使用alias命令创建命令的别名。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Long_xu/article/details/135162996