第 22 期:先学会做人,再来做事
最后更新于
最后更新于
@Author : Lewis Tian (taseikyo@gmail.com)
@Link : github.com/taseikyo
@Range : 2021-03-28 - 2021-04-03
本文总字数 2352 个,阅读时长约:4 分 35 秒,统计数据来自:算筹字数统计。
*Photo by Justin W on Unsplash
替换文件中的某一行
当登录 Windows 时启动 WSL 后台服务
Ubuntu Temporary failure in name resolution DNS 解析问题
scp 拷贝目录丢失软链接的问题
先学会做人,再来做事
假设一个文件中有一行代码为 int output_length = 10;
,这是个 C 语言代码,我需要将其修改为 20、40、80 和 100,分别输出。
对于这一需求,用 Python 其实很简单,就是一个 find+replace 的做法,然后我试了下用 Bash Shell 脚本来处理,还花了一点时间处理(自找麻烦),那么下面对比一下代码:
1、首先是 Python 版本:
没实际运行过,大概就是这么个流程
2、Shell 版:
总结,有病。
由于我要使用 crontab 服务,结果发现并没有启动,我本来以为按照这个博客(解决 windows 子系统 wsl 下 crontab 无法开启的问题)就解决了。
实际上即使你把 "/etc/rsyslog.d/50-default.conf" 中 cron 的注释去掉,当 Windows 重启后,crontab 服务器还是没有自动启动,需要手动 sudo service cron start
,于是就搜了一下,发现这篇博客。
还有个类似的 CSDN 博客:(20210128 已解决)WSL2 开机启动 cron
主要步骤:
点我查看
1、将启动命令写入一个脚本
2、启用无密码 sudo
(小插曲,由于默认编辑器是 nano,我退出后直接 vim 编辑 /etc/sudoers 导致文件损害,然后重装了 Ubuntu 20.04,果然是不作死就不会死,明明 sudoers 文件开头注释写着 "# This file MUST be edited with the 'visudo' command as root.")
3、新建定时任务
任务计划程序库 --> 创建任务
常规:start_cron
触发器:新建 --> 登录时 --> 确定
操作:新建 --> 启动程序 --> 程序或脚本(C:/Windows/System32/bash.exe)>>参加参数(-c "sudo ~/start_cron.sh"
)
(当我在写这些的时候还没尝试过,仅仅按照步骤做了,后面再更新)
</details>
更新:
上述方法无效,然后在试另一个方法:https://askubuntu.com/a/1178910/1015648
该链接给出了两个方法:
Solution 1、使用 VBE 脚本:
进入 "C:/Users/%username%/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup"
新建 sshserver.vbe 脚本,写入以下内容:
对于我则是 start_cron.vbe:
我试着运行了 wsl -d Ubuntu20.04 -u root /home/tian/start_cron.sh
发现 cron 服务确实跑起来了,而使用上述 C:/Windows/System32/bash.exe -c "sudo ~/start_cron.sh"
则没用,由此看来应该是有用的。
Solution 2、同上面的计划任务,但是使用命令不同
命令:C:/Windows/System32/wsl.exe
,参数:-d Ubuntu -u root service ssh start
再更新,经过测试,Sol. 1 确实有效!
准确来说,这不是一个技巧,而是一个解决 bug 的方法,但还是记录一下,下次遇到直接解决。
上面的博客中,查了很多方法,跟我走过的路类似,差别是我最终还是通过这个博客解决的。
失败的过程就不讲了,解决方法是编辑 /etc/systemd/resolved.conf
,把 DNS 那一行解开注释,替换为 DNS=8.8.8.8
,然后重启就 OK 了。
这个我在去年就遇到过一次,今年又遇到了;
去年在遇到之后发现早就有人踩坑,且指明了方向:scp -r 拷贝目录(其中有软链)之坑------被 404 问题折腾一个晚上啊!!!,再谈软链接的 scp 拷贝,这位大哥给出的意见是不要用 scp -r
拷贝目录,先在 A 服务器上打包,然后 scp 到 B 服务器上;
话虽如此,但我遇到另一个问题,就是打包丢失文件的问题。
由于缺失头文件,而 g++ 编译输出的错误也不靠谱,说是其他头文件的定义问题,最后我才发现少东西了,绝了。
所以这里稍微做个拷贝目录的万全之策:
A 服务器打包目录(记录总文件数 A-num)
B 服务器解包目录,记录总文件数 B-num,比较 A-num 和 B-num
可选,比较两个目录所有文件的大小,看起来吓人,其实直接用 Python 脚本就搞定了,按顺序输出每个子目录(如果有)下每个文件的大小,然后 diff 就完了。
另外用 tar 打包/解包的简单命令(来自知乎:tar 命令,压缩/解压 .tar.xz 和 .tar.gz):
打包:tar caf foo.tar.xz *.txt
解包:tar xf foo.tar.xz
解释:
x 是解压,c 是压缩,f 后跟压缩包的路径
解压时压缩包的格式会自动识别
压缩时 tar.gz 用 z,tar.xz 用 J(注意大小写),根据后缀自动选择用 a,否则是普通的 tar
显示详细信息用 v,指定解压路径用 -C(这回有横杠了)
昨天跟同学去集锦园吃晚饭,回实验室路上突然说起校歌、、校花和校训的问题。
我就很喜欢华科的校训:明德厚学 求是创新
我的理解校训想让每个华科学子先明明德、知是非,再厚积薄发、推陈出新。记得舅舅也说过类似的话,不求做个多成功的人,至少做一个正直善良孝顺的人。
这其实适用所有人,如果人人都能明白(显然不可能),那么那句话(树多必有枯枝,人多必有白痴)就不会流传广泛了。
网上最近涌现了很多小丑(一直都有),吃着中国的饭,花着人民币(或许不是),替外国人说话;更有甚者,管不住自己的脑子(或许只是个空壳),在网上发表侮辱先烈的言论,比如:63岁男子在微信群辱骂烈士王伟 被北京警方刑事拘留,一把年纪,活到狗身上了。
一直很好奇这些上跳下窜的都是些什么妖魔鬼怪?