Linux变量值的传递&进程管理&Quoting&正则批量&后台运行

2021-10-25
1. 写一个脚本,验证一下在子进程中将一个变量的值改变,并将这个变量的值的改变带回到父进程的内存空间里 (export ,source)
1.1 一个进程有 local 区和 env 区两个变量空间。定义新变量时,将由 local 数据区分配内存,此区域中的变量对当前进程是私有的,通常称为局部变量。后续的任何子进程都不能访问这些局部变量。但是,移动到 env区的变量子流程可以访问。
因此需要将变量通过export命令拉到env区
1.2 source
不用source:
在这里插入图片描述
可见,在子进程修改变量的值,子进程死后,值并不能回传。
使用source:

$ source 文件名 或者 . 文件名

source运行文件使得父进程和子进程的内存空间共享,故在子进程 1.sh 中修改color的值后,父进程中color的值也会随之改变。
在这里插入图片描述
2.怎样看一个字符终端的进程情况 (ps , ps f)
ps:看本字符终端的进程。列出当前系统运行中的进程的状态信息,可用查看后台运行的大型程序是否已经运行结束。
若要终止进程
①终止前台(foreground)进程用 Ctrl+C
②中指后台进程用 kill PID(由 ps 命令可查询 PID)
在这里插入图片描述
ps f:用 ASCII 字符显示树状结构,表达程序间的相互关系。运行的程序数目较多之时可用。
在这里插入图片描述
怎样看一个用户本机上的所有进程状态 (ps xf)
ps xf:查看本 id 在本机的所有进程。用 ASCII 字符显示树状结构,表达所有程序间的相互关系,不以终端机来区分
在这里插入图片描述
怎样看本机得到所有进程状态 (top , htop)
top:看本机器上所有的进程,用于实时监测系统资源使用状况,包含进程、CPU、内存等。在这里插入图片描述
htop:同样可以监控整个机器的进程,功能更强大。htop 命令不像 top 命令是默认安装过的,需要手动安装。
在这里插入图片描述
3.(正则批量)写脚本
将登陆目录里的所有以a开头,以数字结尾的cpp文件拷贝到zhangsan的根目录里($ cp ~/a*[0-9].cpp ~zhangsan/)
正则表达式,进行一定意义上的批处理。
在这里插入图片描述
4.(quoting)定义一个变量var,使得这个变量含有当前登陆用户名,当前目录和当前目录里的所有文件名和目录名

$ var=$LOGNAME  and $(PWD)  and  `ls -F`  “
$ echo $var

在这里插入图片描述
在变量的定义过程中,双引号比单引号更有灵活性?
① \ :去除单个字符的特殊意义,保留了跟随在之后的那个字符的字面值。(类似C++的转义字符)
② 单引号:去除所包含的所有字符的特殊含义。
③ 双引号:去除所包含的字符的特殊含义,除了\、变量替换、命令替换等。

单引号直接输出内部字符串,不解析特殊字符;双引号内则会解析特殊字符,包括’, ", $, \。
换句话说,单引号包含住的全都是常量,双引号能保证变量还是变量,故“在变量定义的过程中,双引号比单引号更有灵活性。”
一个例子:
在这里插入图片描述

5(nohup) 写成运行训练样本 train.sh 的标准式
($ nohup train.sh >debug.txt 2>error.txt &)
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为你提供一个基于Python的任务管理器程序的实现方案。主要涉及到以下几个方面的内容: 1. 应用与后台进程分开展示 2. 设备各项性能展示 3. 应用历史使用记录 4. 已启动应用 5. 各用户使用记录 6. 各服务启动情况 首先,我们可以使用Python的psutil库来获取当前系统进程的信息,包括进程ID、进程名称、进程状态等。然后,我们可以通过判断进程的状态,将应用与后台进程分别进行展示。具体代码如下: ```python import psutil # 获取当前系统进程列表 processes = psutil.process_iter() # 分别展示应用与后台进程 app_processes = [] background_processes = [] for process in processes: try: process_info = process.as_dict(attrs=['pid', 'name', 'username', 'memory_info', 'cpu_percent']) if process_info['username'] != 'SYSTEM': if process_info['name'] not in app_processes: app_processes.append(process_info['name']) else: background_processes.append(process_info['name']) except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): pass # 展示应用与后台进程 print('应用进程:') for app_process in app_processes: print(app_process) print('\n后台进程:') for background_process in background_processes: print(background_process) ``` 接下来,我们可以使用Python的psutil库来获取设备的各项性能信息,包括CPU使用率、内存使用率、磁盘使用率等。具体代码如下: ```python import psutil # 获取当前设备的各项性能信息 cpu_usage_percent = psutil.cpu_percent() memory_usage_percent = psutil.virtual_memory().percent disk_usage_percent = psutil.disk_usage('/').percent # 展示设备的各项性能信息 print('CPU 使用率:{}%'.format(cpu_usage_percent)) print('内存使用率:{}%'.format(memory_usage_percent)) print('磁盘使用率:{}%'.format(disk_usage_percent)) ``` 然后,我们可以使用Python的csv库来记录应用的历史使用记录。具体代码如下: ```python import csv import datetime # 记录应用的历史使用记录 def record_app_history(app_name): with open('app_history.csv', mode='a', newline='') as app_history_file: app_history_writer = csv.writer(app_history_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) app_history_writer.writerow([app_name, datetime.datetime.now()]) ``` 接下来,我们可以使用Python的psutil库来获取已启动的应用信息。具体代码如下: ```python import psutil # 获取当前已启动的应用信息 def get_running_apps(): running_apps = [] for process in psutil.process_iter(['name']): try: process_info = process.as_dict(attrs=['pid', 'name']) if process_info['name'] not in running_apps: running_apps.append(process_info['name']) except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): pass return running_apps ``` 然后,我们可以使用Python的csv库来记录各用户的使用记录。具体代码如下: ```python import csv import datetime import getpass # 记录各用户的使用记录 def record_user_history(): with open('user_history.csv', mode='a', newline='') as user_history_file: user_history_writer = csv.writer(user_history_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) user_history_writer.writerow([getpass.getuser(), datetime.datetime.now()]) ``` 最后,我们可以使用Python的subprocess库来获取各服务的启动情况。具体代码如下: ```python import subprocess # 获取各服务的启动情况 def get_services_status(): services_status = [] try: output = subprocess.check_output('systemctl list-units --type service --state running', shell=True) output_lines = output.decode().split('\n') for line in output_lines: if line: service_name = line.split()[0] services_status.append(service_name) except subprocess.CalledProcessError as e: print(e) return services_status ``` 以上就是一个基于Python的任务管理器程序的实现方案。你可以根据需要对代码进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值