情景题之小明的Linux实习之旅:linux实战练习1(下)【基础命令,权限修改,日志查询,进程管理...】

小明的Linux实习之旅:基础指令练习情景练习题下

    • 前景提要
    • 小明是怎么做的
      • 场景1:初识Linux,创建目录和文件
      • 场景2:权限管理,小明的权限困惑
      • 场景3:打包与解压,小明的备份操作
      • 场景4:使用Grep,小明的搜索技能
      • 场景5:系统服务管理,小明的首次接触
        • ==小明笔记大公开:==
      • 场景6:进程管理,小明的多任务处理
        • ==小明笔记大公开:==
      • 场景7:定时任务与系统状态
        • ==小明笔记大公开:==
        • ==小明笔记大公开之`uptime`命令:==
        • ==小明笔记大公开之关于内存:==
        • ==小明笔记大公开之`uptime`命令:==
        • ==小明笔记大公开之`top`命令:==
      • 场景8:dd命令,小明的惊险操作
        • ==小明的提醒:==

前景提要

小明刚刚开始他的Linux测试开发实习。第一天,他的leader给了他一系列任务,帮助他熟悉Linux命令行操作。以下是小明的冒险故事。

小明是怎么做的

场景1:初识Linux,创建目录和文件

  1. 小明的导师要求他创建一个项目目录,并在其中创建一个README文件。

    mkdir ~/project     #make directory建立目录
    cd ~/project    #change directory,改变目录或切换到另一个文件夹
    touch README.md    #碰到文件
    
  2. 小明在README.md中写下了项目简介,但不小心写错了内容。

    vi README.md
    # 按i进入插入模式,输入“这是小明的第一个项目。”
    # 但写成了“这是小明的第一个错误。”
    # 按Esc键,输入:wq保存并退出
    
  3. 小明发现写错了,需要修改内容。

    vi README.md
    # 按i进入插入模式,将“错误”改为“项目”
    # 按Esc键,输入:wq保存并退出
    
  4. 导师检查后,认为小明的描述还不够详细,要求他再添加一些信息。

    echo "项目描述:这是一个用于学习Linux基本命令的项目。" >> README.md
    cat README.md     #concatenate(连锁,用于连接并显示文件内容)
    

小明的电脑界面:
小明的界面

场景2:权限管理,小明的权限困惑

  1. 导师提醒小明要注意文件权限管理,要求他将README.md的权限修改为755。

    chmod 755 README.md    #change mode改变权限
    ls -l README.md        #list(列出目录内容)
    
  2. 导师还要求小明将项目目录的所有者改为root。

    sudo chown root:root ~/project   
    #superuser do,用于执行需要超级用户(root)权限的命令,而不需要实际切换到root用户
    #change owner改变所有者
    ls -ld ~/project   #d:directory,表示只显示目录的信息不显示内部文件(夹)
    

3.导师刚才说错了,他是要确认该项目目录不是root,因为之后需要进行一些写入操作。小明于是默默地将项目目录的所有者改回来。

  •   groups christine  #确认原来默认群组是否也是christine(我的用户名)
      # 结果:christine : christine
      [christine@localhost rongyi_project]$ sudo chown 
      # 结果:christine:christine ~/rongyi_project
      [christine@localhost rongyi_project]$ ls -ld ~/rongyi_project
      # 结果: drwxrwxr-x. 2 christine christine 68 6月   9 00:46 /home/christine/rongyi_project
    

小明的电脑界面:
在这里插入图片描述

场景3:打包与解压,小明的备份操作

  1. 导师告诉小明要定期备份项目目录,于是小明打包了整个项目目录。

    #确保回到home页面
    cd ~
    # 使用 tar 命令来打包目录时,压缩文件会被存放在执行命令时所在的目录中。
    tar -cvf project_v1.tar project   #区别~/project
    ls -lh project_v1.tar
    
  2. 一天,小明需要恢复之前的备份,于是他解压了备份文件。

    mkdir ~/backup #新建一个备份目录用来放解压文件
    tar -xvf project_v1.tar -C backup   #-C一定是大写,tar方法敏感
    cd backup
    ls
    

小明的电脑界面:
在这里插入图片描述

