Linux初体验 不仅仅是命令

Linux初体验

本篇主要是复习一下命令。学命令前整点概念开开胃,电脑带不动虚拟机的推荐可以买一个阿里云服务器的,一样玩,还能部署项目

啥是Linux?

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

乍一看Linux和Unix很像,那他们又有什么区别的呢?

Linux和Unix都是功能强大的操作系统,都是应用广泛的服务器操作系统,但是不要以为他们是一个东西,区别还是很大的

Linux Unix
开源性 开源,免费 需要付费
跨平台性 良好 较弱
可视化界面 命令行&窗体管理 仅命令行
硬件环境 要求较低 要求苛刻
用户群体 用户群体很广泛,个人和企业均可使用 用户群体比较窄,多是安全性要求高的大型企业使用,如银行、电信部门等

Linux内核

Linux的核心就是内核,内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。

  1. 系统内存管理
  2. 应用程序管理
  3. 硬件设备管理
  4. 文件系统管理

Linux体系结构

在这里插入图片描述

  • 1、现代 CPU 实现了不同的工作模式,不同模式下 CPU 可以执行的指令和访问的寄存器不同。
  • 2、Linux 从 CPU 的角度出发,为了保护内核的安全,把系统分成了两部分。

用户空间和内核空间是程序执行的两种不同的状态,我们可以通过两种方式完成用户空间到内核空间的转移:1)系统调用;2)硬件中断。

Linux 使用的进程间通信方式?

  • 1、管道(pipe)、流管道(s_pipe)、有名管道(FIFO)。
  • 2、信号(signal) 。
  • 3、消息队列。
  • 4、共享内存。
  • 5、信号量。
  • 6、套接字(socket) 。

root用户是什么

root帐户就像一个系统管理员帐户,允许你完全控制系统。你可以在此处创建和维护用户帐户,为每个帐户分配不同的权限。每次安装Linux时都是默认帐户。

Linux的目录结构

Linux 文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录:

在这里插入图片描述

常见目录说明

  • /bin: 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里;
  • /etc: 存放系统管理和配置文件;
  • /home: 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;
  • **/usr **: 用于存放系统应用程序;
  • /opt: 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;
  • /proc: 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
  • /root: 超级用户(系统管理员)的主目录(特权阶级o);
  • /sbin: 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等;
  • /dev: 用于存放设备文件;
  • /mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
  • /boot: 存放用于系统引导时使用的各种文件;
  • **/lib **: 存放着和系统运行相关的库文件 ;
  • /tmp: 用于存放各种临时文件,是公用的临时文件存储点;
  • /var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;
  • /lost+found: 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里。

Linux有哪些版本?

一般来说,桌面用户首选 Ubuntu ;服务器首选 RHEL 或 CentOS ,两者中首选 CentOS 。

博主的阿里云服务器就是CentOS的,其实新手这都不是问题,主要是一颗学习的心。

接下来就正菜吧,命令搞一下

Linux常用命令

date:当前日期时间

ls:列出当前目录文件

ls -a:列出当前目录文件(包含隐藏文件)

control+W:剪切 control+Y:粘贴剪切的内容

history:列出用过的命令 !+编号:会执行对应的命令

curl:在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。

文件管理命令

pwd:打印当前工作目录路径

which:查看命令位于哪个位置,因为Linux每一个命令都对应一个应用程序,执行命令也就会执行对应的应用程序,所以which pwd意思就是查看pwd程序的目录路径


du:统计目录大小,单位为kb

du -m:统计目录大小,单位为M

du -a:统计目录+文件大小

du -s:统计目录大小,只显示大小


cat、less、head、tail:查看文件内容

cat 文件 :一次性在终端显示文件内容;cat file.log
less 文件:在终端显示一部分文件内容,然后通过 空格 回车 看剩余内容; less file.log
head 文件 :在终端显示文件前10行内容;head file.log

tail 文件 :在终端显示文件后10行内容;

tail -f 文件:实时更新文件内容


touch 文件:创建一个空白文件;touch new_filetouch new_file new_file2同时创建多个文件;

mkdir 目录:创建一个目录;mkdir new_folder;如果上级目录不存在,无法创建成果

mkdir -p 目录:递归创建目录;
mkdir -p one/two/three

cp:复制文件或者目录,并粘贴到指定的文件或者目录

copy new_file new_file_copy:拷贝new_file文件到new_file_copy文件;

copy new_file folder/new_fille_copy:拷贝new_file文件到folder目录下的new_file_copy

copy -r one one_copy:拷贝one目录到one_copy目录


mv :移动文件,相当于剪切+粘贴

mv file one:移动file文件到one目录

my file rename_file:mv也可以对文件重命名


rm:删除文件和目录

rm file:删除file文件

rm -i file:在删除file文件前循环是否确定删除,y确定,n取消

