当前位置: 首页 > news >正文

Linux 学习笔记(16)

十六、 计划任务
在很多时候为了自动化管理系统,我们都会用到计划任务,比如关机,管理,备份之类的操作,我
们都可以使用计划任务来完成,这样可以是管理员的工作量大大降低,而且可靠度更好。
linux 系统支持一些能够自动执行任务的服务,我们称为计划任务。
LINUX 有如下三种计划任务:
at:指定一个时间执行一个任务 (适用一个或多个任务,执行一次后就不用)
cron:根据一个时间表自动执行任务 (使用一个或多个任务,周期性执行)
系统级别的计划任务及其扩展 anacron:在一个指定时间间隔错过后自动执行任务
1 at: 安排一个任务在未来执行,需要一个 atd 的系统后台进程
检查 atd 进程是否启动
[root@centos61 桌面 ]# service atd status
atd (pid 2274) 正在运行 ...
[root@centos61 桌面 ]# chkconfig |grep atd
atd
0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
如果未启动,可以使用如下命令:
[root@centos61 桌面 ]# service atd start
正在启动 atd [ 确定 ]
[root@centos61 桌面 ]# chkconfig atd on
常用指令: at:安排延时任务
具体使用方法:
例 1:
#at now+2 minutes 回车
>输入要执行的命令 >ctrl+d 结束输入
[root@test ~]# at now+2 minutes
at> wall Aixi
at> <EOT>
job 2 at 2010-06-18 16:36
<EOT>是 ctrl+d 中断输入,这个命令意思是发送一个广播内容是 Hello Aixi.具体时间可以改,单位可以改,可以用 hours,months,years,weeks 等.
例 2 我们还可以跟具体时间
[root@test ~]# at 16:39 dec 10
at> Hello Aixi
at> <EOT> ctrl+d 结束输入
job 3 at 2010-12-10 16:39
意思是在今年的 12 月 10 日 16:39 运行这个命令.如果不加月和日,默认就是今天.
Atq:查询当前的等待任务
用 atq 来查询,已经运行的任务,就消失了。这就是 at 计划任务的重点,只运行一次
atrm:删除等待任务
启动计划任务后,如果不想启动设定好的计划任务可以使用 atrm 命令删除。
格式:atrm 任务号
命令后面跟计划任务编号,如果不跟,就会删除这个用户所有的计划任务。
例 3
atrm 10 //删除计划任务 10
atq //查看计划任务是否删除
at 将要运行的命令以文本形式写入/var/spool/at/目录内,等待 atd 服务的取用和执行。
还可以进入到/var/spool/at 目录里把计划任务删除,计划任务的文件都保存在该目录里,可以用 rm -f
文件名来删除(以文件的形式删除计划任务,因为计划任务是以文件形式保存在该目录中)
例 4:
#cd /var/spool/at //进入到/var/spool/at 目录中
ls //显示目录中所有文件
rm -f a0000b0138b19c //删除计划任务
在通常情况下,超级用户都可以使用这个命令。对于其他用户来说,能否可以使用就取决于两个文
件:/etc/at.allow 和/etc/at.deny。
at 命令是可以基于用户来控制的,我们可以明确指定哪些用户可以使用 at 计划任务,哪些用户不可以使用 at 计划任务。
at 的控制文件
/etc/at.allow
/etc/at.deny
系统默认是有 at.deny 文件,如果某个用户名在这个文件里,他就不能使用 at 计划任务。如果有
at.allow 文件,allow 文件先行,检查了 allow 明确允许,就不会检查 deny。
如果你要让哪个用户不能使用计划任务,就直接把他的用户名写进去就可以了,一排只能写一个。 2 cron 服务 ( 参考网址: http://www.linuxsir.org/main/?q=node/209)
相对与 at,cron 的优点就是能够周期性的执行某个命令,at 却只能执行一次,cron 的后台进程名字
是 crond ,cron 也是 system V 的服务,所以我们可以 service crond start|stop 来启动和关闭此服
务,也可以使用 chkconfig 或者 ntsysv 来选择 cron 服务的默认开启,这些命令在以前我们都讲过的
命令:
#crontab -e 编辑当前用户的 cron 表
#crontab -l 查看当前用户的 cron 表
#crontab -r 删除当前用户的 cron 进程
#crontab -u 用户名 以某用户的身份来控制 cron 表
还有个重要的知识点,就是当用户的计划任务建立后是存放在 var/spool/cron 这个目录
当使用 crontab -e 编辑当前用户的 cron 表后,会出现一个 vi 文件,cron 的格式是这样的。分成两
列,左边是时间,右边是运行的命令。时间是由 5 个部分组成。
例:
* * * * * wall hello everyone
5 个星号分别代表:minute hour day-of-month month-of-year day-of-week ,而 wall hello
everyone 这是命令内容。上面的意识是每分每小时每天每月每周广播 hello everyone。具体时间大家可以自己定义。如果要每两分钟发送就用*/2 代替第一个*。也可以是用具体时间来表示。
我们使用 crontab -e 编辑当前用户的 cron 表
这里的 5 个星号就代表的时间和日期:
第一个*星号代表个小时的第几分钟:minute 范围是从 0-59
第二个*星号代表每天的第几个小时:hour 范围是从 0-23
第三个*星号代表每月的第几个日:day-of-month 范围从 1-31
第四个*星号代表没年的第几个月:month-of-year 范围从 1-12
第五个*星号代表每周的星期几:day-of-week 范围从 0-6,其中 0 表示星期日
用户名:也就是执行程序要通过哪个用户来执行,这个一般可以省略;
命令:执行的命令和参数。
时程表的格式如下 :
f1 f2 f3 f4 f5 program
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期
中的第几天。program 表 示要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其余以此类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b小时都要执行,其余以此类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余以此类推
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c... 个小时要执行,其余以此类推
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
例 1:如果我要表示 9 月 10 日 25 分执行 ls var/spool/cron 任务怎么表示?
25 * 10 9 * ls var/spool/cron
由于我没表示小时,所以就只能里面为每小时
例 2:我要在每周日,每分钟执行 wall Hello redking.blog.51cto.com 这个命令,时间怎么表示?
*/1 * * * 0 wall Hello redking.blog.51cto.com
*/ 表示每多少分钟执行一次 例 3:每晚的 21:30 重启 apache。
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
例 4:每月 1、10、22 日的 4 : 45 重启 apache
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
例 5:每周六、周日的 1 : 10 重启 apache
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
例 6:在每天 18 : 00 至 23 : 00 之间每隔 30 分钟重启 apache
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
例 7:每一小时重启 apache
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
例 8:晚上 11 点到早上 7 点之间,每隔一小时重启 apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
例 9:每月的 4 号与每周一到周三的 11 点重启 apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
例 10:一月一号的 4 点重启 apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
例 11:在 12 月内, 每天的早上 6 点到 12 点中,每隔 3 个小时执行一次 /usr/bin/backup
0 6-12/3 * 12 * /usr/bin/backup
例 12:每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
20 0-23/2 * * * echo "haha"
3 、系统级别的计划任务及其扩展 anacrontab
这个是系统设置好了,清理系统垃圾或者是自动执行某些脚本的系统任务,一般我们做了解就行了, 不要更改配置文件是/etc/conrtab
SHELL:就是运行计划任务的解释器,默认是 bash
PATH:执行命令的环境变量
MAILTO:计划任务的出发者用户
HOME:家目录为/
run-parts 是一个脚本,在/usr/bin/run-parts,作用是执行一个目录下的所有脚本/程序。
run-parts /etc/cron.hourly 执行目录/etc/cron.hourly/之下的所有脚本/程序.
run-parts 下面就是运行的命令
vim /etc/crontab 与 crontab -e 写入的定时运行的区别?
vim /etc/crontab:是系统级别定义的 crontab,/etc/crontab 的所有者和组都是 root
crontab -e :是用户自定义的 crontab,是所有的用户都可以写入的 两种方法记录的位置不一样,一个在/etc/ 另一个在/var/ 里面。都被 cron 服务调用
如果系统在以上说的时间没有开机怎么办?那么这个脚本不就是不能执行了?设计者早就想到了这个问题,所以就有了 cron 服务的扩展,目的就是为了防止非 24 小时开机的计算机遗漏的守护任务,anacr
ontab 就是系统计划任务的扩展文件:在一个指定时间间隔错过后自动执行任务
格式是这样的:
period delay job-identifier command
period — 命令执行的频率(天数)
delay — 延迟时间(分钟)
job-identifier — 任务的描述,用在 anacron 的消息中,并作为作业时间戳文件的名称,只能包括
非空白的字符(除斜线外)。
command — 要执行的命令
第一行的意思是:每天开机 65 分钟后就检查 cron.daily 文件是否被执行了,如果今天没有被执行就执行他
第二行的意思是:每隔 7 天开机后 70 分钟检查 cron.weekly 文件是否被执行了,如果一周内没有被执行就执行他
第三行的意思也差不多
下面说说关于 cron 服务的控制,和 at 差不多,就是/etc/cron.deny 这个配置文件来控制,里面写入要禁止使用 cron 用户的名字,一行一个就 OK 了

相关文章:

Linux 学习笔记(16)

十六、 计划任务 在很多时候为了自动化管理系统&#xff0c;我们都会用到计划任务&#xff0c;比如关机&#xff0c;管理&#xff0c;备份之类的操作&#xff0c;我 们都可以使用计划任务来完成&#xff0c;这样可以是管理员的工作量大大降低&#xff0c;而且可靠度更好。 l…...

【C语言】打印闰年

输⼊⼀个年份year&#xff0c;判断year是否是闰年 闰年判断的规则&#xff1a; 1&#xff0c; 能被4整除并且不能被100整除是闰年 2&#xff0c;能被400整除是闰年 结合起来如下&#xff1a; if ((year % 4 0 && year % 100 ! 0) || (year % 400 0)) 代码如下&…...

外贸入门,很残忍但很真实的外贸真相

如果你是小白入行外贸&#xff0c;第一家选择的公司大概率会决定你以后的客户开发模式。 外贸老鸟们可以留言讨论下自己是不是被说中了。 如果新人选择的第一家公司是靠B2B网站&#xff0c;展会或者官网询盘分发&#xff0c;公司每年会花大量的广告费用获客&#xff0c;你会很快…...

【Linux网络编程七】网络序列化和反序列化(网络版本计算器)

【Linux网络编程七】网络序列化和反序列化(网络版本计算器&#xff09; 一.网络读取问题【解决方案】1.定制协议2.序列化和反序列化3.添加报头①封包②解包 4.框架总结 二.自定义协议&#xff1a;网络计算器协议Ⅰ.客户端发送请求&#xff0c;服务器端接收请求1.构建请求(结构化…...

算法打卡day17|二叉树篇06|Leetcode 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

算法题 Leetcode 654.最大二叉树 题目链接:654.最大二叉树 大佬视频讲解&#xff1a;最大二叉树视频讲解 个人思路 大概思路就是在数组中 找最大值的节点作为当前节点&#xff0c;用最大值的index切割左右子树的区间&#xff0c;往复循环到数组元素为0&#xff1b; 解法 递…...

C语言之数据在计算机内部的存储

文章目录 一、前言二、类型的基本归类1、整型家族2、浮点数家族3、构造类型4、指针类型 三、整型在内存中的存储1、原码、反码、补码1.1 概念1.2 原码与补码的转换形式1.3 计算机内部的存储编码 2、大小端介绍~~2.1 为什么要有大端和小端之分&#xff1f;2.2 大&#xff08;小&…...

程序人生——Java中基本类型使用建议

目录 引出Java中基本类型使用建议建议21&#xff1a;用偶判断&#xff0c;不用奇判断建议22&#xff1a;用整数类型处理货币建议23&#xff1a;不要让类型默默转换建议24&#xff1a;边界、边界、还是边界建议25&#xff1a;不要让四舍五入亏了一方 建议26&#xff1a;提防包装…...

Pikachu 靶场搭建

文章目录 环境说明1 Pikachu 简介2 Pikachu 安装 环境说明 操作系统&#xff1a;Windows 10PHPStudy 版本: 8.1.1.3Apache 版本&#xff1a;2.4.39MySQL 版本 5.7.26 1 Pikachu 简介 Pikachu是一个使用“PHP MySQL” 开发、包含常见的Web安全漏洞、适合Web渗透测试学习人员练…...

机器学习-绪论

机器学习致力于研究如何通过计算的手段、利用经验来改善系统自身的性能。在计算机系统中&#xff0c;“经验”通常以“数据”的形式存在&#xff0c;因此&#xff0c;机器学习所研究的主要内容&#xff0c;是关于在计算机上从数据中产生“模型”的算法&#xff0c;即“学习算法…...

mysql 索引(为什么选择B+ Tree?)

索引实现原理 索引&#xff1a;排好序的数据结构 优点&#xff1a;降低I/O成本&#xff0c;CPU的资源消耗&#xff08;数据持久化在磁盘中&#xff0c;每次查询都得与磁盘交互&#xff09; 缺点&#xff1a;更新表效率变慢&#xff0c;&#xff08;更新表数据&#xff0c;还要…...

蓝桥杯-带分数

法一 /* 再每一个a里去找c,他们共用一个st数组,可以解决重复出现数字 通过ac确定b,b不能出现<0 b出现的数不能和ac重复*/import java.util.Scanner;public class Main {static int n,res;static boolean[] st new boolean[15];static boolean[] backup new boolean[15];…...

消息队列面试题

目录 1. 为什么使用消息队列 2. 消息队列的缺点 3. 消息队列如何选型&#xff1f; 4. 如何保证消息队列是高可用的 5. 如何保证消息不被重复消费&#xff08;见第二条&#xff09; 6. 如何保证消息的可靠性传输&#xff1f; 7. 如何保证消息的顺序性&#xff08;即消息幂…...

Android和IOS应用开发-Flutter 应用中实现记录和使用全局状态的几种方法

文章目录 在Flutter中记录和使用全局状态使用 Provider步骤1步骤2步骤3 使用 BLoC步骤1步骤2步骤3 使用 GetX&#xff1a;步骤1步骤2步骤3 在Flutter中记录和使用全局状态 在 Flutter 应用中&#xff0c;您可以使用以下几种方法来实现记录和使用全局状态&#xff0c;并在整个应…...

若依 ruoyi-cloud [网关异常处理]请求路径:/system/user/getInfo,异常信息:404

这里遇到的情况是因为nacos中的配置文件与项目启动时的编码不一样&#xff0c;若配置文件中有中文注释&#xff0c;那么用idea启动项目的时候&#xff0c;在参数中加上 -Dfile.encodingutf-8 &#xff0c;保持编码一致&#xff0c;&#xff08;用中文注释的配置文件&#xff0c…...

自然语言处理里预训练模型——BERT

BERT&#xff0c;全称Bidirectional Encoder Representation from Transformers&#xff0c;是google在2018年提出的一个预训练语言模型&#xff0c;它的推出&#xff0c;一举刷新了当年多项NLP任务值的新高。前期我在零、自然语言处理开篇-CSDN博客 的符号向量化一文中简单介绍…...

2024年信息技术与计算机工程国际学术会议(ICITCEI 2024)

2024年信息技术与计算机工程国际学术会议&#xff08;ICITCEI 2024&#xff09; 2024 International Conference on Information Technology and Computer Engineering ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 大会主题&#xff1a; 信息系统和技术…...

渗透测试修复笔记 - 02 Docker Remote API漏洞

需要保持 Docker 服务运行并且不希望影响其他使用 Docker 部署的服务&#xff0c;同时需要禁止外网访问特定的 Docker API 端口&#xff08;2375&#xff09;&#xff1a;通过一下命令来看漏洞 docker -H tcp://ip地址:2375 images修改Docker配置以限制访问 修改daemon.json配…...

Spring(创建对象的方式3个)

3、Spring IOC创建对象方式一&#xff1a; 01、使用无参构造方法 //id&#xff1a;唯一标识 class&#xff1a;当前创建的对象的全局限定名 <bean id"us1" class"com.msb.pojo.User"/> 02、使用有参构造 <bean id"us2&…...

【GPT-SOVITS-02】GPT模块解析

说明&#xff1a;该系列文章从本人知乎账号迁入&#xff0c;主要原因是知乎图片附件过于模糊。 知乎专栏地址&#xff1a; 语音生成专栏 系列文章地址&#xff1a; 【GPT-SOVITS-01】源码梳理 【GPT-SOVITS-02】GPT模块解析 【GPT-SOVITS-03】SOVITS 模块-生成模型解析 【G…...

6个选品建议,改善你的亚马逊现状。

一、市场热点与需求调研 深入研究当前市场趋势&#xff0c;了解消费者需求的变化。使用亚马逊的销售数据、评价、问答等功能&#xff0c;以及第三方市场研究工具&#xff0c;比如店雷达&#xff0c;分析潜在热销产品的特点。注意季节性需求&#xff0c;提前布局相关选品&#…...

SQL中的SYSDATE函数

前言 在SQL语言中&#xff0c;SYSDATE 是一个非常实用且常见的系统内置函数&#xff0c;尤其在Oracle和MySQL数据库中广泛使用。它主要用来获取服务器当前的日期和时间&#xff0c;这对于进行实时数据记录、审计跟踪、有效期计算等场景特别有用。本文将详细解析SYSDATE函数的使…...

Rust的async和await支持多线程运行吗?

Rust的async和await的异步机制并不是仅在单线程下实现的&#xff0c;它们可以在多线程环境中工作&#xff0c;从而利用多核CPU的并行计算优势。然而&#xff0c;异步编程的主要目标之一是避免不必要的线程切换开销&#xff0c;因此&#xff0c;在单线程上下文中&#xff0c;asy…...

P2676 [USACO07DEC] Bookshelf B

[USACO07DEC] Bookshelf B 题目描述 Farmer John 最近为奶牛们的图书馆添置了一个巨大的书架&#xff0c;尽管它是如此的大&#xff0c;但它还是几乎瞬间就被各种各样的书塞满了。现在&#xff0c;只有书架的顶上还留有一点空间。 所有 N ( 1 ≤ N ≤ 20 , 000 ) N(1 \le N…...

【数学】第十三届蓝桥杯省赛C++ A组/研究生组《爬树的甲壳虫》(C++)

【题目描述】 有一只甲壳虫想要爬上一棵高度为 n 的树&#xff0c;它一开始位于树根&#xff0c;高度为 0&#xff0c;当它尝试从高度 i−1 爬到高度为 i 的位置时有 Pi 的概率会掉回树根&#xff0c;求它从树根爬到树顶时&#xff0c;经过的时间的期望值是多少。 【输入格式…...

Java毕业设计 基于springboot vue招聘网站 招聘系统

Java毕业设计 基于springboot vue招聘网站 招聘系统 springboot vue招聘网站 招聘系统 功能介绍 用户&#xff1a;登录 个人信息 简历信息 查看招聘信息 企业&#xff1a;登录 企业信息管理 发布招聘信息 职位招聘信息管理 简历信息管理 管理员&#xff1a;注册 登录 管理员…...

Leetcode 1. 两数之和

心路历程&#xff1a; 很简单的题&#xff0c;双层暴力就可以&#xff0c;用双指针的话快一点。暴力时间复杂度O( n 2 n^2 n2)&#xff0c;双指针时间复杂度O(nlogn) O(n) O(n) O(nlogn)。 注意的点&#xff1a; 1、题目需要返回原数组的索引&#xff0c;所以排序后还需要…...

【elasticsearch实战】从零开始设计全站搜索引擎

业务需求 最近需要一个全站搜索的功能&#xff0c;我们的站点的特点是数据多源&#xff0c;即有我们本地数据库&#xff0c;也包含了第三方数据源&#xff0c;我们的数据类型除了网页&#xff0c;还包括了各种类型的文档&#xff0c;例如&#xff1a;doc、pdf、excel、ppt等格…...

基于tcp协议的网络通信(基础echo版.多进程版,多线程版,线程池版),telnet命令

目录 基础版 思路 辅助函数 服务端 代码 运行情况 -- telnet ip 端口号 传输的数据为什么没有转换格式 客户端 思路 代码 多进程版 引入 问题 解决 注意点 服务端 代码 运行情况 进程池版(简单介绍) 多线程版 引入 问题解决 注意点 服务端 代码 …...

Ubuntu20系统安装完后没有WIFI

Ubuntu20系统安装完后没有WIFI 查看后发现是缺少网卡&#xff0c;经过查询之后&#xff0c;发现是HRex39/rtl8852be 然后查询了Kernel版本 Check the Kernel Version in Linux $ uname -srm Linux 5.15.0-67-generic x86_64然后进行下载安装 Build(for kernel < 5.18) …...

计算机视觉——目标检测(R-CNN、Fast R-CNN、Faster R-CNN )

前言、相关知识 1.闭集和开集 开集&#xff1a;识别训练集不存在的样本类别。闭集&#xff1a;识别训练集已知的样本类别。 2.多模态信息融合 文本和图像&#xff0c;文本的语义信息映射成词向量&#xff0c;形成词典&#xff0c;嵌入到n维空间。 图片内容信息提取特征&…...

网站前端跟后端怎么做/镇江市网站

一、源码特点 asp.net 网上书店系统系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发,开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;或者以上版本都可以&#xff0c;使用c#语言开发。…...

兰州网站建设索王道下拉/seo优化网

最近做了一个很简单的微信小程序&#xff1a;GitHub Trending&#xff0c;很适合用于在做地铁、吃饭等零碎时间场景下去了解最新的 GitHub 热门项目&#xff0c;发现好项目。 项目地址 本项目完全开源&#xff0c;GitHub 地址 &#xff1a;https://github.com/jae-jae/weapp-gi…...

备案 网站首页url/磁力岛引擎

监控对于我们来说到底有多重要&#xff1f; 网络监控是企业IT运维中必不可少的重要一环&#xff0c;传统的监控工具以监控各个服务的健康和性能为中心。而随着数字化时代的到来&#xff0c;我们需要一个更加全面的监控视图&#xff0c;能够把不同环境下所有资源间的流量信息进行…...

长沙影楼网站建设/电商网站建设平台

引言&#xff1a; 一直都是从事客户端的开发工作&#xff0c;最近抽了点时间想了解一下服务器开发的相关知识&#xff0c;一番博客瞎逛之后&#xff0c;发现了一个不错的框架&#xff0c;云风大神的 skynet开源服务器框架&#xff0c;这不仅仅是针对于游戏服务器开发的框架&am…...

做网站毕业答辩问题/搜索自媒体平台

尽量用 props & onChange&#xff0c;不要用 ref 获取引用然后调用方法。详情参考我的文章&#xff1a;一等公民 props & onChangeReact 只是一个视图框架&#xff0c;请尽量在 Component 里只做他擅长的事情。尽量写无状态的 Component。视图以外的事情&#xff0c;比…...

网站速度慢的原因/免费推广的方式

有一段时间&#xff0c;我一直在思考什么是团队文化&#xff0c;包括几年前曾经被反复提及的工程师文化等等。 但我始终觉得文化和角色之间并没有那么强的关联关系&#xff0c;我觉得文化和人的性格的关联度更高一些。 如果从这个角度看的话&#xff0c;我觉得搞技术的大致可以…...