Linux学习笔记1

本文介绍了Linux系统中切换目录、复制移动文件的命令以及重定向操作。还详细讲解了如何使用Python的multiprocessing模块创建和管理多进程,包括进程间通信、传递参数和避免变量共享问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

切换目录命令的使用

命令说明
cd目录切换到指定目录
cd~切换到当前用户的主目录
cd ..切换到上一级目录
cd .切换到当前目录
cd -切换到上一次目录

复制、移动文件及目录命令的使用

cp拷贝文件、拷贝目录(拷贝的原文件依旧存在)
mv移动文件、移动目录、重命名

例:将AA文件夹下的1.txt文件拷贝到BB文件夹的DD文件夹下:

        cp AA/1.txt BB/DD

mkdir 命令选项-p : 创建所依赖的文件夹

重定向的应用:ls AA > CC/info.txt 将AA文件夹中的内容CC文件夹的info.txt文件中(覆盖)

不覆盖:>>在原有的数据上进行追加

cat :只查询文件

gedit:可读可写文件

链接命令的介绍:

ln -s源文件路径(使用绝对路径)创建软链接
ln创建硬链接

软链接:

1.如果软链接和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径

2.删除源文件则软链接失效

3.可以给目录创建软链接

grep命令选项的使用:

-i忽略大小写
-n显示匹配行号
-v显示不包含匹配文本的所有行

grep结合正则表达式的使用

^以指定字符串开头
$以指定字符串结尾
.匹配一个非换行符的字符

进程相关知识点:

1.多进程的使用

#1.导入进程包
import multiprocessing
import time

#跳舞任务
def dance():
    for i in range(3):
        print('跳舞中...')
        time.sleep(0.2)

#唱歌任务
def sing():
    for i in range(3):
        print('唱歌中...')
        time.sleep(0.2)

#2.创建子进程(自己手动创建)
#1.group:进程组,目前只能使用None,一般不需要设置
#2.target:进程执行的目标任务

if __name__ == '__main__':
    dance_process = multiprocessing.Process(target=dance)
    sing_process = multiprocessing.Process(target=sing)
#3.启动进程执行对应的任务
    dance_process.start()
    sing_process.start()

#主进程执行唱歌任务

 2.获取进程编号

#1.导入进程包
import multiprocessing
import time
import os

#跳舞任务
def dance():
    #获取当前进程(子进程)的编号
    dance_process_id = os.getpid()
    #获取当前进程对象,查看当前代码是由哪个进程执行的:
    print("dance_process_id:", dance_process_id, multiprocessing.current_process())
    #获取当前进程的父进程编号
    dance_process_parent_id = os.getppid()
    print("dance_process的父进程编号是:", dance_process_parent_id)

    for i in range(3):
        print('跳舞中...')
        time.sleep(0.2)
        #扩展:根据进程编号强制杀死指定进程
        os.kill(dance_process_id, 9)

#唱歌任务
def sing():
    sing_process_parent_id = os.getppid()
    print("sing_process的父进程编号是:", sing_process_parent_id)

    for i in range(3):
        print('唱歌中...')
        time.sleep(0.2)

#获取当前进程的编号
main_process_id = os.getpid()
#获取当前进程对象,查看当前代码是由哪个进程执行的:
print("main_process_id:", main_process_id, multiprocessing.current_process())

#2.创建子进程(自己手动创建)
#1.group:进程组,目前只能使用None,一般不需要设置
#2.target:进程执行的目标任务
dance_process = multiprocessing.Process(target = dance)
print("dance_process:", dance_process)
sing_process = multiprocessing.Process(target = sing)
print("sing_process:", sing_process)

if __name__ == '__main__':
    dance_process = multiprocessing.Process(target=dance)
    sing_process = multiprocessing.Process(target=sing)
#3.启动进程执行对应的任务
    dance_process.start()
    sing_process.start()

#主进程执行唱歌任务

3.进程执行带有参数的任务

import multiprocessing

#显示信息的任务
def show_info(name, age):
    print(name, age)

if __name__ == '__main__':
# #创建子进程
# #以元组方式传参,元组里的元素顺序要和函数的参数顺序保持一致
     #sub_process = multiprocessing.Process(target=show_info, args=("李四", 20))
# #启动进程
     #sub_process.start()
#
# 以字典方式传参,字典里面的key要和函数里面的参数名保持一致,没有顺序要求
    #sub_process = multiprocessing.Process(target=show_info, kwargs={"age": 20, "name": '王五'})
#启动进程
    #sub_process.start()

    sub_process = multiprocessing.Process(target=show_info, args=('冯七',), kwargs={'age': 20, })
    sub_process.start()

4.进程之间不共享变量

import multiprocessing
import time

#定义全局变量列表
g_list = list()

#添加数据的任务
def add_data():
    for i in range(3):
        #因为列表是可变类型,可以在原有内存的基础上修改数据,并且修改后内存地址不变
        g_list.append(i)
        print('add:', i)
        time.sleep(0.2)

#读取数据的任务
def read_data():
    print("read:", g_list)

if __name__ == '__main__':

#添加数据的子进程
    add_process = multiprocessing.Process(target=add_data)
#读取数据的子进程
    read_process = multiprocessing.Process(target=read_data)

#启动进程执行对应的任务
    add_process.start()
#当前进程等待添加数据的进程执行完成以后代码再继续往下执行
    add_process.join()
    print("main:", g_list)
    read_process.start()

5.主进程会等待所有子进程执行结束后再结束

import multiprocessing
import time

#定义全局变量列表
g_list = list()

#添加数据的任务
def add_data():
    for i in range(3):
        #因为列表是可变类型,可以在原有内存的基础上修改数据,并且修改后内存地址不变
        g_list.append(i)
        print('add:', i)
        time.sleep(0.2)

#读取数据的任务
def read_data():
    print("read:", g_list)

if __name__ == '__main__':

#添加数据的子进程
    add_process = multiprocessing.Process(target=add_data)
#读取数据的子进程
    read_process = multiprocessing.Process(target=read_data)

#启动进程执行对应的任务
    add_process.start()
#当前进程等待添加数据的进程执行完成以后代码再继续往下执行
    add_process.join()
    print("main:", g_list)
    read_process.start()import multiprocessing
import time

#定义全局变量列表
g_list = list()

#添加数据的任务
def add_data():
    for i in range(3):
        #因为列表是可变类型,可以在原有内存的基础上修改数据,并且修改后内存地址不变
        g_list.append(i)
        print('add:', i)
        time.sleep(0.2)

#读取数据的任务
def read_data():
    print("read:", g_list)

if __name__ == '__main__':

#添加数据的子进程
    add_process = multiprocessing.Process(target=add_data)
#读取数据的子进程
    read_process = multiprocessing.Process(target=read_data)

#启动进程执行对应的任务
    add_process.start()
#当前进程等待添加数据的进程执行完成以后代码再继续往下执行
    add_process.join()
    print("main:", g_list)
    read_process.start()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值