走近Linux系统
开机
windows开机会启动许多程序。它们在Windows叫做’服务" ( service ) , 在Linux就叫做"守护进程" ( daemon)。
一般来说,用户的登录方式有三种:
●命令行登录 账号密码
●SSH登录(远程) 我们使用的是Xshell
●图形界面登录 本地的虚拟机
最高权限账户为root,可以操作一切!
关机
在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
关机指令为shutdown,这个指令不建议在服务器上操作,可以在本机上尝试。
sync #将数据由内存同步到硬盘中。
shutdown #关机指令,你可以man shutdown 来看一下 帮助文档。例如你可以运行如下命令关机:
shutdown -h 10 #这个命令告诉大家,计算机将在10分钟后关机
shutdown -h now#立马关机
shutdown -h 20:25 #系统会在今天20:25关机
shutdown -h +10 #十分钟后关机
shutdown -r now #系统立马重启
shutdown -r +10 #系统十分钟后重启
reboot #就是重启,等同于shutdown -r now
halt #关闭系统,等同于shutdown -h now和poweroff
最后总结:不管是重启还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中,执行命令之后没有返回消息(没有错误就代表操作成功)则表明运行成功
系统目录
1、一切皆文件
2、根目录/ ,所有的文件都挂载在这个节点下
ls / #查看当前下的目录
目录解释
/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。比如ls命令 /boot:
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。不要动 /dev : dev是Device(设备)的缩写,
存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home :用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。administrator 可以在这个目录下及建立自己的目录。 /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。 不要动
/opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/root:该目录为系统管理员,也称作超级权限者的用户主目录。 /sbin:s就是Super
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。(后面可以把本地的的一些文件挂载在这个目录下)
/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/tmp:这个目录是用来存放一些临时文件的。 用完即丢的文件可以放在这个目录下。比如安装包用完就删除 /usr/bin: 系统用户使用的应用程序。 /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。 /usr/src:
内核源代码默认的放置目录。
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
/www:存放服务器网站相关的资源,环境,网站的项目(里面会安装一些环境) 环境基本配置:LNMP( Linux Nginx Mysql Php ) 或者LAMP(Linux Apache Mysql Php)
默认的网络配置文件ifcfg-eth0
ifconfig 查看网络的配置
ipconfig winows 网络配置
网络配置目录:
cd /etc/ sysconfig/network-scripts
ping *#用来查看网络是否连通
* ifconfig *#查看网络 和Windows的ipconfig是一样的*
常用的基本命令
windosw和linus通用的内容
参数合并 指令格式
路径: Linux根路径是/,Linux区分大小写windows不区分
-
绝对路径:以/开头
-
相对路径 :非/开头
- 特殊的相对路径 :
.. 上一级
. 当前这一级
~ 进入当前登录的用户目录
目录文件操作指令
ls(列出目录!)
在Linux中Is可能是最常常被使用的!
直接使用ls 就会列出当前路径下的所有文件
-a:#参数: all ,查看全部的文件,包括隐藏文件
-l:#参数列出所有的文件,包含文件的属性和权限,没有隐藏文件
-R # 列出所有子目录下的文件
所有Linux可以组合使用!
ls -al 查看全部的文件包括隐藏文件的属性和权限
属主和属组具体后面解释
ll不是命令,是ls -l的别名 可以通过 alias 指令查看别名
tips : tab键可以做到自动补全
cd:切换目录 change dir
cd:#切换目录命令!
cd .. : #返回上一级目录
cd ~: #进入用户家目 回到当前的用户目录
cd -:返回最近访问目录
cd ./:#当前目录
pwd :#显示当前用户所在的目录
如果以root的身份进行登录,进入的目录就是root的家目录,
对一般用户,~表示/home/(用户名)
对于root用户,~表示/root
pwd :显示用户当前所在的目录
比如当前在usr目录下 如果以相对路径 进入home目录
cd …/home 如果以绝对路径就是 cd /home
mkdir 创建一个目录
mkdir test # 创建目录
mkdir -p test2/test3 # 用-p递归创建层级目录
如果目录存在,重复创建,会报错
rmdir 删除目录
rmdir test # 删除空的目录
rmdir -p test2/test3/test4 #递归删除文件
rmdir仅能删除空的目录,如果下面存在文件,需要先删除文件,递归删除多个目录-p参数即可
touch 创建文件
创建文件可以使用绝对路径,也可以使用相对路径,如果文件已经存在,那么就修改文件创建的时间。
touch text.tx
cp复制文件或者目录
cp [选项] 源文件或目录 目标文件或目录 #
要么把文件复制到目录下,要么把文件或者目录复制到目录下
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在。不存在的话创建文件
-i 或 --interactive 覆盖文件之前先询问用
-r / -R 递归处理 这里大小写都是可以的
cp t.txt t1.txt #将当前t.txt 复制 到t1.txt
# 如果文件重复就选择覆盖或者放弃
# y 代表覆盖 n 代表放弃
模糊匹配也支持复制操作 所以支持多个文件或者文件夹的复制
解决不能复制文件夹问题 cp -r test xqr 把home 下的test文件 复制到home下的xqr文件
rm 移除文件或者目录
-f #忽略不存在的文件,不会出现警告,强制删除! 即使文件属性为只读(即写保护),亦直接删除
-r #递归删除目录其下所有文件!
-i #互动,删除询问是否删除
rm -rf / # 系统中的所有文件都删除 删库跑路!!这个命令别用
rm -rf install.sh/#删除系统中的install.sh
rm test 的时候默认会询问是否删除
也可以使用 *
代表进行模糊匹配。 * 代表任意数量的任意字符
rm -rf * # 删除的时候需要看当前的路径是什么!如果当前路径是/ 那等同于 rm -rf /
rm - f *.txt #删除当前目录下的 txt的文件
rm - rf a* #删除以a开头的任意的文件或者文件夹啊、
mv 移动文件或者目录|重命名文件
mv [选项] 源文件或目录 目标文件或目录 注意不能把文件移动到文件夹下
-f #强制
-u #只替换已经更新过的文件
mv test xqr #移动文件
mv test test2 #重命名文件夹名
可以将移动和重命名的操作结合起来使用
可以同时移动目录和文件,也支持模糊匹配
man 查看帮助文档
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。: man [选项] 命令
man + 指令的名字
g切换到整个文本的首部(vi 中是gg),shift+g (大写G)切换额文档的尾部
n切换的
:q 回车退出
文件内容操作指令
vi命令 查看文件
vi是linux上默认的文本编辑器
支持的模式
查看模式 | |
---|---|
进入编辑模式 | i(编辑的位置是在光标的位置) |
进入编辑模式 | o(编辑的位置是光标的下一行新行插入) |
上下行切换 | j /k 和上下键一样 |
搜索 | /搜索内容 回车后进入搜索 |
切换文档的首位部 | gg 首部 shift+g 文档尾部 |
删除光标所在行 | dd |
:w | 写(修改内容) |
:q | 退出 |
:wq | 修改并退出 |
:q! | 不修改并退出 |
编辑模式 | |
---|---|
回退到查看模式 | esc |
如果输入vi 查看不存在的文件,就会创建,离开的时候如果保存,那么这个文件就可以正常保存了。
vim 提供高亮的文件查看
基本的指令格式和vi 是相同的用法。
cat 显示文件内容 打印输出
cat [选项] [ 文件名称 ]
功能: 查看目标文件的内容
常用选项:
-n 对输出的所有行编号
cat test.txt
less指令 查看文件内容
为什么要有和学习less指令
- 上面的cat和vim指令都是加载出来所有的文件内容,但是less指令可以做到不用加载文件的所有内容,也可以进行查找的操作。
- 公司的生产上,使用tomcat的时候,如果出现后台报错,没有类似IDEA的图形化界面可以排查,但是可以查看tomcat的日志内容,而如果日志内容很多,占用空间比较大,全部加载性能不好,所以不使用。
head指令 显示文件开头到指定行 打印内容
不指定指令的时候,默认打印十行
与cat的对比
tail 指令 显示从文件尾部开始往前指定的行数
-n 行数 显示的是最后的n行 也就是倒数的n行(从文件尾部 -n 到文件尾部)打印输出
和重定向结合使用
可以和漏斗结合进行理解 大开口的那一段接受数据 小开口的那一端输出
-
标准输入(System.in) <
-
标准输出重定向(System.out) >
3. 标准错误输出 (System.err) 2 >
管道
把前面输入的内容作为一个输出,输出到后面的文件里面去。
类似数据库的分页操作的底层实现 limit offset,len
取 (x 到 y)行的内容
- 可以先取出前y行 ( head -ny 文件名)
- 然后再取后 ( tail -n y-x+1)行
- 类似就可以扩展的取出第几行的数据
也可以和 > 操作结合起来
date指令
可以使用 man指令查看帮助文档
man date
直接输入
date
获取当前的时间
其他常用的指令
进程操作指令
根据端口号查找pid netstate-anp
展示所有的端口号
根据前面的内容查找(grep)端口号
注:
window下根据端口号查找pid的指令是
netstat -ano | findstr 端口号
根据进程的名称查找pid ps -ef
但是如果不知道端口号,该怎么查找pid
可以通过程序的名字查找pid
ps -ef # 显示所有的进程名称和pid
ps aux
grep 进行搜索id
ps -ef | grep mysql
ps aux | grep mysql
和java的jps相似 只是jps 是显示所有java进程的名称和pid
文件解压指令
使用 tar 解压命令
- tar/tar.gz 安装包使用命令
tar xvf 文件名
使用 unzip 解压命令
unzip + 文件名 # 比如 unzip apache-tomcat-8.5.47.zip
软件操作指令
yum安装 list/remove/install
yum 在线安装:远程有一个软件包的安装仓库,发起网络请求获取软件包,直接安装。
yum list | grep [软件包关键字] # 注意, 最好要加上 grep, 否则罗列的内容会非常多, 导致机器很卡.
安装软件包(需要管理员权限)
yum install [软件包名字]
yum install -y [软件包名字] # 不询问直接安装
卸载软件包
yum remove [软件包名字]
搜索本机中已经通过yum安装的软件
yum list installed |grep 软件名
rpm安装 -ivh/-qa/-e/:
已经有一个本地的rpm文件,(rpm文件是Linux 上的可安装文件,类似windows上exe文件
rpm -ivh +软件文件的路径
搜索在本机中已经通过rpm安装的软件
rpm -qa | grep 软件名
卸载
rpm -e 软件名
注意这里的软件名字,要先通过rpm -qa
查询有哪些软件名字,卸载的名字要和软件名字一致。
环境变量配置
全局的环境配置变量 vi etc/profile
vi /etc/profile# 或者下面的命令
vim /etc/profile
修改后刷新 source/etc/profile
对etc/profile操作完成之后按esc 从编辑模式进入查看模式,输入:wq
保存退出
之后进行刷新
source /etc/profile
系统统计 top指令
可以进行系统统计的指令
常用的下面的四个必须知道
用户
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$
- 超级用户
- 普通用户
用户账号的管理
用户账号的管理工作主要涉及到用户账号的添加、修改和删除。添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录ShelI等资源。
理解一下本质: Linux中一切皆文件,这里的添加用户说白了就是往某-个文件中写入用户的信息了!
而这个文件就是用户账户文件 /etc/passwd
useradd 命令 添加用户
useradd -选项 用户名
-m:自动创建这个用户的主目录/home/cqh
-G:给用户分配组
passwd用户 给用户配置密码
userdel 删除用户
userdel -r 123 #删除用户的时候把它的目录也删除掉
切换用户 su
su [用户名]
功能:切换用户。 例如,要从root用户切换到普通用户user,则使用 su user。
要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。
权限
文件类型和访问权限
-
文件类型
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式 -
基本权限
i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
iv.“-” 表示不具有该项权限
对不具有权限的文件操作
演示用户123 对只读文件的操作
chomd 修改权限
属主 属组(用户组)
访问一个文件的人可能分成三种类别.
文件和文件目录的所有者:u—User
文件和文件目录的所有者所在的组的用户:g—Group
其它用户:o—Others
可以通过 ll查看
比如:-rw-r–r-- 1 root root 0 Jan 7 21:29 testfile
表示testfile文件的属主有可读可写,属组可读,其他人可读。
testfile的属主是root,属组是root。
通过以下这个指令也很重要!
cat /etc/passwd
Linux文件属性有两种设置方法,一种是数字(常用的是数字), 一种是符号。
设置权限方式1
u:拥有者 user
g:拥有者同组用 group
o:其它用户 other
a:所有用户 all
和以下的符号搭配使用
- +:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
赋予权限
只用将前面的
# chmod u+w /home/abc.txt
# chmod o-x /home/abc.txt
# chmod a=x /home/abc.txt
取消权限
设置权限方式二
使用数字的方式
读 对应数字 4
写 对应数字 2
可执行 对应数字 1
chown 修改拥有者
chown 用户 文件/文件夹
chgrp 修改用户组
硬链接和软链接
Linux链接分为两种:硬链接、软链接(了解即可)
硬链接:A—B,假设B是A的硬链接,那么他们两个指向了同一个文件!允许一个文件拥有多个路径,用户可以通过这种机制硬链接到一个重要文件上,防止误删
软链接:类似Windows下的快捷方式,删除源文件,快捷方式也就访问不了
操作步骤:
创建链接
ln f1 f2! # 创建硬链接 f2
ln -s f1 f3 # 创建一个软连接(符号链接)f3
touch命令创建文件!
echo输入字符串,也可以输入到文件
[root@iZ2zefgqs5qgnl9r5se6xgZ etc]# cd /home
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# ls
test xqr
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# touch f1 # 创建一个f1文件
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# ls
f1 test xqr
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# ln f1 f2 # 创建一个硬链接f2
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# ls
f1 f2 test xqr
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# ln -s f1 f3 # 创建一个软连接(符号链接)f3
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# ls
f1 f2 f3 test xqr
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# ll
total 8
-rw-r--r-- 2 root root 0 Jan 29 17:04 f1
-rw-r--r-- 2 root root 0 Jan 29 17:04 f2
lrwxrwxrwx 1 root root 2 Jan 29 17:05 f3 -> f1
drwxr-xr-x 2 root root 4096 Jan 29 16:14 test
drwxr-xr-x 4 root root 4096 Jan 29 15:55 xqr
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# echo "i love you" >>f1 # 给f1中写入字符串
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# ls
f1 f2 f3 test xqr
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# ll
total 16
-rw-r--r-- 2 root root 11 Jan 29 17:07 f1
-rw-r--r-- 2 root root 11 Jan 29 17:07 f2
lrwxrwxrwx 1 root root 2 Jan 29 17:05 f3 -> f1
drwxr-xr-x 2 root root 4096 Jan 29 16:14 test
drwxr-xr-x 4 root root 4096 Jan 29 15:55 xqr
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# cat f1 # 查看f1
i love you
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# cat f2 # 查看f2
i love you
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# cat f3 # 查看f3
i love you
删除操作执行后,硬链接和软连接不一样了
硬链接还在,软连接不在
(硬链接相当于是深拷贝,软连接相当于是浅拷贝可以这么理解)
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# rm -rf f1 # 删除f1
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# ls
f2 f3 test xqr
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# cat f1
cat: f1: No such file or directory
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# cat f2 # f2 硬链接还在
i love you
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# cat f3 #f3 软连接不在
cat: f3: No such file or directory
[root@iZ2zefgqs5qgnl9r5se6xgZ home]#
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# rm -rf f1 # 删除f1
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# ls
f2 f3 test xqr
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# cat f1
cat: f1: No such file or directory
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# cat f2 # f2 硬链接还在
i love you
[root@iZ2zefgqs5qgnl9r5se6xgZ home]# cat f3 #f3 软连接不在
cat: f3: No such file or directory
[root@iZ2zefgqs5qgnl9r5se6xgZ home]#
转载:https://blog.csdn.net/weixin_45271990/article/details/113399232