Linux Learning

Tao Zou

2025-02-21

VMWare

root用户相关

设置用户密码:

sudo passwd root

切换到root用户,输入下述命令,然后键入密码。

su root

虚拟机组成

硬件

我的联想电脑的CPU核心数为12。虚拟机运行数量 * 每个虚拟机CPU数 * 每个CPU核心数 不要超过12。

IP

设置VMWare的IP地址

VMWare中,点击编辑->虚拟网络编辑器,会看见VMnet1和VMnet8。选中VMnet8,点击更改设置。再次点击编辑->虚拟网络编辑器,会看见VMnet0,VMnet1和VMnet8。选中VMnet8,可以将子网IP第三个八位字节设置为10(如192.168.10.0)。点击NAT设置,将网关IP也同样设置(网关IP的第四个八位字节一般是2)。最后,点击虚拟网络编辑器中的确定。

本机Windows中设置VMnet8的地址

在本机中,点击以太网->更改适配器选项->VMWare Network Adapter VMnet8->属性->Internet协议版本 4。按照下图配置。

虚拟机内部设置IP地址

打开文件。如果识别不出vim命令,则需要下载apt install vim

su root
sudo vim /etc/netplan/01-netcfg.yaml

键入i进入编辑模式。

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
      addresses:
        - 192.168.10.100/24
      gateway4: 192.168.10.2
      nameservers:
        addresses:
          - 192.168.10.2

Esc,再键入:wq可以保存修改的内容。

应用更改:

sudo netplan apply

建立IP地址与主机名的映射关系:

sudo vim /etc/hosts

增加下述内容:

192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108
  1. 使用ipconfig检查ens33部分的内容,查看inet是否为192.168.10.100

  2. 然后再ping www.baidu.com看看是否能访问外网。

  3. hostname查看主机名称是否为hadoop100

Linux组成

Linux系统(发行版) = Linux系统内核(开源)+系统级应用程序

Linux系统内核:调度CPU、调度内存、调度文件系统、调度网络通讯、调度IO等。

系统级应用程序:文件管理器、任务管理器、图片查看、音乐播放等。

Linux基础命令

ls

ls [-a -l -h] /root

-h需要与-l使用,列出易读文件大小,同时显示这些文件的总大小。ls -alh还会列出所有文件(包括隐藏文件)的总大小。注意,在遇到文件夹时,ls命令只会统计文件夹自己的大小比如\(4\text{KB}\)。如果要统计文件夹及其所包含文件的大小,使用命令du -sh folder

touch

touch mytest.txt 创建文件

cat mytest.txt 查看文件

more mytest.txt 翻页查看文件

cp, mv, rm

重命名和移动文件都用mv命令。

rm *test删除所有以”test”结尾的文件。

rm *test*删除所有包含test的文件。

