Linux入门

2023-08-23 14:07:52 浏览数 (1)

Linux

Linux的基础介绍

Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。

吉祥物:企鹅

主要发行版本:redhat ubuntu(乌班图),redhat又引申出两个,一个是redhat一个是centos的,而现在广泛被使用的就是centos的

Linux和Windows的比较

Linux

Windows

收费

一般免费

收费

安全性

容易被攻击,经常打补丁

使用习惯

需要一定的学习成本

外行或者初学者最爱

可定制性

定制性十分的强

一般没有定制性可言

应用场景

服务器层面

桌面操作系统层面

目录结构

Linux的文件系统采用的是一个树状的目录结构,由/作为根目录,然后在此目录下创建新的目录,在我们的Linux中,任何事物都是由文件组成

目录的基本介绍
  • /bin

是binary的缩写,一般是存放着一些常用的命令

  • /sbin

s是super User的意思 这里指的是存放着系统管理员使用的系统管理程序

  • /home

存放的是普通用户的主目录,但是一般我们放东西,都在home下放

  • /root

一般是系统管理员目录

  • /boot

存放着启动Linux的一些核心的文件(别改)

  • /proc

虚拟映射(别动)

  • /srv

服务启动需要提取的数据(别动)

  • /sys

相关系统文件

  • /tmp

临时文件

  • /dev

设备管理器:将硬件映射成文件了,你看看里面有没有cpu和disk相关的目录

  • /media

自动识别的设备,并把它挂载在这个目录下面,比如你查个u盘

  • /mnt

让用户临时挂在别的文件系统的

  • /opt

给主机安装额外软件的目录

  • /usr/local

另一个给主机安排额外软件的目录

  • /var

一般放日志文件的,就是一些有着自动增长的一些文件

  • /selinux

安全子系统

命令

学Linux最重要的就是学相应的命令

文件目录类
pwd

显示当前目录的绝对路径

ls

显示当前所有的文件和目录

选项:

  • -a 显示所有的文件和目录 包括隐藏的
  • -l 以列表的方式显示信息 显示的信息更加的全面,尤其是你想看他的读写权限的时候
cd

切换到指定的目录

绝对路径方式 以/开头的 从根目录开始找。

相对路径方式 以../开头的 从当前工作目录开始找

cd ~或者cd空格 回到自己的家目录 你如果是root用户就是切到root

cd..就是切换到上一级目录

代码语言:javascript复制
cd /home 绝对
cd ../xxxx 相对
mkdir

创建目录

代码语言:javascript复制
mkdir xxxx 创建一级目录  比如说你在home下mkdir cc是行的,但是你mkdir cc/ccc/cccc 就不行了,因为里面包含着多个不存在的文件夹,他就创不了了。
mkdir -p xxxx 这个你mkdir cc/ccc/cccc 就能执行,因为他是多级目录的创建
rmdir

删除空目录 注意必须的是空的目录 如果不是空的就会失败

rm

删除一个文件或者目录。注意如果目录里面有东西 就要加参

  • -r(recursive)
    • 递归删除
  • -f (force)
    • 强制删除。忽略不存在的文件,不提示确认