场景4:使用Grep,小明的搜索技能

  1. 小明需要在项目目录中查找所有包含“项目”字样的文件。

    grep -r "项目" ~/project
    # grep:文本搜索工具,允许你使用正则表达式来搜索文本。
    # -r:递归搜索,即搜索指定目录及其所有子目录中的文件。
    
  2. 导师要求他找出README.md文件中所有包含“描述”字样的行。

    grep "描述" ~/project/README.md
    

小明的电脑界面:
在这里插入图片描述

场景5:系统服务管理,小明的首次接触

  1. 导师让小明检查防火墙状态,并确保它是开启的。

    sudo systemctl status firewalld
    sudo systemctl start firewalld
    
  2. 导师让小明启动MySQL服务并查看其状态。

    sudo systemctl start mysql
    sudo systemctl status mysql
    
  3. 小明还需要启动Redis服务并检查其状态。

    sudo systemctl start redis
    sudo systemctl status redis
    
  4. 最后,导师让小明查看网络接口的状态。

    ifconfig
    

小明的电脑界面:
在这里插入图片描述

小明笔记大公开:

systemctlsystemd的控制工具(control tool)的缩写。systemd是一个初始化系统(init system)和用户空间(userspace)的系统管理器,用于管理系统资源和服务。

  • systemctl start <service>:启动一个服务
  • systemctl stop <service>:停止一个服务
  • systemctl restart <service>:重启一个服务
  • systemctl status <service>:查询一个服务的状态
  • systemctl enable <service>:在系统启动时自动启动一个服务
  • systemctl disable <service>:在系统启动时禁用一个服务的自动启动

场景6:进程管理,小明的多任务处理

  1. 小明查看了系统中所有正在运行的进程。

    ps -ef
    
  2. 小明搜到了一个排序方法,发现有一个进程占用了大量内存资源,于是他结束了该进程。。

    ps aux --sort=-%mem   #按内存使用量排序:通过管道和 sort 命令按 %MEM 或 RSS 列排序,找到内存占用最高的进程。
    
    # kill <PID>    #新手不要学小明,容易坏事  终止指定PID
    
  3. 小明根据进程名称结束了一个测试进程。

    pkill test_process  #终止指定进程名
    
小明笔记大公开:
  • UID: 用户ID。显示了哪个用户拥有该进程。例如,root 表示该进程是由 root 用户拥有的。
  • PID: 进程ID。这是一个唯一的数字,用于标识系统中的每个进程。
  • PPID: 父进程ID。这是创建该进程的进程的PID。
  • C: CPU 使用率。这表示进程最近的 CPU 使用率,通常是一个介于 0.0(没有使用)和 100.0(完全使用)之间的十进制数。但在这里,由于 ps 命令的默认输出格式,它可能只是一个简单的数字,代表优先级。
  • STIME: 启动时间。这显示了进程开始运行的时间。
  • TTY: 终端类型。通常表示进程在哪个终端上运行,或者如果没有关联到终端,则可能显示为 ?
  • TIME: CPU 时间。这显示了进程自启动以来所使用的 CPU 时间总量。
  • CMD: 命令。这显示了启动进程的命令名或命令行。

常见的:

  • systemd 是系统的初始化系统和服务管理器,负责启动和管理系统进程。
  • kthreaddksoftirqdkworkermigrationrcu_bhrcu_sched 都是内核线程,它们处理系统的低级任务,如中断、调度和其他内核功能。这些通常不由用户直接管理。

场景7:定时任务与系统状态

  1. 导师要求小明设置一个定时任务,每天备份项目目录。

    crontab -e
    # 添加以下行以每天午夜备份项目目录:
    # 0 0 * * * tar -cvf ~/project_v1_$(date +\%F).tar ~/rongyi_project
    
  2. 小明查看了当前用户的所有定时任务。

    crontab -l
    
小明笔记大公开:

crontab 是由 “cron” 和 “tab” 两个单词组成的缩写。

  1. cron:这是 Unix 和 Linux 系统中用于定时执行任务的守护进程(daemon)的名称。它会在后台运行,并每分钟检查是否有预定的作业需要执行。这些作业通常被称为 “cron jobs”。
  2. tab:这里可以理解为表格(table)的简写,因为 crontab 文件实际上是一个用于存储和管理定时任务的列表或表格。

