文件系统
对于Linux来说,使用统一的目录树结构:
1 | /bin 二进制文件,系统常规命令 |
Linux下没有C:D:这种盘符的概念
在\home目录下存放着用户目录
超级用户root,其用户目录为/root
Linux命令行
命令行含义
1 | 示例:root@app00:~# |
命令行的组成
1 | 示例: 命令 参数名 参数值 |
基础操作
重启系统
1 | (1)立刻关机 |
关闭系统
1 | (1)立刻重启 |
帮助命令
1 | ifconfig --help //查看ifconfig命令的用法 |
命令说明书(man)
1 | man shutdown //打开命令说明后,可按"q"键退出 |
切换用户
1 | Lehrmann Lehrmanncc //切换为用户"yao",输入后回车需要输入该用户的密码 |
目录操作
切换目录(cd)
1 | cd / //切换到根目录 |
查看目录(ls)
1 | ls //查看当前目录下的所有目录和文件 |
创建目录(mkdir)
1 | mkdir tools //在当前目录下创建一个名为tools的目录 |
删除目录与文件(rm)
1 | rm 文件名 //删除当前目录下的文件 |
修改目录(mv)
1 | mv 当前目录名 新目录名 //修改目录名,同样适用与文件操作 |
拷贝目录(cp)
1 | cp /usr/tmp/tool /opt //将/usr/tmp目录下的tool目录复制到 /opt目录下面 |
搜索目录(find)
1 | find /bin -name 'a*' //查找/bin目录下的所有以a开头的文件或者目录 |
查看当前目录(pwd)
1 | pwd //显示当前位置路径 |
文件操作
新增文件(touch)
1 | touch example/test.txt //在example目录下创建test.txt文件 |
文件权限
文件权限说明
1 | 文件权限简介:'ower'代表文件的属主ower,'r' 代表可读read(4),'w' 代表可写write(2),'x' 代表执行权限excute(1),括号内代表"8421法" |
例如以下用ls-l命令查看example目录下的文件
第一段就是文件的权限,第二段为文件属主,第三段为属主所在用户组,第四段为文件大小,第五段为创建时间,第六段为创建文件名。
文件权限的含义如下
1 | 文件权限信息示例:-rw-rw-r-- |
1 | -第一组三位:拥有者的权限 |
于是-rw-rw-r—即表示:用户自己可以读写,但不能执行;同用户组的成员也可以读写,但无法执行;其他用户仅能读,但无法写、执行。
修改文件权限
文件的权限仅能由文件的属主或root用户进行修改。
chmod,change file mode 修改文件的访问权限
1 | 普通授权 chmod o+w a.txt // o表示other,w表示增加write的权限 |
使用普通授权,可以发现train1.txt文件其他用户组已经增加了write的权限。
修改文件属主
一般来说,每个用户仅操作自己的用户目录,所以修改文件属主并不常用。
使用chown命令,change owner修改文件的属主
只有文件的owner和root用户才有权限修改文件属主
打包与解压
压缩文件说明
1 | .zip、.rar //windows系统中压缩文件的扩展名 |
打包文件
1 | tar -cvf 打包压缩后的文件名 要打包的文件 |
解压文件
1 | tar -zxvf a.tar //解包至当前目录 |
关机与重启
1 | shutdown -h now //参数h为halt,即立即关机 |
但如果是远程管理服务器的话,应当注意不能将服务器关机,之能进行重启
软连接
1 | # 使用ln命令来创建软连接 |
- 删除软连接,对原目录没有任何影响
- 删除原目录,则软连接失效
可以发现根目录下有较多的软连接,例如bin、lib等,bin其实指向目录user/bin。
用户操作
添加用户
1 | sudo useradd -m test1 |
其中,sudo(super use)表示以管理员身份运行;-m参数表示在/home目录下添加用户目录。
添加密码
1 | sudo passwd test1 |
删除用户
1 | sudo userdel test1 |
但这个时候虽然已经将test1用户删除了,但在\home目录下仍有\test1用户目录,所以需要将其目录删除
1 | sudo rm -rf /home/test1/ |
- 在登陆系统时,Linux默认不能使用root用户进行登陆
- 只有特殊的用户才能执行sudo,例如刚才创建的新用户test1就不能使用sudo。而用户lehrmann便可以。在Linux下,把能执行sudo命令的用户叫sudoer。
root用户
首次使用root用户,需要给root用户设置密码(只需要设置一次,需要妥善保管root用户密码)
1 | sudo passwd root |
切换root用户,使用su(switch user)命令
1 | su root |
su root仅会切换终端(terminal)用户为root用户,桌面环境并不会切换
退出root用户,
1 | exit |
可执行脚本
脚本script,一种解释执行的程序
Linux下有常见的三种脚本程序
- Shell脚本 *.sh
- Perl脚本 *.pl
- Python脚本 *.py
脚本程序都是由脚本解释器来运行的
例如:Python脚本解释器:/bin/python3
执行一个脚本时,可以采用以下命令
1 | /bin/python3 hello.py |
也可以采用以下方式,首先创建python脚本后,在第一行添加python脚本解释器路径
1 | #!/bin/python3 |
但这个时候通过以下命令运行hello.py仍会出错
为什么会出现这种情况呢?提示权限不够,于是我用以下命令查看hello.py
会发现hello.py在用户的权限中仅能读写,不能执行,于是我们给用户增加权限
1 | chmod u+x hello.py |
现在hello.py便可用过 ./hello.py 成功运行。
环境变量
用户环境变量
用户环境变量,定义在 ~/.profile中,在Linux中,以 . 开头的文件为隐藏文件,可以通过以下命令查看
1 | ls -a |
采用gedit可以对.profile文件进行编辑
1 | gedit .profile |
用户环境变量仅对当前用户有效,若切换用户后,则之前编辑的用户环境变量无效,因为每个用户都有自己的 .profile文件。
系统环境变量
系统环境变量定义在:/etc/profile 中,这里面的环境变量对所有的用户都有效。
修改系统变量需要root用户权限,因为/etc下的东西都是需要超级用户才能进行修改。但官方建议不要直接修改/etc/profile文件,一般建议在/etc/profile.d/ 目录下创建一个自定义脚本。因为在profile中对profile.d目录下的文件进行嵌套调用。
PATH环境变量
在运行python脚本时,若直接输入脚本名称进行运行,我们发现会出现如下情况
为什么会找不到命令呢?这就和PATH环境变量有关系。
PATH是一个最常见的环境变量,用于描述可执行文件的搜索路径。
使用echo命令将PATH环境变量的值显示出来
1 | echo $PATH |
可以发现PATH环境变量的值就是一堆路径,然后用 :进行分隔开。
默认系统从以下目录搜索可执行程序
1 | /usr/bin //例如tar命令 |
- bin表示普通用户就能执行的程序,其中sbin为超级用户root才能执行的程序
- /usr/为系统自带的程序
- /usr/local/是用户安装的程序
由于在输入hello.py后,系统会从PATH的路径下搜索命令,而搜索完后会发现没有hello.py这个命令,所以会返回未找到命令。
所以我们可以在用户环境变量或系统环境变量里,修改PATH的值,然后注销便可生效。
例如在系统环境变量中
编辑/etc/profile.d/myprofile.sh,myprofile.sh为自定义的shell脚本
设定PATH环境变量
1
export PATH=$PATH:/opt/tomcat/bin
为PATH环境变量新增路径 /opt/tomcat/bin。
SSH服务器
使用SSH协议,可以实现:
- 远程操控Linux终端(Xshell实现)
- 进行文件传输至Linux服务器(Xftp实现)
虚拟机准备工作
首先需要保证ubuntu防火墙处于关闭状态,查看防火墙状态
1 | sudo ufw status |
接着安装ssh
1 | sudo apt-get installl openssh-server |
进入查看ssh,若安装成功,则如下所示
接着查看虚拟机的ip地址
1 | ifconfig |
其中,ens33中inet即为ip地址:192.168.233.128。
最后在本地打开cmd,如过可以ping通虚拟机ip地址,则说明可以连接了
如果没有ping通,则可以看一下ubuntu的防火墙有没有关闭。
Xshell连接
点击【文件】->【新建】打开新建会话属性弹框,输入虚拟机的主机ip
切换选项卡【用户身份验证】。输入用户名,密码
注意用户名可以在命令行中查看
1 | who |
lehrmann : 0中,lehrmann即为用户名
设置完属性 点击【确定】按钮就不出意外可以连接上了
上图即连接成功后的,至此Xshell即可远程对虚拟机进行操作了。
Xftp传输文件
安装Xftp后,打开Xshell,连接虚拟机后,如图所示
右键点击localhost,如图
点击即可打开Xftp,如图
即可进行文件传输
vim编辑器
vi / vim 是一个基于控制台的文本编辑器,vim为vi的升级版。
gedit是一个基于GUI的文本编辑器
由于以后可能没有图形界面,只有一个控制台终端,故无法使用gedit,之能只用vim
打开文本编辑
1 | vim test.txt |
如果目标文件存在,则打开编辑器;如果不存才会创建一个文件
如果系统上没有vim编辑器,则可以进行安装
1 | sudo apt install vim |
切换模式
- 编辑模式 Insert Mode:按i键
- 命令模式 Command Mode:按Esc键
退出编辑
按Esc键,进入命令模式
输入 :wq 保存并退出
输入 :q 退出
输入 :q! 强制退出(放弃保存)
例如
1 | vim test.txt |
进入以下页面
输入响应的文本后,可按Esc键,接着输入:wq,按回车即可退出
1 | cat test.txt |
即可得到test.txt的文本内容
进程
每运行一个可执行程序,其相应的在系统中都会有相应的进程
在Linux系统中,可以使用如下命令
1 | ps -ef |
便可得到如下的进程信息
其中,各字段的含义:
- UID:执行者
- PID:进程ID
- PPID:父进程ID
- STIME:启动时间
- CMD:启动时调用的命令行
如果要查特定的进程时,可以使用如下命令
1 | ps -ef | grep vi |
将前者输出的信息,重定向给grep命令进行过滤处理
进程监视
查看所有进程,并且可以动态的刷新显示进程的状态
1 | top |
- 按上下键翻阅
- 按 q 或CTRL + C中止退出
可以查看特定进程,
1 | top -p NUM |
其中NUM为特定进程的PID,所以我们可以先使用 ps 命令查看进程PID。
杀死进程
1 | kill -9 NUM |
前台进程与后台进程
前台进程:运行在前台
- 有父进程,父进程为当前终端
- 当终端关闭时,前台进程被一同关闭
后台进程:运行在后台
- 父进程为系统进程(1号进程)
- 当终端关闭时,后台进程不被影响