代码语言:javascript复制
rm -rf xxx  删除某个文件夹及以下的所有文件
rm -rf *    删除当前目录下所有文件(慎用)
rm -rf /*   恭喜,系统所有文件都被你删了(禁用)
touch

创建空的文件,包括后缀名。这个和我们widows有大的不同。windows一般是指定文件类型创建,但是linux是你创建文件,加后缀名

代码语言:javascript复制
touch a.txt
cp

拷贝文件到指定的目录

  • -r
    • 递归复制
代码语言:javascript复制
cp a.txt cc
cp -r cc dd
mv

移动或者重命名

代码语言:javascript复制
mv a.txt  d.txt 重命名
mv cc/a.txt  dd 一定
cat

只读形式查看文件

  • n 显示行号
代码语言:javascript复制
cat a.txt
cat -n a.txt
cat -n a.txt |more 分页展示 窗口的大小进行分页显示
more

是一个基于vi编辑器文本的过滤器,以全屏方式按页显示文本内容

more 要查看的文件

代码语言:javascript复制
more xxx

操作键

功能

空格

向下翻一页

回车

向下走一行

q

离开

ctrl f

向下滚动一屏

ctrl b

返回上一屏

=

输出当前行号

less

类似于more,但是比more更加强大,不是一次将整个文件加载之后才显示,而是根据显示加载需要的内容,对于显示大型的文件有这较高的效率

代码语言:javascript复制
less xxxx

操作键

功能

空格

向下翻一页

pagedown

向下走一行

pageup

离开

/字串

向下找

?字串

向上找

q

>
代码语言:javascript复制
ls -l >a.txt //将显示的内容覆盖到a.txt 文件如果不存在就创建这个文件
>>
代码语言:javascript复制
ls -l >>a.txt  //追加到文件内容的末尾
echo

输出内容到控制台

代码语言:javascript复制
echo $path  输出环境变量到控制台
head

用于显示文件开头部分 默认开头10行

代码语言:javascript复制
head a.txt
head -n5 a.txt  开头5行
tail

输出文件尾部10行

代码语言:javascript复制
tail a.txt
tail -n5 a.txt 结尾5行
tail -f a.txt  跟踪文档更新 ,一般用于查看运行日志
find

find指令将从指令目录向下遍历各个子目录,将满足条件的文件或者目录显示在终端

代码语言:javascript复制
find /xx -xx xx
-name 是按照名字查找
-user 是按照用户名找
-size 是按照文件大小找

find /home -name a.txt   在home下按照名字叫a.txt的文件
功能类
history

查看执行过的命令

有序号的

执行第五行命令

!8回车

date

显示时间

cal

查看日历

grep指令 和管道符 |

grep是过滤 参数-n 是显示匹配行以及行号 -i是忽略大小写

|是将前一个命令的结果传给下一个命令处理

代码语言:javascript复制
cat a.txt |grep -ni abc  在a.txt中过滤出abc 并显示行号 并且忽略大小写
gzip/gunzip

压缩与解压 针对于.gz文件

zip/unzip

压缩与解压 针对于.zip文件

代码语言:javascript复制
zip -r 压缩目录
代码语言:javascript复制
unzip -d /aaa  bbb.zip  将bbb压缩文件压缩到aaa中
tar

打包文件,打包后文件类型.tar.gz

tar 【选项】 【打包后名字】【 打包内容】

代码语言:javascript复制
tar -c 建立新的备份文件
tar -v 显示详细信息
tar -f 指定压缩后文件名
tar -z 打包后同时压缩
tar -x 解包.tar文件
一般用法
tar -zcvf a.tat.gz  /home 打包
tar -zxvf a.tat.gz  解压
vim

编辑文件

按i进入编辑模式

esc离开编辑模式

:进入命令模式

:wq 保存并退出

:q! 不保存退出

:q 退出

shutdown

shutdown -h now 即刻关机

shutdown -h 1 1分钟后关机

shutdown -r now 立即重启

halt 关机

reboot 重启

sync 将内存数据同步磁盘

重启关机是应该先sync一下

用户权限类

应该少用root登录 先用普通用户登录在su root 切换身份,因为root可以做好多有关重要系统设置的事,所以一般别登

logout

注销用户

useradd

useradd 【xxx】 用户名 添加用户

代码语言:javascript复制
useradd xxd 添加小兄弟用户 并且 home下会自动生成xxd目录
useradd -d /home/xxxd 添加小兄弟用户 并且 home下会有生成xxxd目录,xxd目录就不会生成了
useradd -g 用户组 用户名 增加用户是直接加上组
usermod -g 用户组 用户名
passwd

给用户设置密码

代码语言:javascript复制
passwd xxd 回车后输入新的密码
userdel
代码语言:javascript复制
userdel xxd 删除xxd
id
代码语言:javascript复制
id root 查询root信息  uid是用户id号 gid 组id号 组 组名
su

切换用户 等级由高到底不用输密码,由低到高要输密码

代码语言:javascript复制
su root
cat /etc/group

查看所有的组

groupadd
代码语言:javascript复制
groupadd 组名  加组
groupdel 组名  删除组名

一般谁创建了文件,谁就是文件的所有者

ls -al 能查出谁是所有者

1、第一组为“拥有者的权限”,第二组为“同用户组的权限”,第三组为“其他非本用户组的权限”。 2、第二列表示连接占用的节点(i-node) 3、第三列表示这个文件或目录的“拥有者” 4、第四列表示拥有者的用户组 5、第五列为这个文件的大小 6、第六列为这个文件的创建日期或者是最近的修改日期 7、第七列为这个文件的文件名:如果文件名前面有.说明是隐藏文件。如果只输入ls 前面加.的文件不会显示出来。ls -al则会显示出全部文件。

修改所有者

chown 用户名 文件名

代码语言:javascript复制
chowm xxd a.txt
权限介绍
代码语言:javascript复制
-rw-r--r--   1 root root     0 11月 25 11:23 a.txt

0(d,-,l,c,b)

"-"普通文件

“l”是链接文件,相当于windows的快捷方式;

“b”是块设备,硬盘就是一个例子;

“c”是字符设备文件,鼠标,键盘算是;

“d”是目录文件,相当于windows的文件夹。

1-3所有者的权限

4-6 所属组的权限

7-9其他人的权限

rwx-

r是读

w是些

x是执行

-是没有权限

变更权限
-=变更

u:所有者 g:所有组 o:其他人 a:所有人(o g u)

代码语言:javascript复制
chmod u=rwx,g=rx,o=x 文件名 赋值权限
chmod o w 文件名 加权限
chomd a-x 文件名 减权限
数字变更

r=4 w=2 x=1

代码语言:javascript复制
chomd 755 文件名
chomd 777 文件名
帮助指令
man
代码语言:javascript复制
man ls
help
代码语言:javascript复制
help cd

英文能力差别,建议直接百度

进程相关
ps

显示进程

代码语言:javascript复制
ps -aux
-a 显示当前终端所有进程信息
-u 以用户的格式显示进程
-x 显示后台运行的参数
  • USER: 行程拥有者
  • PID: pid
  • %CPU: 占用的 CPU 使用率
  • %MEM: 占用的记忆体使用率
  • VSZ: 占用的虚拟记忆体大小
  • RSS: 占用的记忆体大小
  • TTY: 终端的次要装置号码 (minor device number of tty)
  • STAT: 该行程的状态:
    • D: 无法中断的休眠状态 (通常 IO 的进程)
    • R: 正在执行中
    • S: 静止状态
    • s会话的先导进程
    • T: 暂停执行
    • Z: 不存在但暂时无法消除
    • W: 没有足够的记忆体分页可分配
    • <: 高优先序的行程
    • N: 低优先序的行程
    • L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
  • START: 行程开始时间
  • TIME: 执行的时间
  • COMMAND:所执行的指令
代码语言:javascript复制
ps -ef 以全格式显示当前所有的进程
-e 显示所有的进程  -f全格式
ps -ef |grep xxx  查找具体进程
kill
代码语言:javascript复制
kill -9 进程号  强制杀死某进程
killall 杀死所有进程 (别玩)
网络配置
ipconfig

查看网络详情

ping
代码语言:javascript复制
ping http://www.baidu.com  测试网络是否能连上百度

其实还有一个指定固定ip,这个现在不要用,一般运维搞定的事,我们作为开发,一般不去动网络地址这种东西,会影响到其他的环境。会导致地址冲突,一般都是全局性的去设置

服务管理

服务本质上就是进程,但是一般是在后台运行的,所以又叫做守护进程,比如mysql sshd等

代码语言:javascript复制
service 服务名 【start、stop、restart、reload、status】开启 停止 重启 重新加载 状态
centos7之后 用systemctl 不用service
1:查看防火状态
systemctl status firewalld
service  iptables status
2:暂时关闭防火墙
systemctl stop firewalld
service  iptables stop
3:永久关闭防火墙
systemctl disable firewalld
chkconfig iptables off
4:重启防火墙
systemctl restart firewalld.service
systemctl enable firewalld
service iptables restart  

iptables起源于freeBSD的ipfirewall(内核1.x时代),所有规则都在内核中;2.0x后更名为ipchains,可以定义多条规则并串用;现在叫iptables,使用表组织规则链。iptablses按照用途和使用场合,将5条链各自切分到五张不同的表中。也就是说每张表中可以按需要单独为某些链配置规则。例如,mangle表和filter表中都能为INPUT链配置规则,当数据包流经INPUT位置(进入用户空间),这两个表中INPUT链的规则都会用来做过滤检查。
firewalld:Centos7中默认将防火墙从iptables升级为了firewalld。firewalld相对于iptables主要的优点有:firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。 

setup回车查看所有服务 使用table键切换

npm与yum

npm手动安装要安装包的

yum自动安装有资源地址就行

具体软件安装一定看人家给的命令流程,不然会极容易出问题

端口相关
telnet
代码语言:javascript复制
telnet ip port 查看端口的是不是通

查看端口

netstat

Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

代码语言:javascript复制
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令
netstat -pan | grep 8080 后面能看pid
然后 ps -aux | grep pid 就能看到进程程序名
你要觉得被占用了 你就 kill -9 pid

0 人点赞