Linux基础2

窗口与会话管理

nohup后台运行

采用nohup可以将进程在后台运行

# 执行sleep.py
$ nohup python3 sleep.py

# 挂起至后台
ctrl+z
[1]+  已停止               nohup python3 sleep.py

# 后台继续运行
$ bg
[1]+ nohup python3 sleep.py &

# 查看进程
$ jobs -l
[1]+ 29622 运行中               nohup python3 sleep.py &

# 结束进程
$ kill -9 29622

$ jobs -l
[1]+ 29622 已杀死               nohup python3 sleep.py

Tmux

用于实现会话与窗口解绑,包括:

  • 单个窗口中可同时访问多个会话
  • 每个会话可以连接多个窗口(多人实时共享会话)
  • 新窗口接入已有会话
  • 窗口任意的垂直和水平拆分

基本操作如下:

  • 安装
# Ubuntu 或 Debian
$ sudo apt-get install tmux

# Mac
$ brew install tmux
  • 新建会话/窗口
# 不指定名称新建窗口及会话
$ tmux

#新建一个名为sleep的会话
$ tmux  new -s sleep

#新建一个名为nw的窗口
$ tmux new-window -n nw
  • 退出窗口/会话
# 退出窗口,但不结束会话
$ exit
[exited]

# 分离窗口与会话,退出窗口但不结束会话
$ tmux detach
[detached]
# 也可使用快捷键Ctrl+b d

# 结束名为sleep的会话
$ tmux kill-session -t sleep
  • 接入/切换会话/窗口
# 接入sleep会话
$ tmux attach -t sleep

# 切换至sleep会话
$ tmux switch -t sleep

# 切换至nw窗口
$ tmux select-window -t nw
  • 对tmux窗口进行多窗口管理
    需在tmux窗口中进行以下语句
# 划分上下两个窗格
$ tmux split-window

# 划分左右两个窗格
$ tmux split-window -h

# 光标切换到上方窗格
$ tmux select-pane -U

# 光标切换到下方窗格
$ tmux select-pane -D

# 光标切换到左边窗格
$ tmux select-pane -L

# 光标切换到右边窗格
$ tmux select-pane -R

# 当前窗格上移
$ tmux swap-pane -U

# 当前窗格下移
$ tmux swap-pane -D

Tasks

在目录下创建py文件,并进行运行

  • 任务
    在指定目录下个人的文件夹中新建一个test5.py文件,使用os、sys模块完成以下功能:
    • 打印命令行参数
    • 使用os模块打印/usr/bin/路径下所有以m开头的文件。
命令行输入:python3 test5.py 参数1 参数2
程序输出:
test5.py
参数1
参数2
  • 代码
    查看当前目录并用nano创建test5.py
[没有名字!@i-ym8u2kyp ~]$ pwd
/home/datawhale
[没有名字!@i-ym8u2kyp ~]$ cd ling
[没有名字!@i-ym8u2kyp ling]$ nano test5.py

test5.py代码

#!/usr/bin/python3
# 文件名: test5.py
 
import sys,os
print('程序输出:')
for i in sys.argv:
   print(i)

print('功能2:输出/usr/bin/下以m开头的文件名')
for i in os.listdir('/usr/bin/'):
   if i[0]=='m':
      print(i)

结果测试

[没有名字!@i-ym8u2kyp ling]$ python3 test5.py 参数1 参数2
程序输出:
test5.py
参数1
参数2
功能2:输出/usr/bin/下以m开头的文件名
makedb
make
md5sum
mkdir
mkfifo
mknod
mktemp
mv
mesg
mount
msgattrib
msgcat
msgcmp
msgcomm
msgconv
msgen
msgexec
msgfilter
msgfmt
msggrep
msghack
msginit
msgmerge
msgunfmt
msguniq
miniterm.py
modutil
mcookie
more
man
mountpoint
mkinitrd
machinectl
mapscrn
mailq.postfix
mailq
manpath
mandb