因此,crontab 的整体意思是“cron的表格”或“cron的任务列表”。

crontab 文件中,每一行代表一个任务,包含了该任务的时间设置和要执行的命令或脚本。这些时间设置可以精确到分钟、小时、日期、月份和星期等不同的时间单位。

  1. 小明查看了系统运行时间和负载信息。

    uptime
    
小明笔记大公开之uptime命令:

显示系统已经运行了多长时间、当前有多少用户登录、以及系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。

[christine@localhost ~]$ uptime

06:08:38 up 19:35, 5 users, load average: 0.11, 0.22, 0.26

在上一行小明得到结果中:

  • 06:08:38:当前的系统时间。
  • up 19:35:系统已经运行了 19 小时 35 分钟。(看得出小明很努力,忘了断开)
  • 5 users:当前有 5 个用户登录到系统。
  • load average: 0.11, 0.22, 0.26:系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。

负载平均值是一个表示系统负载的度量,但它不是直接表示 CPU 使用率或正在运行的进程数量。它实际上是系统中处于可运行(或等待运行)状态的进程队列的平均长度。负载值越低,表示系统越空闲;负载值越高,表示系统越繁忙。

  • 0.11:过去 1 分钟内的平均负载。
  • 0.22:过去 5 分钟内的平均负载。
  • 0.26:过去 15 分钟内的平均负载。

以小明的这个情况,负载值都很低,表示系统目前很空闲,有足够的处理能力来处理额外的任务。

  1. 小明查看了系统内存使用情况。
free -h
小明笔记大公开之关于内存:

当运行 free -h 命令时,查看系统上的内存使用情况,其中 -h 选项表示“human-readable”,即以人类可读的格式(如 G、M)显示结果。

[christine@localhost ~]$ free -h
total used free shared buff/cache available
Mem: 972M 580M 64M 124M 327M 65M
Swap: 2.0G 496M 1.5G

  • Mem: 这部分显示了物理内存(RAM)的使用情况。
    • total: 总的物理内存大小,这里是 972M(972 兆字节)。
    • used: 当前已使用的物理内存,这里是 580M。
    • free: 当前未使用的物理内存,这里是 64M。
    • shared: 被多个进程共享的内存量,这里是 124M。
    • buff/cache: 缓存和缓冲区使用的内存量,这部分内存可以被回收以满足应用程序的需求,而不必从磁盘读取数据。这里是 327M。
    • available: 估计的、在不交换出的情况下,可以分配给应用程序的内存量。这是 “free” 和 “buff/cache” 的一个估计值,考虑了它们被回收的可能性。这里是 65M。
  • Swap: 这部分显示了交换空间(swap space)的使用情况。
    • total: 总的交换空间大小,这里是 2.0G(2 吉字节)。
    • used: 当前已使用的交换空间,这里是 496M。
    • free: 当前未使用的交换空间,这里是 1.5G。

从小明的输出中,可以看到物理内存的大部分(超过一半)已经被使用,但交换空间的使用量相对较少(不到四分之一)。如果这个系统开始大量使用交换空间,那么性能可能会受到影响,因为从磁盘读取数据通常比从 RAM 读取要慢得多。不过,在这个例子中,系统似乎还有足够的 RAM 和交换空间来处理当前的工作负载。

  1. 小明查看了磁盘使用情况。
df -h
小明笔记大公开之uptime命令:

当运行 df -h 命令时,你正在查看文件系统的磁盘空间使用情况。-h 选项表示“human-readable”,即以人类可读的格式(如 G、M)显示结果。

[christine@localhost ~]$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 38G 5.8G 32G 16% /
devtmpfs 471M 0 471M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 15M 472M 4% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 297M 147M 151M 50% /boot
tmpfs 98M 4.0K 98M 1% /run/user/42
tmpfs 98M 32K 98M 1% /run/user/1000

  • 文件系统:文件系统的名称,通常与挂载点或设备关联。
  • 容量:文件系统的总容量。
  • 已用:已使用的磁盘空间。
  • 可用:剩余的磁盘空间。
  • 已用%:已使用的磁盘空间的百分比。
  • 挂载点:文件系统被挂载到哪个目录。

