Task5-Task7
任务5:在目录下创建py文件,并进行运行
步骤1:学习python下os模块处理文件和目录的函数,https://www.runoob.com/python/os-file-methods.html
步骤2:学习python下sys模块和传参函数,https://www.runoob.com/python3/python3-module.html
步骤3:在home/datawhale目录下,在你英文昵称(中间不要有空格哦)的文件夹中,新建一个test5.py文件,改程序可以使用os、sys模块完成以下功能:
- 功能1:打印命令行参数
- 功能2:使用os模块打印**/usr/bin/**路径下所有以m开头的文件。
编辑test5.py文件
这样就可以实现上述功能
利用os.listdir遍历/usr/bin/文件夹下的文件名
任务6:在目录下创建py目录,并进行import导入
步骤1:学习python模块化,https://www.runoob.com/python3/python3-module.html
步骤2:在/home/datawhale目录下在你英文昵称(中间不要有空格哦)的文件夹中创建affairs文件夹。
在datawhale文件夹下使用mkdir -p huixiang/affairs
迭代的创建affairs文件夹。
步骤3:编写test6.py和affairs.py完成以下功能:
功能1:affairs.py代码完成文件的读取,这里可以直接pd.read_csv(‘https://mirror.coggle.club/dataset/affairs.txt’)来完成。这一部分建议写为函数。
功能2:test6.py可以导入affairs.py代码
功能3:test6.py可以进行命令行解析,输出affairs.txt具体的第几行内容。
发现可以直接在左侧打开相应文件,直接新建affairs.py和test6.py文件。
运行结果在下方终端内
为了实现功能2,重新编写了一下程序,输出内容在下面终端内
任务7:在Linux系统中后台运行应用程序,并打印日志
步骤1:在/home/datawhale目录下在你英文昵称(中间不要有空格哦)的文件夹中创建一个sleep.py文件,该文件需要完成以下功能:
程序一直运行
每10秒输出当前时间
直接在我的英文昵称文件夹下新建一个sleep.py的文件,程序内容如图所示,
在终端输入命令python3 sleep.py
,即可每十秒打印当前时间了。
步骤2:学习 & 和 nohup后台执行的方法
学习链接
以一个打包命令为例
tar czf /data/backup.tgz /data/backup
其中tar(tape archive)命令用于备份文件,
- -c或–create 建立新的备份文件
- -z或–gzip或–ungzip 通过gzip指令处理备份文件。
- -f<备份文件>或–file=<备份文件> 指定备份文件。
上述命令指将/data/backup
中的所有文件打包压缩到/data/backup.tgz
1.&命令
tar czf /data/backup.tgz /data/backup &
要使用ctrl+D退出才能后台执行,直接关闭窗口也会关闭进程。
2.nohup命令
nohup tar czf /data/backup.tgz /data/backup
用ctrl+z挂起到后台
用bg命令先查看有多少个jobs
ctrl+d后台或者 直接关闭窗口,进程仍会在后台执行
3.nohup+&命令
nohup tar czf /data/backup.tgz /data/backup &
ctrl+d 或者 直接关闭窗口 进程任然会在后台执行
4.采用(command &)
(tar czf /data/backup.tgz /data/backup &)
这样会将ppid设置为1,而非当前会话的id,并且jobs查看不到当前的作业。注意这里的括号即是这个方法的重点。
ctrl+d 或者 直接关闭窗口 进程任然会在后台执行
本文先简要记录几种容易易懂的方法。
其中nohup和nohup+&有什么区别呢?
nohup执行后默认会将输出保存在nohup.out文件,但执行后无法接受标准输入,关闭窗口后仍然会运行。
&无法将标准输出保存到文件中,关闭窗口后程序就会停止。
nohup &一起使用综合了两者的优点,既能标准输入也能将标准输出的日志输入到文件,关闭窗口后仍然会运行。
步骤3:学习tmux的使用,将步骤1的程序进行后台运行,并将输出结果写入到txt文件。
tmux学习地址;https://www.ruanyifeng.com/blog/2019/10/tmux.html
Tmux 就是会话与窗口的"解绑"工具,将它们彻底分离。
(1)它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
(2) 它可以让新窗口"接入"已经存在的会话。
(3)它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
(4)它还支持窗口任意的垂直和水平拆分。
类似的终端复用器还有 GNU Screen。Tmux 与它功能相似,但是更易用,也更强大。
在vscode中可以直接通过下面终端操作界面打开tmux,十分便利
会话管理
1.新建会话
$ tmux new -s <session-name>
即可打开tmux并为其命名,注意,是在bash中输入,如
tmux new -s task7.py
2.分离会话
在 Tmux 窗口中,按下Ctrl+b d
或者输入tmux detach
命令,就会将当前会话与窗口分离。
$ tmux detach
上面命令执行后,就会退出当前 Tmux 窗口,但是会话和里面的进程仍然在后台运行。
tmux ls
命令可以查看当前所有的 Tmux 会话。
3.接入会话
tmux attach
命令用于重新接入某个已存在的会话。(注意有个-t)
# 使用会话编号
$ tmux attach -t 0
# 使用会话名称
$ tmux attach -t <session-name>
5.杀死会话
tmux kill-session
命令用于杀死某个会话。
# 使用会话编号
$ tmux kill-session -t 0
# 使用会话名称
$ tmux kill-session -t <session-name>
6.切换会话
tmux switch
命令用于切换会话。
# 使用会话编号 $ tmux switch -t 0 # 使用会话名称 $ tmux switch -t <session-name>
7.重命名会话
tmux rename-session
命令用于重命名会话。
$ tmux rename-session -t 0 <new-name>
上面将0会话重命名
8.会话快捷键
下面是一些会话相关的快捷键。
Ctrl+b d
:分离当前会话。Ctrl+b s
:列出所有会话。Ctrl+b $
:重命名当前会话。
简单的tmux操作流程
综上所述,以下是 Tmux 的最简操作流程。
- 新建会话
tmux new -s my_session
。- 在 Tmux 窗口运行所需的程序。
- 按下快捷键
Ctrl+b d
将会话分离。- 下次使用时,重新连接到会话
tmux attach-session -t my_session
。
使用一些vscode的快捷键可以方便调整tmux窗口位置。
在tmux中使用命令python3 -u sleep.py > sleep.txt
命令将.py文件重定向输出到txt文件。
如图 用命令将会话分离开来,程序仍然运行。关闭窗口即可。