rm -rf /*危险命令。

which, find

which ls查看ls命令存放在哪里。

find 起始路径 -mindepth 2 -name 被查找的文件名根据名称规则查找文件

下述命令可以查找到正则形如”*-*-*-*-*“的文件(-type f)并删除(-delete)。

find -type f -name "*-*-*-*-*" -delete

下述命令可以查找到文件夹名称中包含zookeeper的文件夹(如果不区分大小写,则使用参数-iname替换-name):

find /opt -type d -name "*zookeeper*"

find 起始路径 -size +|-n[kMG]根据文件大小查找文件。例如find /root -size +100M/root路径下查找文件大小大于\(100\text{MB}\)的文件

grep, wc

grep [-n] "目标关键字" 目标文件在目标文件中查找目标关键字,显示出含有目标关键字的行,使用参数-n表示显示内容加上行号。

wc [-c -m -l -w] 目标文件

  • -c表示统计Bytes数量

  • -m统计字符数量。“换行符”,“空格”都算字符,另外.txt文件统计出的字符数会\(+1\)。英文中,一个字符就是一个Byte。

  • -l统计行数

  • -w统计单词数量

管道符

管道符|将左侧的结果作为右侧的输入。凡是有内容输出的命令都可以和管道符|做配合。

例如grep "American" mytest.txt | wc -w,查找mytest.txt的文件中包含有”American”的那些行,然后统计这些内容中的单词的总数。 例如ls -alh /root/bin | grep kafkastartstop.sh只查看kafkastartstop.sh文件的信息。 例如ls -alh | wc -l可以统计当前路径下的文件个数。 例如grep "American" mytest.txt | grep "friends"连续两遍过滤。

echo

echo命令类似于编程语言中的print命令,它可以在命令行中直接打印内容。

下述命令可以将pwd的执行结果输入到mytext.txt中。

echo `pwd` > mytest.txt

>是覆盖写;>>是追加写

tail

tail [-f -n] 文件路径

  • -f表示持续跟踪

  • -n表示查看尾部多少行,默认10行

用户和权限

用户与用户组

  • 创建用户组:groupadd myGroup

  • 在指定用户组中创建用户zt并且生成用户家目录:useradd -g myGroup -m zt

  • 查看某用户的uid,gid,所属的用户组:id zt

  • 把用户zt新加到用户组myGroup中:usermod -aG myGroup2 zt

  • 删除用户zt并删除用户家目录和mail pool:userdel -r zt

  • 删除用户组(仅在用户组为空时生效):groupdel myGroup

文件/etc/passwd的尾部会展示新建的用户。例如当我用useradd -m zt后,/home/zt路径被生成,同时在/etc/passwd文件的尾部出现zt:x:1000:1001::/home/zt:/bin/sh。 其中的x表示密码占位符,1000是用户ID,1001是用户组ID,/home/zt是用户主目录,/bin/sh是用户的默认shell。

文件/etc/group的尾部会展示新建的用户组、例如当我用groupadd myGroup后,/etc/group的尾部会出现myGroup:x:1000:。 其中x表示密码占位符,1000是用户组ID。

使用下述命令切换到用户zt,并加载目标用户的环境变量,并切换到目标用户的主目录。

su - zt

创建了新用户后,在root用户中使用下述命令可以修改新用户的终端显示,不让其只显示一个$符号。

usermod -s /bin/bash zt

文件权限

查看文件权限

举例drwxr-xr-x

  • d:代表这是一个文件夹

  • rwx:代表所属的用户对它的权限是读、写、执行。

  • r-x:代表所属用户组对它的权限是读、执行。

  • r-x:代表其他用户对它的权限是读、执行。

修改文件权限chmod

chmod [-R] 权限 文件或文件夹

  • -R表示对文件夹内的全部内容执行相同的操作

将文件权限修改为rwxr-x–xchmod u=rwx,g=rx,o=x mytest.txt

将文件夹及其所有内容修改为rwxr-x–xchmod -R u=rwx,g=rx,o=x myfolder

权限序号\(7\)代表所有读写执行权限,chmod 777 mytest.txt表示在用户、用户组、其他用户上对mytest.txt文件赋予所有权限。

修改文件所属用户/用户组

chown [-R] [用户][:][用户组] 文件或文件夹

更改文件的用户组权限:chown :myGroup1 mytest.txt

软件安装、systemctl

软件安装

apt [-y] [install | remove | search] 软件名称
  • -y:是否自动确认

下载网络文件:例如下载hadoop安装包:

wget [-b] url
  • -b表示后台下载,下载日志写入到当前工作目录的wget-log文件。

systemctl

systemctl start | stop | status | enable | disable 服务名

服务名可以是:NetworkManager, ssh, firewalld, network等。

软连接(快捷方式)

ln -s 原文件路径 快捷文件路径

IP地址

使用ifconfig查看本机IP地址,这个IP地址是私网的IP地址。

使用curl ifconfig.me可以查看本机的公网地址。

ping -c 3 www.baidu.com:检查www.baidu.com是否能够访问,检查3次。

curl www.baidu.com:向目标网站发送网络请求。

域名解析

计算机会首先查找Windows系统中的C:\Windows\System32\drivers\etc\hosts和Linux中的/etc/hosts中记录的域名到ip地址的映射。之后才会查找公开的DNS服务器也会纪录域名到ip地址的映射。

端口

linux可以支持\(65,535(2^16-1)\)个端口。

公认端口\(1~1023\):例如ssh使用\(22\)端口,HTTPS使用\(443\)端口。

注册端口\(1024~49151\):通常可以随意使用,用户松散绑定一些程序和服务。

动态端口\(49152~65535\):程序对外进行网络连接时用于临时使用。

查看一个IP地址目前被占用的端口有哪些:nmap 127.0.0.1(nmap需要提前下载)

查看某个端口的占用情况:netstat -anp | grep 端口号(netstat需要提前下载)

进程

ps

ps -ef
  • PID:进程的进程号。

  • PPID:启动此进程的其他进程ID。

  • C:此进程的CPU占用率。

  • STIME:进程启动的时间。

  • TTY:系统的终端序号,如果是?则表示此进程由系统启动,不是由终端启动的。

  • TIME:累计所使用的的CPU的时间(单位秒)。

  • CMD:进程的启动命令或启动路径。

top

  • PR:进程的优先级,值越小优先级越高。

  • NI:负数表示高优先级,正值表示低优先级。

  • VIRT:使用的虚拟内存,单位KB。

  • RES:使用的物理内存,单位KB。

  • SHR:使用的共享内存,单位KB。

  • S:进程状态:S为休眠,R为运行,Z为僵死,I为空闲

  • %CPU:cpu占用率。

  • %MEM:内存占用率。

  • %TIME+:进程使用的CPU总计时,单位10毫秒

磁盘、网卡

查看磁盘使用情况df -h

iostat:硬盘的读取、写入速度等信息

sar -n DEV 3 2:3秒刷新一次,一共刷新两次。