在你的输出中:

  • /dev/sda3 是主要的根文件系统(root filesystem),它位于 sda 磁盘的第三个分区上,总共有 38G 的空间,已经使用了 5.8G,剩余 32G,使用了 16% 的空间,并挂载在根目录 / 下。
  • devtmpfs 和多个 tmpfs 是临时文件系统,用于存储临时文件或作为内存中的文件系统使用。这些文件系统通常不会占用硬盘空间,而是使用 RAM。从输出中可以看出,它们几乎没有被使用。
  • /dev/sda1/boot 分区,用于存放引导加载器(如 GRUB)和内核文件。这个分区总共有 297M 的空间,已经使用了 147M,剩余 151M,使用了 50% 的空间。
  • /run/user/42/run/user/1000 是为特定用户(ID 为 42 和 1000 的用户)提供的临时目录,通常用于存储会话特定的文件。这些目录也没有被大量使用。

从输出中,可以看到主要的文件系统和引导分区都有足够的可用空间。如果小明看到任何文件系统的已用百分比接近或超过 100%,那就需要采取措施来释放空间或扩展文件系统的容量。

  1. 小明使用top命令实时查看系统资源使用情况。
top
小明笔记大公开之top命令:

用于实时监视系统的动态运行状况。当运行 top 命令时,它会显示系统中各个进程的资源占用情况,包括 CPU 使用率、内存占用、运行时间等。同时,top 还会更新这些信息,以便可以看到系统的实时状态。

输出解释:

  • 第一行:显示系统时间、系统运行时间、登录用户数、系统负载(最近1分钟、5分钟、15分钟的平均值)。
  • 第二行:显示进程总数、正在运行的进程数、休眠的进程数、停止的进程数、僵尸进程数。
  • 第三行:显示 CPU 状态,包括用户空间占用 CPU 百分比、内核空间占用 CPU 百分比、空闲 CPU 百分比、等待 I/O 操作的 CPU 百分比、硬中断和软中断占用的 CPU 百分比。
  • 第四行:显示物理内存总量、已使用的物理内存、空闲的物理内存、已缓冲的内存。
  • 第五行:显示交换空间总量、已使用的交换空间、空闲的交换空间。

接下来是进程列表,每个进程都有一行信息,包括进程 ID、用户、优先级、CPU 占用率、内存占用、进程状态等。

常用交互命令:

top 运行过程中,可以按以下键进行交互:

  • P:按 CPU 使用率排序。
  • M:按内存使用量排序。
  • N:以 PID 顺序排序。
  • T:按 CPU 时间排序。
  • R:对当前排序进行反转。
  • k:杀死一个进程(需要输入 PID)。
  • q:退出 。
  • h:显示帮助信息。

注意了:

  • top 命令提供的信息是实时的,所以它会持续更新。
  • 如果你发现某个进程的 CPU 或内存占用过高,可能需要进一步检查该进程。
  • 在使用 top 时,要注意系统负载和 CPU 使用率,以确保系统没有过载或运行缓慢。

场景8:dd命令,小明的惊险操作

*这几步不用跟着做,容易出问题,了解即可

  1. 小明使用dd命令备份数据。

    sudo dd if=/dev/sda of=~/sda_backup.img bs=4M
    # dd 命令用于低级复制和转换文件,在这里,它被用来复制整个硬盘。名称来源于 "data duplicator" 或 "disk dump" 的缩写
    # if 是 "input file" 的缩写。of 是 "output file" 的缩写。bs 是 "block size" 的缩写。
    # if=/dev/sda: 这是 dd 命令的一个选项,指定输入文件(或设备)。
    # 注意:/dev/sda 通常指的是整个硬盘,而不是某个分区(如 /dev/sda1)。
    # bs=4M是 dd 命令的块大小(block size)选项。指定了每次读取和写入的块大小为 4MB,可以提高复制大文件的效率。
    
小明的提醒:

警告:这条命令极其危险,因为它会覆盖 ~/sda_backup.img 文件(如果它已经存在),并且如果错误地指定了 ifof 参数,它可能会导致数据丢失。在执行此类命令之前,请确保你完全理解它的工作原理,并已经采取了适当的预防措施(如备份)。

