更新 debian 系统内核版本
Debian 系统的内核升级的简单方法。本篇以 Debian 10 为例,所有命令均以 root 用户运行。
添加源1echo "deb http://deb.debian.org/debian buster-backports main" > /etc/apt/sources.list.d/backports.list
安装最新内核和头文件查看可安装的内核版本
1apt search linux-image
注意,有些人可能会安装云版本(如,linux-image-.**.-cloud-amd64)的内核,该种版本缺失一些必要的驱动程序,安装后可能导致无法直接使用,如 SSH 连接等。建议按如下方式安装完全版。
1234apt updateapt -t buster-backports install linux-image-amd64apt -t buster-backports install linux-headers-amd64update-grub
重新启动服务器
1shutdown -r now
查看内核版本1uname -r
卸载 ...
Python 网站开发之 flask
Python 网站开发常用的框架有 Flask, Django 等等,其中 Django 适合大型网站的开发,Flask 是一种微框架,用户自定义程度高。本篇介绍 Flask 开发网站的一些知识。
Flask 安装建议安装 Miniconda,并创建相应 Python 版本的虚拟环境,然后通过如下命令安装 Flask
1pip install Flask
Flask-SQLAlchemy 数据库添加用户和删除用户
1234567891011121314151617from app.models import Userfrom app import bcrypt# 明文密码passwd = '11111111'# 添加用户时必须使用加密密码me = User(username='me', email='me@outlook.com', password=bcrypt.generate_password_hash(passwd))# 添加用户db.session.add(me)# 提交后才算成功db.session.comm ...
ipython 中的魔法命令
Jupyter lab 或 ipython 中可以方便的书写 python 代码和 markdown 文档。同时,利用魔法命令可以书写 latex 文档、javascript 代码、js 代码、ruby 代码、bash 命令等。另外,魔法命令中还包含一些辅助工具(如 prun、timeit、writefile、loadpy)等等。本篇对其进行简单介绍。
魔法命令魔法命令(注意区别 Python 中的魔法函数)是由 ipython 提供的。查看所有魔法命令,可以在 jupyter lab 中使用如下魔法命令:
1%lsmagic
所有魔法命令分为两类,一类是面向行的魔法命令,一类是面向单元格的魔法命令。分别对应 line 和 cell:
123root: line: cell:
行命令是针对单行代码进行使用的,如:
1234%timeit sum((x*2 for x in range(100)))# 输出结果6.73 µs ± 70.8 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
单元格魔法命令是针对 ...
linux 中 ls 仅列出目录或文件
Linux 中的 ls 命令可谓是使用最多的命令之一,有效掌握该命令的能够大大提高效率,下面介绍如何使用 ls 命令仅列出目录或文件。本篇以 Ubuntu 18.04 为例。
仅列出目录12345678910# 不能罗列隐藏目录ls -ld */ls -lF | grep /ls -lF | grep /$# 不罗列隐藏目录ls -l | grep ^d# 能够罗列隐藏目录ls -al | grep ^d
仅列出文件12345# 不罗列隐藏文件ls -l | grep ^-# 能够罗列隐藏文件ls -al | grep ^-
参考链接
Linux Shell 只列出目录的方法
Linux技巧:ls命令只列出子目录名和每行打印一个文件名
Python 中的迭代器和生成器
Python 中对象的遍历称为迭代,常用 for 循环和 while 循环等实现。那么有哪些对象可以迭代,它们有什么共同特性呢?本篇对可迭代对象、迭代器和生成器进行介绍。
迭代对于 python 中的 list, tuple, dict, set, str,文件对象等容器(数据的集合,这里不使用集合为了区分 python 中的 set),我们可以使用 for 循环等遍历里面的元素,但没有按照固定的顺序进行:
12for i in set("a1$."): print(i) # 1 $ a .
对于 C 语言,迭代都是按照索引顺序进行:
123for (i = 0; i < length; i++) { n = list[i];}
可见,python 的 for 循环的抽象程度是高于 C 的。因此,在 python 中对于没有索引的容器都可以进行迭代。如
12345678910111213d = {"a": 1, "b": 2}# 对键进行迭代,对字典迭代默认为 ...
SSH 消息聊天与广播
通过 SSH 连接到远端主机,一般会打开一个伪终端(pts)。Linux 系统是可进行多用户访问,当你访问远端主机时,别人也可能正在进行访问,当我们需要进行远端主机重启等一些影响别人使用远端主机的行为时,我们需要把重启的消失广播给其他用户。
write 消息聊天使用 write 能够在终端上互相聊天,方法如下:
12345678910# 查看当前登录用户whojinzhongxu pts/2 2022-01-20 19:08 (127.0.0.1)jinzhongxu pts/3 2022-01-20 15:37 (10.2.28.40)# 我当前登录使用的是伪终端 pts/3,想发给 pts/2 实时消息# 发送消息,类似于写信,先写发送对象,回车后写内容,一行回车将直接发送信息给对方write jinzhongxu pts/2hello, I will reboot this computer!!!
此时,登录在伪终端 pts/3 的用户终端上就会显示我发生的信息。
查看伪终端的方法还有
123tty# 显示伪终端/dev/pts/2
...
SSH 转发知识汇总
我这里有个需求,就是如何将公司局域网内的服务器A开发的网站开放到互联网上。公司局域网的服务器A能够通过主路由器访问互联网,但却没有公网 IP,因此,无法在互联网上直接访问A上的网页。通过 SSH 远程端口转发可以实现这一目的。借此,本篇汇总记录一下 SSH 转发的相关知识。本篇以 Ubuntu18.04 为例,所有端口均指 TCP 端口,建议防火墙开放相应的端口,并保证端口没有被占用。
SSH 简介如今,SSH 在 Linux/MacOS/Windows 上是标配的软件工具。事实上,SSH 是一种网络协议,由芬兰学者 Tatu Ylonen 于 1995 年设计,用于主机之间的加密登录,将登录信息全部加密。现如今,针对该协议开发有各种实现,有商业的,也有开源的,如 OpenSSH 等。
1234# 使用 SSH 以用户 username 登录到主机 host_ip 上ssh username@host_ip# 指定端口登录ssh -p 2222 uername@host_ip
端口可以在 host_ip 上进行修改,方法如下:
123456# 在配置文件中修改 ...
SSH 转发的一些记录
使用 ssh 能够访问远程服务器,但是,对于办公室的电脑只有内网 ip 而无法在家直接通过 ssh 访问,有时候不是很方便,然而像 frp 等都被公司禁止使用。本篇介绍 ssh 转发解决上面的问题。
公网服务器设置首先需要购买一个具有公网 ip 的服务器,这里推荐阿里云,腾讯云等,服务器地址选择当地的就好,比如上海等。然后,对服务器进行配置,开放一个转发的端口,比如,2222。最后,需要对 sshd 的配置文件进行修改。
12345sudo vim /etc/ssh/sshd_config# 添加如下内容GatewayPorts yes# 重启 sshdsudo systemctl restart sshd.service
为什么设置 GatewayPorts yes 呢?这是因为,默认情况下,OpenSSH 只允许从服务器主机连接到远程转发端口。GatewayPorts no 能够防止从服务器计算机外部连接到转发端口。也就是说,只能服务器自己连接自己的端口实现访问内网的端口,而外部的服务器不能连接。其实,查看端口占用(sudo netstat -tunlp | grep 222 ...
Python 中如何获取文件的大小
Python 是非常优秀的编程语言,开发效率高。在 Shell 中可以非常方便的使用 ls -l filepath 获得文件的大小,那么在 Python 中如何获取文件的大小呢,下面给出4中方法。假设我们的文件路径是 file_path = '/test-file.txt'.
os.path.getsize使用该函数能够获得文件的大小,单位为字节
123import osos.path.getsize(file_path)
os.stat使用该函数能够获得文件的大小,单位为字节
123import osos.stat(file_path).st_size
打开文件读取文件,获得大小使用该方法能够获得文件的大小,单位为字节
12345import oswith open(file_path, 'rb') as f: f.seek(0, os.SEEK_END) print(f.tell())
使用 pathlib.Path(file_path).stat()使用该方法能够获得文件的大小,单位为字节
123from pathlib ...
Jupyterlab 暗黑模式下使用 Matplotlib 画图显示问题
Jupyterlab 暗黑模式下使用 Matplotlib 画图有时无法显示图片的坐标轴信息,这是需要调整 matplotlib 的画图显示风格,以使用暗黑模式的 jupyterlab. 本篇所有代码在 jupyterlab 中使用。
更改 matplotlib 的 stylematplotlib 提供了很多种显示风格,查看所有的风格,可以使用如下命令:
123from matplotlib import stylestyle.available
12345678910111213141516171819202122232425262728['Solarize_Light2', '_classic_test_patch', '_mpl-gallery', '_mpl-gallery-nogrid', 'bmh', 'classic', 'dark_background', 'fast', 'fivethirty ...
在 Linux 系统上查看日志信息
Linux 系统上有很多服务是使用 systemctl 来管理的,如何查看这些服务的日志信息呢?下面以 Ubuntu 18.04/CentOS 7 为例,所有命令以 root 身份运行。
journalctljournalctl 命令是一个管理工具,能够查询 systemd 日志,同时管理、查看由内核、initrd 以及服务等产生的信息。
12345678910# 查看 jupyterhub 的日志信息, -u 表示按单元(--unit)journalctl -u jupyterhub.service# 查看 jupyterhub 的最新的日志信息journalctl -u jupyterhub.service -r# 实时的查看系统查看的最新日志信息,类似于 tail -f journalctl -f# 查看从凌晨到3:20的日志信息journalctl --since "today" --until "3:20"# 查看 journalctl 如何使用man journalctl
日记本身是 systemd 管理的系统服务,全 ...