前言
每个开发人员应该都应该学会linux系统的操作,起码基本的使用需要知道。本篇文章主要讲解linux系统的分支:Ubuntu的基本使用,不是很深入,但是日常操作绝对够用!!!。Ubuntu有成熟的桌面UI,并且支持纯命令行的模式操作,Ubuntu非常适合从Windows系统过渡到linux系统的用户。
官方网址:ubuntu
🌱 基础操作
图形界面与命令行界面切换
快捷键:
Ctrl + Alt + F1~9
补充:
众所周知图形界面占不少的内存,比如只想跑一个内存消耗大的服务程序,可以关闭图形界面只进入命令行界面。
操作方法如下
# 关闭图形界面只显示命令行界面
systemctl set-default multi-user.target
reboot #需要重启电脑生效
# 重启图形界面
systemctl set-default graphical.target
reboot #需要重启电脑生效
桌面模式打开命令行终端
在桌面模式下,想打命令需要开启命令行终端。
右键空白处,选择“在终端打开”选项,即可打开终端,也可以使用快捷键的方式来快速启动终端
快捷键:
Ctrl + Alt + T
关机
poweroff # 关掉电源
shutdown -h [关机时间] # 参数可以填 now、分钟、时:分
重启
reboot
# 或者
shutdown -r [重启时间] # 参数可以填 now、分钟、时:分
预览
cat XXX
简单输出
echo XXX
🌱 用户操作
切换到root用户
sudo su
注:不建议在root用户下操作,平常涉及到高权限的情况,应该在普通用户下使用sudo 加命令的形式来操作
退出root用户
exit
退出普通用户
logout
注:这是在命令行界面使用的
在图形界面下的话,点击右上角电源按钮——点击注销
🌱 文件操作
显示当前操作路径
pwd
文件目录切换
cd 想进入的目录
cd .. # 返回上一目录
创建文件/文件夹
touch 文件名 # 创建文件
mkdir 文件夹名 # 创建文件夹
复制
cp 目标文件 目标目录
移动
mv 目标文件 目标目录
删除文件/文件夹
rm 文件
rm -r 文件夹
编辑文件内容
虽然可以通过echo加上>
输出内容到文件,但是太简单,想编辑的话需要使用特殊的编辑器vim
vim 编辑的文件
在vim编辑器中需要默认进入只读模式,以下是一些vim的基本操作
- 编辑: 在只读模式中输入
i
进入编辑模式,可以输入内容 - 返回到只读模式:按下键盘上的
ESC
键 - 保存并退出:在只读模式中输入
:wq
文件权限
linux文件有四种状态:读(r
)、写(w
)、执行(e
)
-rwxrw-r--
# 第一个位置: “-” 表示文件,“d”表示目录
# 后面9个位置分成三份,依次表示所有者、同组其他用户、其他组用户
修改文件的指令:chmod
1、数字表示法修改权限:
分别用4表示r,2表示w,1表示x
例:
chmod 664 test.txt # 修改此文件 所有者:rw;同组人:rw;其他组:r
2、文本表示法修改权限:
文本表示法用4个字母表示不同的用户: u
:所有者; g
:组成员; ’o
:其他成员; a
:所有人
使用3个符号来增加/减少权限: =
:重置权限; -
:减少权限; +
:增加权限
例:
chmod u+x,g-x,o=x test.txt # 所有者增加执行权限;组成员减少执行权限;其他组成员只有执行权限
修改文件所有者
sudo chown 所有者名称 文件/目录
修改文件所属组
sudo chgrp 组群名称 文件/目录
管理软链接
软链接很像windows下的快捷方式,但是软链接能链接目录
创建软链接
ln -s 原目录or文件 映射目录or文件
# 注意:链接目录的时候,原目录要绝对路径,而且不要在最后加斜杠,要不然会报错“找不到文件”
# 例:
删除软链接
sudo rm 映射目录or文件
# 这里放心,这里删除的是软链接,不会删除映射文件的
🌱 软件管理
在Ubuntu系统安装软件有多种方式,比如apt、dpkg、源码编译、pip、npm等等,五花八门。其中源码编译还分多种方式而且相当复杂,这里只讲apt
和dpkg
两种方式来管理软件。
(1)显示已安装软件
# apt 展示
apt list [--installed | --upgradable | --all-versions]
# dpkg 展示
dpkg-query -l
(2)软件安装
1. apt安装
安装软件前需要更新一下apt管理器
sudo apt update
安装命令:
sudo apt install 软件包名
2. deb包安装
扩展名为.deb的安装包可以通过在桌面UI环境下双击启动包管理器自动安装,也可以使用命令行的方式启动安装。
命令如下:
sudo dpkg -i 安装包名称
3. AppImage使用
AppImage是懒人福音,这种格式的应用可以直接打开,无需安装,但是也有缺点(体积较大)。
使用方法:
chmod 775 ***.AppImage # 修改文件权限为可执行
./***.AppImage # 直接运行就行!非常简单无脑!!!
补充:
下面将要介绍如何添加桌面快捷方式和应用程序菜单:
a. 先创建一个文本文件,名字随便,文件内容如下,根据实际情况填写
[Desktop Entry]
Encoding=UTF-8
Type=Application
#应用名称
Name=****
#图标路径
Icon=/usr/local/AppImage/***.png
#启动是否开启终端
Terminal=false
#AppImage文件路径
Exec=/usr/local/AppImage/***.AppImage
b. 创建文件之后,将文件权限改为可执行,然后在桌面上右键文件,选择“允许执行”
c. 使用下面的代码将程序添加到应用程序菜单
sudo cp ***.desktop /usr/share/applications # ***.desktop是你刚才创建的desktop文本文件
(3)软件卸载
1. apt卸载
apt有两种方式卸载软件。
① 只卸载包
sudo apt remove 软件包名
# 或者
# sudo apt autoremove 软件包名
② 卸载包并且卸载所依赖项
sudo apt purge 软件包名
# 或者
# sudo apt autopurge 软件包名
2. deb包卸载
使用.deb文件来安装软件的方式是不能使用apt管理器来帮助我们卸载软件。
卸载命令:
sudo dpkg -r 软件包名
# 或者:
# sudo dpkg -P 软件包名
🌱 系统管理
查看内存占用
free [-h] # -h是可以转换成可以理解的格式
任务管理器
图形化任务管理器:
gnome-system-monitor
命令行任务管理器:
top
查看显卡状态
如果你的ubuntu电脑中有显卡的话,并且已经安装显卡驱动,可以使用以下命令查看现在显卡的占用状态
nvidia-smi # 这里只显示英伟达显卡的运行状态,AMD的可以百度搜索
实时监控
对系统的资源想实时监控,可以使用watch
命令
watch [-n 秒数] 命令
例: watch -n 0.2 free
每隔0.2秒刷新内存情况
进程管理
命令 | 解释 |
---|---|
ps -aux 或者ps -ef | 列出所有进程 |
kill | 杀死进程 |
查看系统信息
uname -a
#输出:# Linux ******-X542UN 5.15.0-46-generic #49-Ubuntu SMP Thu Aug 4 18:03:25 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
查看ubuntu版本
lsb_release -a
# 或者
cat /etc/issue
🌱 输出信息管理
敲命令之后返回的信息非常多,比如想查看某一进程的id,使用 ps -aux
命令会返回巨多的信息,眼花缭乱。所以需要对信息进行排序、筛选、搜索等操作
(1)grep命令
grep用来筛选有用的信息。可以将一些命令的输出信息通过管道的方式传递到grep命令来处理
grep [options] [pattern] [file ...]
grep的常用参数:
参数 | 解释 |
---|---|
-n | 显示匹配的行号 |
-i | 不区分大小写 |
-v | 列出没有匹配模式的行 |
-o | 只输出匹配的内容 |
-c | 统计数量 |
常用正则表达式:
符合 | 解释 |
---|---|
^a | 匹配开头是a的行 |
$a | 匹配结尾是a的行 |
. | 占一个字符 |
* | 占多个字符 |
[ ] | 匹配一个范围 |
例:
# 查找某一进程的信息
ps -aux | grep 进程名
🌱 定时任务管理
如果有一些脚本程序想在特定的时间段里周期运行,可以使用linux系统内置的crontab
工具来设定定时任务
crontab常用参数
编辑定时任务,需要在控制中输入crontab并加上一些参数。
下面是crontab工具的常用参数及解释
参数 | 解释 |
---|---|
-e | 默认编辑器来编辑设定任务表 默认vi |
-r | 删除当前的任务表 |
检查crontab是否正常:service crond status
编辑任务表
使用crontab -e
命令打开任务表之后,需要填写固定格式的内容,才能正确地添加任务
每一条任务模板格式为
* * * * * 任务命令
其中前五个是填运行的时间,后面紧跟要运行的命令
前五个字符的含义与填写范围如下列表所示:
- 分钟 : 0-59
- 小时 : 0-23
- 天 : 1-31
- 月 : 1-12
- 星期 : 0-6
字符不仅可以填数字,还可以加上特殊符号使得更加的灵活设置
特殊符号 | 解释 |
---|---|
* | 表示任何时刻 |
, | 表示分割 |
- | 表示一段时间 |
/n | 没n次执行一次任务 |
crontab实例
实例 | 解释 |
---|---|
15 3 * * * command | 每天3点15分运行命令 |
0 20 * * 1-6 command | 周一至周六晚上8点运行 |
*/10 * * * * command | 每隔十分钟执行一次 |
30 18 1,4,5 * * command | 每个月的第1、4、5天的晚上六点十八分会运行命令 |
解决无法定时运行python脚本的方法
首先肯定先检查crontab服务是否正常运行。
然后检查写的有没有问题。
上一小节说的“conmand” 必须是crontab能找到的PATH路径下的程序,否则请用绝对路径
查看crontab的PATH可以通过这个命令:cat /etc/crontab
因为我的python3在/usr/local/bin路径下,然而crontab中的PATH中没有/usr/local/bin,所以crontab是不会理解python3是个啥的,crontab中直接写python3是不会运行的。
如果想用crontab跑python脚本的话,记得要写python程序的绝对路径,不然不会执行
正确解决方法:
# 错误写法 */1 * * * * python3 /home/app.py
*/1 * * * * /usr/local/bin/python3 /home/app.py
🌱 FTP工具使用
(1)连接远程ftp服务器
ftp [ip] [port] # 默认远程ftp服务器端口为21
或者不先连接,直接输入ftp,在接下来的命令行中使用open [ip] [port]
来连接
(2)输入用户名和密码
连接到服务器之后,命令行会提示输入用户名和密码,输入即可。
(3)远程文件操作
ls # 显示文件目录
cd # 切到文件夹
mkdir # 建立文件夹
get remote_file [local_dir] # 下载文件
put local_file [remote_dir] # 上传文件
exit # 关闭ftp连接 或者 bye 、 quit
需要注意,在哪个文件目录开的ftp工具,上传和下载都是默认基于这个目录。
如果需要下载到本地目录。可以使用: lcd 本地绝对文件目录
来切换路径
想向远程ftp服务器上传其他的目录的文件,local_file
需要是绝对路径