rm -f file:强制删除file文件

rm -r folder:删除folder目录,-r表示递归,所以可以用来删除目录

rm -rf /*:删除根目录下的所有文件!只有root用户才有权限!!!慎用!!!!

sudo rm -rf --no-preserve-root/ 也会删除根目录所有文件

用户、权限相关

root:超级用户,一些命令需要root用户才可以执行

sudo:暂时切换为root

su: 一直切换到root用户

exit:切回到普通用户


创建用户,需要root权限

1.useradd 用户:添加用户

2.passwd --stdin 用户:指定密码


删除用户,需要root权限

userdel 用户:删除该用户

userdel -r 用户:删除该用户以及/home下的目录

userdel: user is currently used by process xxxx;重启虚拟机

系统管理命令

date 命令

显示或设定系统的日期与时间。

命令参数:

-d<字符串>  显示字符串所指的日期与时间。字符串前后必须加上双引号。
-s<字符串>  根据字符串来设置日期与时间。字符串前后必须加上双引号。
-u  显示GMT。
%H 小时(00-23)
%I 小时(00-12)
%M 分钟(以00-59来表示)
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。
%S 秒(以本地的惯用法来表示)
%a 星期的缩写。
%A 星期的完整名称。
%d 日期(以01-31来表示)。
%D 日期(含年月日)。
%m 月份(以01-12来表示)。
%y 年份(以00-99来表示)。
%Y 年份(以四位数来表示)。
123456789101112131415

实例

(1)显示下一天

date +%Y%m%d --date="+1 day"  //显示下一天的日期
1

(2)-d参数使用

date -d "nov 22"  今年的 11 月 22 日是星期三
date -d '2 weeks' 2周后的日期
date -d 'next monday' (下周一的日期)
date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d
date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d
date -d last-month +%Y%m(上个月是几月)
date -d next-month +%Y%m(下个月是几月)
1234567

free 命令

显示系统内存使用情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。

命令参数

-b 以Byte显示内存使用情况
-k 以kb为单位显示内存使用情况
-m 以mb为单位显示内存使用情况
-g 以gb为单位显示内存使用情况
-s<间隔秒数> 持续显示内存
-t 显示内存使用总合
123456

kill 命令

发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用"-KILL" 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。

常用参数

-l  信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a  当处理当前进程时,不限制命令名和进程号的对应关系
-p  指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s  指定发送信号
-u  指定用户
12345

举例

(1)先使用ps查找进程pro1,然后用kill杀掉

kill -9 $(ps -ef | grep pro1)
1

ps 命令

ps(process status),用来查看当前运行的进程状态,一次性查看,如果需要动态连续结果使用 top

linux上进程有5种状态:

  1. 运行(正在运行或在运行队列中等待)
  2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
  3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
  4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
  5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

ps 工具标识进程的5种状态码:

D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
12345

命令参数

-A 显示所有进程
a 显示所有进程
-a 显示同一终端下所有进程
c 显示进程真实名称
e 显示环境变量
f 显示进程间的关系
r 显示当前终端运行的进程
-aux 显示所有包含其它使用的进程
12345678

rpm 命令

Linux rpm 命令用于管理套件。

rpm(redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。

# 查看系统自带jdk
rpm -qa | grep jdk
# 删除系统自带jdk
rpm -e --nodeps 查看jdk显示的数据
# 安装jdk
rpm -ivh jdk-7u80-linux-x64.rpm
123456

top 命令

显示当前系统正在执行的进程的相关信息,包括进程 ID、内存占用率、CPU 占用率等,其实就是windows的任务管理器,这个被考过

常用参数

-c 显示完整的进程命令
-s 保密模式
-p <进程号> 指定进程显示
-n <次数>循环显示次数

压缩 解压

tar -cvf log.tar haha.log 仅打包,不压缩!

tar -tf log.tar 查看归档文件中的内容

tar -rvf log.rar new.log 向归档中添加新文件

tar -xvf log.rar将归档解开

tar -zcvf log.tar.gz haha.log 打包并gizp压缩

tar -zxvf log.tar.gz 解压

文件权限

这个最好了解一下

  • r 对应 4 读的权限
  • w 对应 2 写的权限
  • x 对应 1 执行的权限
权限 数字 计算
0 0+0+0
r– 4 4+0+0
-w- 2 0+2+0
–x 1 0+0+1
rw- 6 4+2+0
-wx 3 0+2+1
r-x 5 4+0+1
rwx 7 4+2+1

一个文件的权限有三组:如-rw-r–r--

  • 第一个表示这是一个文件;d表示是一个目录
  • rw对应文件所有者的权限
  • 第二个r文件所有者同一群组用户的权限
  • 第三个r其他用户的权限

所以给文件赋予权限的时候,要用三个数字连起来,分别对应这三种用户:

  • 因此最宽泛的权限就是777,因为7代表rwx,每个用户都有读、写、执行文件的权限
  • 同样最低的权限就是000,除了root用户,没有任何人有任何权限
  • chmod 600 name.txt:只有文件所有者对name.txt有读写权限,其他用户什么权限都没有

网络通讯命令

ifconfig 命令

  • ifconfig 用于查看和配置 Linux 系统的网络接口。
  • 查看所有网络接口及其状态:ifconfig -a
  • 使用 up 和 down 命令启动或停止某个接口:ifconfig eth0 upifconfig eth0 down

iptables 命令

iptables ,是一个配置 Linux 内核防火墙的命令行工具。功能非常强大,对于我们开发来说,主要掌握如何开放端口即可。例如:

  • 把来源 IP 为 192.168.1.101 访问本机 80 端口的包直接拒绝:iptables -I INPUT -s 192.168.1.101 -p tcp --dport 80 -j REJECT

  • 开启 80 端口,因为web对外都是这个端口

    iptables -A INPUT -p tcp --dport 80 -j ACCEP
    1
    
  • 另外,要注意使用 iptables save 命令,进行保存。否则,服务器重启后,配置的规则将丢失。

netstat 命令

Linux netstat命令用于显示网络状态。

利用netstat指令可让你得知整个Linux系统的网络情况。

语法

netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
1

参数说明

  • -a或–all 显示所有连线中的Socket。
  • -A<网络类型>或–<网络类型> 列出该网络类型连线中的相关地址。
  • -c或–continuous 持续列出网络状态。
  • -C或–cache 显示路由器配置的快取信息。
  • -e或–extend 显示网络其他相关信息。
  • -F或–fib 显示FIB。
  • -g或–groups 显示多重广播功能群组组员名单。
  • -h或–help 在线帮助。
  • -i或–interfaces 显示网络界面信息表单。
  • -l或–listening 显示监控中的服务器的Socket。
  • -M或–masquerade 显示伪装的网络连线。
  • -n或–numeric 直接使用IP地址,而不通过域名服务器。
  • -N或–netlink或–symbolic 显示网络硬件外围设备的符号连接名称。
  • -o或–timers 显示计时器。
  • -p或–programs 显示正在使用Socket的程序识别码和程序名称。
  • -r或–route 显示Routing Table。
  • -s或–statistice 显示网络工作信息统计表。
  • -t或–tcp 显示TCP传输协议的连线状况。
  • -u或–udp 显示UDP传输协议的连线状况。
  • -v或–verbose 显示指令执行过程。
  • -V或–version 显示版本信息。
  • -w或–raw 显示RAW传输协议的连线状况。
  • -x或–unix 此参数的效果和指定"-A unix"参数相同。
  • –ip或–inet 此参数的效果和指定"-A inet"参数相同。

实例

如何查看系统都开启了哪些端口?

[root@centos6 ~ 13:20 #55]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1035/sshd
tcp        0      0 :::22                       :::*                        LISTEN      1035/sshd
udp        0      0 0.0.0.0:68                  0.0.0.0:*                               931/dhclient
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node PID/Program name    Path
unix  2      [ ACC ]     STREAM     LISTENING     6825   1/init              @/com/ubuntu/upstart
unix  2      [ ACC ]     STREAM     LISTENING     8429   1003/dbus-daemon    /var/run/dbus/system_bus_socket
12345678910

如何查看网络连接状况?

[root@centos6 ~ 13:22 #58]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 192.168.147.130:22          192.168.147.1:23893         ESTABLISHED
tcp        0      0 :::22                       :::*                        LISTEN
udp        0      0 0.0.0.0:68                  0.0.0.0:*
1234567

如何统计系统当前进程连接数?

  • 输入命令 netstat -an | grep ESTABLISHED | wc -l
  • 输出结果 177 。一共有 177 连接数。

用 netstat 命令配合其他命令,按照源 IP 统计所有到 80 端口的 ESTABLISHED 状态链接的个数?

严格来说,这个题目考验的是对 awk 的使用。

首先,使用 netstat -an|grep ESTABLISHED 命令。结果如下:

tcp        0      0 120.27.146.122:80       113.65.18.33:62721      ESTABLISHED
tcp        0      0 120.27.146.122:80       27.43.83.115:47148      ESTABLISHED
tcp        0      0 120.27.146.122:58838    106.39.162.96:443       ESTABLISHED
tcp        0      0 120.27.146.122:52304    203.208.40.121:443      ESTABLISHED
tcp        0      0 120.27.146.122:33194    203.208.40.122:443      ESTABLISHED
tcp        0      0 120.27.146.122:53758    101.37.183.144:443      ESTABLISHED
tcp        0      0 120.27.146.122:27017    23.105.193.30:50556     ESTABLISHED
1234567

ping 命令

Linux ping命令用于检测主机。

执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

指定接收包的次数

ping -c 2 www.baidu.com
1

telnet 命令

Linux telnet命令用于远端登入。

执行telnet指令开启终端机阶段作业,并登入远端主机。

语法

telnet [-8acdEfFKLrx][-b<主机别名>][-e<脱离字符>][-k<域名>][-l<用户名称>][-n<记录文件>][-S<服务类型>][-X<认证形态>][主机名称或IP地址<通信端口>]
1

参数说明

  • -8 允许使用8位字符资料,包括输入与输出。
  • -a 尝试自动登入远端系统。
  • -b<主机别名> 使用别名指定远端主机名称。
  • -c 不读取用户专属目录里的.telnetrc文件。
  • -d 启动排错模式。
  • -e<脱离字符> 设置脱离字符。
  • -E 滤除脱离字符。
  • -f 此参数的效果和指定"-F"参数相同。
  • -F 使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。
  • -k<域名> 使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。
  • -K 不自动登入远端主机。
  • -l<用户名称> 指定要登入远端主机的用户名称。
  • -L 允许输出8位字符资料。
  • -n<记录文件> 指定文件记录相关信息。
  • -r 使用类似rlogin指令的用户界面。
  • -S<服务类型> 设置telnet连线所需的IP TOS信息。
  • -x 假设主机有支持数据加密的功能,就使用它。
  • -X<认证形态> 关闭指定的认证形态。

实例

登录远程主机

# 登录IP为 192.168.0.5 的远程主机
telnet 192.168.0.5 

Vim编辑器(重要)

具体的流程可以看我做的这张图

在这里插入图片描述

插入模式

i进入插入模式

esc键盘退出插入模式,进入交互模式

交互模式

0定位到行首;$定位到行尾

w 一个单词一个单词的移动,空位就是一个单词

x 删除一个字符

先按数字键,再看x,可以删除数字行比如先按数字键4,再按x就会删除光标以后的4行

dd:连续按两次d会删除一行

d0:删除当前光标到行首的字符

d$:删除当前光标到行尾的字符

dw:删除一个单词

yy:复制一行

p:粘贴;7+p:粘贴7次

u:撤销;7+u:撤销7次

control+R:修改撤销,就是取消撤销操作

G:定位到最后一行;7+G:跳转到第7行

/+字符:从当前光标向文件尾部开始查找字符;/World:在文件中查找”World字符”,n:跳转到下一个字符

?+字符:从当前光标向文件首部开始查找字符

命令模式

:s/旧字符串/新字符串:替换光标所在行的第一个字符串

:s/旧字符串/新字符串/g:替换光标所在行的所有字符串

:#,# s/旧字符串/新字符串/g:替换指定行到指定行之间的字符串;:1,5 s/World/shijie/g:替换1-5行的”World”为”世界”

:%s/旧字符串/新字符串/g:替换文件内所有的字符串

:w 保存修改

:q退出文件; :q!强制退出,不保存修改

:wq保存并退出 :w!强制保存,没有写的权限的时候可以强制保存

tips:

命令光看不敲,太理论了吧亲,建议实践一下,回头面试官就问一句,说说常用的20个Linux命令?背书就没意思了

可以删除数字行`比如先按数字键4,再按x就会删除光标以后的4行

dd:连续按两次d会删除一行

d0:删除当前光标到行首的字符

d$:删除当前光标到行尾的字符

dw:删除一个单词

yy:复制一行

p:粘贴;7+p:粘贴7次

u:撤销;7+u:撤销7次

control+R:修改撤销,就是取消撤销操作

G:定位到最后一行;7+G:跳转到第7行

/+字符:从当前光标向文件尾部开始查找字符;/World:在文件中查找”World字符”,n:跳转到下一个字符

?+字符:从当前光标向文件首部开始查找字符

命令模式

:s/旧字符串/新字符串:替换光标所在行的第一个字符串

:s/旧字符串/新字符串/g:替换光标所在行的所有字符串

:#,# s/旧字符串/新字符串/g:替换指定行到指定行之间的字符串;:1,5 s/World/shijie/g:替换1-5行的”World”为”世界”

:%s/旧字符串/新字符串/g:替换文件内所有的字符串

:w 保存修改

:q退出文件; :q!强制退出,不保存修改

:wq保存并退出 :w!强制保存,没有写的权限的时候可以强制保存

tips:

命令光看不敲,太理论了吧亲,建议实践一下,回头面试官就问一句,说说常用的20个Linux命令?背书就没意思了

参考网址:https://blog.csdn.net/ThinkWon/article/details/104588679

猜你喜欢

转载自blog.csdn.net/weixin_43876186/article/details/108556736