在目录下创建py目录,并进行import导入

  • 任务
    在指定目录下个人的文件夹中创建affairs文件夹。编写test6.py和affairs.py完成以下功能:
    • affairs.py代码完成https://mirror.coggle.club/dataset/affairs.txt文件的读取。
    • test6.py可以导入affairs.py代码
    • test6.py可以进行命令行解析,输出affairs.txt具体的第几行内容。
  • 代码

affairs.py代码

#!/usr/bin/env python3
import pandas as pd

#reading data
def data_load(path = 'https://mirror.coggle.club/dataset/affairs.txt'):
   return pd.read_csv(path).dropna(how='all')

test6.py代码

#!/usr/bin/env python3

import sys
from affairs.affairs import data_load

def print_nrow(df,n):
   print(df.iloc[n-1,:]) #第n行index应该为n-1

if __name__ == '__main__':
   data = data_load()
   n = int(sys.argv[1])
   print_nrow(data,n)

用nano创建py文件及测试结果

[没有名字!@i-ym8u2kyp ling]$ mkdir affairs
[没有名字!@i-ym8u2kyp ling]$ ls
affairs  datawhale  nanotest.py  test5.py  vimtest.py
[没有名字!@i-ym8u2kyp ling]$ cd affairs
[没有名字!@i-ym8u2kyp affairs]$ nano affairs.py
[没有名字!@i-ym8u2kyp affairs]$ cd ..
[没有名字!@i-ym8u2kyp ling]$ nano test6.py
[没有名字!@i-ym8u2kyp ling]$ python3 test6.py 10
rate_marriage     5.0
age              37.0
yrs_married      23.0
children          5.5
religious         2.0
affairs           1.0
Name: 9, dtype: float64

注意:

  1. 第n行数据的index应该为n-1
  2. sys.argv传入参数中,行数为第2个,第1个为’test6.py’

在Linux系统中后台运行应用程序,并打印日志

  • 任务
    • 在指定文件夹中创建一个sleep.py文件,该文件需要完成以下功能:
      • 程序一直运行
      • 每10秒输出当前时间
    • 学习tmux的使用,将步骤1的程序进行后台运行,并将输出结果写入到txt文件。
  • 代码
    • 用nano创建sleep.py文件
    • 启动tmux创建新的会话sleep,后台运行sleep.py,并将输出结果写入到sleeplog.txt文件。
    • 查看输出日志
    • 停止tmux进程

sleep.py文件代码

#!/usr/bin/env python3

import time

while True:
   print(time.ctime())
   time.sleep(10)

tmux中后台运行py文件并输出日志命令

python3 -u sleep.py > sleeplog.txt

Ctrl+b d退出tmux窗口

主要命令及结果

[没有名字!@i-ym8u2kyp ~]$ cd ling
[没有名字!@i-ym8u2kyp ling]$ nano sleep.py
[没有名字!@i-ym8u2kyp ling]$ tmux  new -s sleep
[detached]
[没有名字!@i-ym8u2kyp ling]$ tmux ls
sleep: 1 windows (created Tue Dec 21 09:58:00 2021) [80x23]
[没有名字!@i-ym8u2kyp ling]$ more sleeplog.txt
Tue Dec 21 09:58:15 2021
Tue Dec 21 09:58:25 2021
Tue Dec 21 09:58:35 2021
Tue Dec 21 09:58:45 2021
Tue Dec 21 09:58:55 2021
Tue Dec 21 09:59:05 2021
Tue Dec 21 09:59:15 2021
Tue Dec 21 09:59:25 2021
Tue Dec 21 09:59:35 2021
Tue Dec 21 09:59:45 2021
Tue Dec 21 09:59:55 2021
[没有名字!@i-ym8u2kyp ling]$ tmux kill-session -t sleep
[没有名字!@i-ym8u2kyp ling]$ tmux ls
failed to connect to server

参考

Datawhale Linux组队学习

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值