此外,对于备份整个硬盘,更安全和更常见的方法是使用专业的磁盘镜像工具,如 ddrescue(它可以处理坏扇区)或图形界面的工具,如 CloneZilla。

  1. 小明试图恢复数据,但不小心输入了错误的输出路径,导致系统崩溃。
sudo dd if=~/sda_backup.img of=/wrong/path bs=4M
# 系统崩溃,恢复重启后导师解释了错误的原因
  1. 小明再试一次,这次成功恢复了数据。
sudo dd if=~/sda_backup.img of=/dev/sda bs=4M

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/697278.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue3 递归循环展示下级盒子

index.vue主文件 <template><div><RecursiveCard :data"rootTask" /></div> </template><script> import { reactive } from vue; import RecursiveCard from ./test.vue; // 递归组件的路径export default {components: {Recu…

textattack报错:不能导入自定义search_methods (cannot import name ‘xxx‘ from ‘xxx‘)

1. 报错信息 ImportError: cannot import name AAA from textattack.search_methods (/home/666/anaconda3/envs/textattack37_env/lib/python3.7/site-packages/textattack/search_methods/__init__.py)2. 出错简述 贴一段test1.py的模块导入 #建议使用&#xff01; import…

后方碰撞预警系统技术规范(简化版)

后方碰撞预警系统技术规范(简化版) 1 系统概述2 预警区域3 预警目标4 功能需求功能条件5 显示需求6 指标需求1 系统概述 后方碰撞预警系统RCW(Rear Collision Warning)是在后方车辆即将与自车发生碰撞之前,激活危险警告灯以较高频率闪烁,从而吸引后方驾驶员的注意力,避免…

Redis 5种常用数据类型

目录 Redis简介 1.字符串 string 2.哈希 hash 3.列表 list 4.集合 set 5.有序集合 sorted set / zset Redis简介 Redis&#xff0c;全称Remote Dictionary Server&#xff0c;是一个开源的、内存中的数据结构存储系统。它可以用作数据库、缓存和消息中间件&#xff0c;支…

常用的通信协议

最近在做项目&#xff0c;用到了一些通信协议&#xff0c;这里详细整理一下相关的通信协议&#xff0c;方便以后查阅。 常用的通信协议 单工 半双工 全双工单工通信&#xff08;Simplex Communication&#xff09;半双工(Half-duplex Communication)全双工&#xff08;Full-dup…

【MySQL】聊聊唯一索引是如何加锁的

首先我们要明确&#xff0c;加锁的对象是索引&#xff0c;加锁的基本单位是next-key lock&#xff0c;由记录锁和间隙锁组成。next-key是前开后闭区间&#xff0c;间隙锁是前开后开区间。根据不同的查询条件next-key 可能会退化成记录锁或间隙锁。 在能使用记录锁或者间隙锁就…

视觉大模型(VLLM)学习笔记

视觉多模态大模型&#xff08;VLLM&#xff09; InternVL 1.5 近日&#xff0c;上海人工智能实验室 OpenGVLab 团队、清华大学、商汤科技合作推出了开源多模态大语言模型项目InternVL 1.5&#xff0c;它不仅挑战了商业模型巨头例如 GPT-4V 的霸主地位&#xff0c;还让我们不禁…

通用信息提取数据预处理

train_data./datasets/duuie output_folder./datasets/duuie_pre ignore_datasets["DUEE", "DUEE_FIN_LITE"] schema_folder./datasets/seen_schema # 对CCKS2022 竞赛数据进行预处理 import shutil # shutil.copytree(train_data,output_folder) impor…

Mysql 的分布式策略

1. 前言 MySQL 作为最最常用的数据库&#xff0c;了解 Mysql 的分布式策略对于掌握 MySQL 的高性能使用方法和更安全的储存方式有非常重要的作用。 它同时也是面试中最最常问的考点&#xff0c;我们这里就简单总结下 Mysq 的常用分布式策略。 2. 复制 复制主要有主主复制和…

5 个你不知道的隐藏 CSS 属性

