0X00 header 首先,git 是没有 header 这个命令的:) 平时经常会用到一些 git 的用法,也有遇到过别人来问怎么实现某某操作,但是都太零散了并不成体系,所以这里就简单整理一下不做分类了。希望对不小心通过 Google 搜到该文章的你有所帮助(不会的有人能搜到吧🤣) 0X01 pull 与 pull --rebase 首先是搞清楚 git pull 和 git pull --rebase 的区别,我们学 git 第一天肯定就学了 git push 是推代码,git pull 是拉代码,那么这个 git pull --rebase 又是个什么东西呢? git pull 本质上是 git fetch 加上 git merge 的功能,也就是说把代码拉到本地来再和本地代码进行一次 merge。这就意味着,如果出现冲突的话 git 会创建一个 Merge commit 来解决这个问题。 git pull --rebase 则是 git fetch 和 git rebase 的组合。使用的时候会先将本地比远端多出来的 commit…
0X00 前言 在这里介绍 Shell 脚本编程和日常的命令行操作中最常用的 9 个命令,希望对读到这篇文章的你有所帮助~ 这是一篇基础得不能再基础的内容,如果你看完还能有两三个收获的话,那就一起来恶补 Linux 知识吧🤣 0X01 cat cat 命令应该是学习 Linux 命令时候最早接触到的命令之一了,自然不用多说什么,这里只提一个用法:如何 cat 命令创建一个文件。例如在脚本中我们需要创建一个配置文件,当然可以把配置文件跟脚本文件放一起,然后 cp 过去,但是如果你想用一个文件搞定的话(这样在看脚本的时候就知道配置文件是什么内容了,看着舒服改起来也方便)就可以这么操作 这段命令写在 shell 脚本中就意味着会把两个 EOF 中间行的内容作为文件 cat 一下,再接上后面的重定向,就把它写入到 xxx.conf 中了。不仅可以在脚本中,直接写在命令行中也是可以的。当然也可以不带重定向使用。 这里有一篇阮一峰的文章在相对详细的介绍什么是 EOF。 需要注意的是 EOF 只是我们约定俗成的 Enf Of File 的缩写,你非要用别的表示也是可以的(比如你的文本中包含…
0X00 介绍 不管对 sudo 的了解具体有多少,至少应该都用过 sudo 命令来临时将自己的非 root 用户提权至 root 了吧。不过 sudo 当然不只是将用户变成 root 的这么一个简单工具了,虽然它确实是将用户临时变更为 root ,但是页还是有不少其他更加细致的配置与选项。 sudo 是 Linux 中的一个命令,用于以管理员身份执行命令。它允许普通用户在不切换到 root 用户的情况下执行需要特权的操作,从而提高了系统的安全性和可管理性。sudo 可以通过配置文件进行自定义,以控制哪些用户可以以何种方式执行哪些命令。同时,sudo 还可以记录用户的操作日志,以便系统管理员进行审计和监控。 还有一个需要注意的就是,sudo 本质上是一个应用,并非最基础系统的一部分,它比 Unix 晚诞生了有近 10 年。这也就意味着并不是所有的 Linux 发行版本都会自带这个程序(比如 minimal 模式安装的 Ubuntu Server 就是没有的),如果遇到这种情况还是需要自己手动安装一下,不过这种多人共用的操作系统中没有 sudo 的情况还是很罕见的。 0X01 修改配置…
0X00 简单介绍 想必看到这篇博客的各位肯定会经常工作在 Terminal 中吧,而且对自己稍微好一些的人应该也都会配置一下自己的终端环境,比较常见的就是 Linux 下装个 terminator 或者 macOS 下装一个 iTerm2 这种软件,然后再用 zsh 配合不同的主题和插件完善自己的体验。而且真正用过一段时间终端的人肯定都会有那种一个窗口不够用的情况,那么你可能要用到终端模拟器(terminator/iTerm2)的 tab 功能了,每次都额外开一个新 tab 出来,或者上下左右开始分屏了。 一切都很顺利,直到你开始频繁的连接到远端的服务器上去,然后发现自己习以为常的分屏和 tab 全都没有了,每次想再开一个远端的 shell 时都需要在本地开一个分屏然后重新 ssh 重新输密码,需要 sudo 的话还可能需要再重复一下密码。一次两次还好,次数多了肯定就麻了,这时候就是 tmux 大展身手的时候了~ tmux 本身是一个终端复用器,可以做到的功能包括终端横向纵向的分屏、多 tab 切换等等。 0X01 基本用法 要用 tmux 首先要有 tmux…
0X00 基本内容 你应该听人跟你说过类似于「你看 2333 这个端口在没在监听」这句话吧,也应该听过「我可以 ping 通所以肯定不是网络的问题」这种话吧。虽然听的多了,但实际上它漏洞百出。 首先我们都知道端口号是一个数字,从 0 到 65535 其中 0~2013 叫 well-known ports 知名端口,也就是说通常某个端口就固定给某个服务使用,比如你见到 22 就第一反应该是 ssh 而非 MySQL,见到 80 就知道是 HTTP 而非 smtp。也正是如此,在 Linux 中你自己开发的程序平时监听 8080 没啥问题,但是想监听 80 的时候就要校验你的 root 权限了。 其次要知道端口是 IP 地址上的,并非电脑上的。也就是说当你电脑同时拥有 192.168.2.123 和 192.168.2.234 两个 IP 的时候,你可以启动两个 Nginx 分别监听他们的 80 端口。 最后要知道端口也是分类型的,即使是同一地址的统一端口也可以 tcp 和 udp 分开监听,也就是说你可以同时监听: 0X01 如何检查…
0X00 介绍 奖杯系统这东西是从 PlayStation 上借鉴过来的,PlayStation 上每个游戏均会设置一些奖杯,当玩家达成奖杯对应条件的时候就会解锁该奖杯,从而给玩家的游玩过程以正反馈。XBox 上也有类似的成就系统,都是用来给玩家正反馈的。 我作为一个游戏玩家就很喜欢拿到奖杯的感觉,尤其是拿到了一个金杯、白金杯(虽然我还从来没拿过白金杯)然后看到只有百分之一的玩家得到了这个奖杯的时候。既然游戏制作人可以为游戏设置将被,那我们为什么不考虑把自己的人生作为一个游戏来给它设置一些奖杯呢~ 在开始之前要说明一下人生奖杯系统是什么又不是什么: * 奖杯系统是成就系统,不是代办清单 * 奖杯系统是自我激励和正向反馈的,不是用来给自己压力的 * 奖杯系统是非常个人化的,不是有最佳实践的 0X01 我的奖杯系统 先来给大家介绍一下我自己的奖杯系统,它是用 Notion 的数据库功能制作的。细心的朋友可以看出来我整个 Notion…
~~年度总结:今年摆烂,完了。~~ 0X00 开篇 不开玩笑,又到了一个年尾巴。本以今年会是轻松的一年,结果却是异常的艰辛😮💨 千算万算肯定是算不到 2022 年对生活影响最大的仍是疫情。本以为今年就彻底解决疫情了,但奈何天不遂人愿,一直到今天疫情仍然与你我密切相关。今年我核酸做了一两百次、居家办公一轮又一轮、收集了两个省的黄码、喜提了两周的铁皮围栏隔离,最后几天还是没顶住,至今仍在干咳。 接下来就简单整理一下今年发生过的值得记录下来的一些事情吧🎉 写完发现长度有点离谱,又尽力缩减了一些,有些实在是觉得写了不舍得删就继续留下了,这可能是我最长的一篇年终总结甚至是最长的一篇博客了。 0X01 生活 今年的生活过的比较普通,依旧没有发生什么惊天地泣鬼神的大事。不过人的一生又能经历几次大事呢?这些零零散散的小事情一件一件拼起来才是绝大多数人的生活吧。 智齿…
0X00 简单用法 内容比较少,主要是介绍一下 xargs ,直接开始吧~ 首先假定各位能够熟练运用基础的管道操作,能够理解 ps aux | grep nginx | awk -F ' ' {print $1} 这样的命令。 我们日常使用管道的时候肯定会用到 ls | grep xxx | grep xxx | rm 这样的操作,想从一堆文件里筛选出自己需要的文件并将其删除/移动/复制等。但其实这样的操作是不行的,因为前面管道传过来的是数据流但是 rm 命令却并不能处理它。如果想实现这种效果就可以用 xargs 将其进行转换了,如下图所示使用 ls | grep bbb | grep "[3-5]" | xargs rm 就可以完成任务。 此处 xargs 的功能就是将前面的数据流逐行分解并一个个丢给 rm 去执行。不过通常的管道都是一个命令执行一次,配合 xargs 之后就是做一个循环了,将管道前面的的输出逐行取出作为参数交给下一个命令去执行。我这里画了一个简易的图,也许能够便于理解。 其实如果只是找到文件并删除的话,还有更简单的方法啦,例如 find . -regex…
0X00 虚拟化 首先虚拟化 Virtualization 它是一种技术,通过软件技术虚拟一张网卡(例如 Linux Bridge)、虚拟一个磁盘分区(例如 vmdk 文件)甚至直接虚拟一整台电脑(例如 VMware/VirtualBox)出来都是虚拟化技术的实装。 虚拟机就是通过虚拟化技术虚拟了一整套电脑所需的硬件,例如CPU、内存、磁盘、网卡等等,然后将它们拼在一起就是一台虚拟机了。 0X01 容器 区分这些的重点就在容器 Container 这里了。最早接触容器的时候很多人都说简单理解成轻量化虚拟机,不需要开关机、不需要操作系统、甚至是秒级启动的。当时我就死活不理解,明明是虚拟机为啥不需要操作系统不需要开关机的呢,其实但凡当时多解释几句,也就不会有这种困扰了。 tips: 这里说的容器仅仅指代 Linux 容器 容器的本质是进程 。在 Linux 环境下创建一个进程,如果我们将它与其它进程隔离开,让它发现不了其它进程、再分配虚拟网卡、临时的文件系统等等等等,那它其实就是一个「容器」了。所以容器的本质是进程…
0X00 Linux 的进程关系 既然想搞清楚容器的单进程模型,那自然需要先复习一下 Linux 下的基本进程关系了。你说你用的是 Windows Container?不懂,不会,打扰了😢 我们知道 Linux 下会有一个 PID=1 的进程来带动其他进程,以前 PID=1 的进程是 init 后来大家都在用 systemd ,这里就不多说了,只来回顾一下「孤儿进程」和「僵尸进程」这两个概念。 这里来模拟一个场景,默认 PID=1 的是 systemd 1. 打开运行一个新进程 2. 新进程 fork 了一个子进程出来 3. 子进程持续运行 4. 此时父进程终止了 5. 子进程成为孤儿进程 (因为他的父进程挂了) 6. 该子进程会交由 systemd 接管 7. 当子进程结束之后 systemd 会替它「收尸」,也就是释放、回收资源之类的 还有另一个场景:某菜鸡程序员(可能是我)写了个程序,现在运行起来了。该进程会 fork 新进程,每隔一会儿就会 fork 一个,但是该进程并没有 wait/waitpid 这种操作(俗称管杀不管埋)。所以当子进程结束后资源并没有被回收,甚至…