层叠样式表 (CSS) 是网页设计的骨架&#xff0c;它可以帮助我们轻松的设置网页的样式和格式。虽然大多数的 CSS 属性&#xff0c;例如颜色、字体大小和边距都被大家熟知&#xff0c;但还有许多鲜为人知的属性可以帮助我们设计添加功能。在这篇文章中&#xff0c;我们将介绍 5 个…

GD32F4XX的ISP方式下载程序时的串口选择

官方资料 详细信息可参考GD32F4xx的用户手册&#xff0c;第 1.4 章节 引导配置 。 版本是 &#xff1a;GD32F4xx_User_Manual_Rev3.0_CN 资料链接: https://www.gd32mcu.com/cn/download/6?kwGD32F4

【解读】小提琴图

ref&#xff1a;解读文献中的箱线图&#xff08;Box-plot&#xff09;和小提琴图&#xff08;Violin-plot)&#xff09;_小提琴图和箱线图的区别-CSDN博客小提琴图展示了每个变量的数据分布情况&#xff0c;通过图中的“小提琴”形状可以看出数据的密度和分布情况。 在图中&…

Layui实现下拉多选功能

1、问题概述? 提供源码下载 在项目中有很多地方需要使用到下拉框,并且实现选择多个信息,下面是展示。 支持如下功能: 1、分页 2、主题自定义 3、国际化 4、下拉方向 5、Tips修改等 6、Style自定义样式 7、取值 8、赋值 2、资源准备及测试? 2.1、资源下载

管理数据必备;侦听器watch用法详解,vue2与vue3中watch的变化与差异

目录 一、侦听器&#xff08;watch&#xff09;是什么&#xff1f; 二、Vue2中的watch&#xff08;Options API&#xff09; 2.1、函数式写法 2.2、对象式写法 ①对象式基础写法 ②回调函数handler ③deep属性 ④immediate属性 三、Vue3中的watch 3.1、向下兼容&#xff…

Qt实现简易播放器

效果如图 源码地址&#xff1a; 简易播放器: 基于Qt的简易播放器&#xff0c;底层采用VLC源码 - Gitee.com GitHub:GitHub - a-mo-xi-wei/easy-player: 基于Qt的调用VLC的API的简易播放器

Running Gradle task ‘assembleDebug‘ Flutter项目

基于Android方面运行Flutter项目一直卡在 Launching lib\main.dart on Android SDK built for x86 in debug mode… Running Gradle task ‘assembleDebug’… 基础原因&#xff1a; 默认存放Gradle插件包的Maven仓库是国外(需VPN) 我的原因&#xff1a; 缺少JDK和缺少Androi…

tcp协议中机制的总结

目录 总结 分析 三次握手 总结 分析 其中,序列号不止用来排序,还可以用在重传时去重 确认应答是机制中的核心 因为都需要依靠应答来拿到协议字段,从而判断是否触发机制 保证可靠性的策略也可以提高效率,比如: 流量控制,可以根据多个因素来动态调整数据发送量拥塞控制也是,让…

支持YUV和RGB格式两路视频同时播放

1.头文件&#xff1a; sdlqtrgb.h #pragma once #include <QtWidgets/QWidget> #include "ui_sdlqtrgb.h" #include <thread> class SdlQtRGB : public QWidget {Q_OBJECTpublic:SdlQtRGB(QWidget* parent Q_NULLPTR);~SdlQtRGB(){is_exit_ true;//等…

现实转虚拟:Video2Game引领3D互动体验

在当今数字化时代&#xff0c;虚拟环境的创建对于游戏开发、虚拟现实应用和自动驾驶模拟器等多个领域至关重要。然而&#xff0c;传统的虚拟环境创建过程不仅复杂而且成本高昂&#xff0c;通常需要专业人员和专业软件开发工具的参与。例如&#xff0c;著名的《侠盗猎车手V》以其…

「51媒体」江苏媒体宣传报道,邀请媒体报道资源汇总

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 江苏作为中国东部的重要省份&#xff0c;拥有丰富的媒体资源&#xff0c;包括电视台、广播电台、报纸以及网络媒体。 电视台 江苏卫视&#xff1a;作为江苏省唯一的省级卫视台&#xff…