正见——佛陀的证悟(三)诸法无我 (选摘)
所有这些不同的情绪及其结果,都来自于错误的理解,而这个误解来自一个源头,也就是所有无明的根源—-执着于自我。
自我只是另一个误解。当我们看着自己的身体(色)、感受(受)、想法(想)、行为(行)和意识(识)的时候,我们通常制造出一种自我的概念。人们受制约,把这种概念视为恒常而且真实的。
但是悉达多了悟到,不论是在身体里或外,都找不到一个独立存在的实体,足以被称为自我。如同火圈的视觉错幻一般,自我也是虚幻的。它是谬误的;基本上错误,而究竟上不存在。但是如同我们被火圈所迷惑一般,我们也全都被自我所迷惑了,执着于谬误的自我,是无明的荒谬行为。它不断地制造更多的无明,导致了各种痛苦和失望。
无明单纯的就是不了解事实,或对事实了解不正确,或认识得不完整。所有这些形式的无明,都导致误解和误判,高估和低估。假设你正在寻找一个朋友,忽然看到他在远方的田野中。一走近,却发现你误把一个稻草人当做是他了。你一定会感到失望。这并非有个恶作剧的稻草人或你的朋友试图偷偷摸摸误导你,而是你自己的无明背叛了你。任何源自无明所做的行为,都是冒险。我们在不了解或不完全了解的情况下行动,就不会有信心。我们根本的不安全感因此而生起。创造出所有这些有名或无名、已知或未知的各种情绪。
悉达多了悟到自我并非独立存在、自我只不过是一个标签、因而执着于自我就是无明,这可能是人类历史上最大的发现。然而,虽然自我这个标签或许毫无根据,要摧毁它却不是一个简单的任务。执着于这个称作自我的标签,是所有的概念中最难以破除的。
魔罗只不过是悉达多的我执。故事中,描述魔罗是个英俊威武、无役不克的战士,这个比喻相当适切。自我,如同魔罗一般,威力强大且贪得无厌、自我中心且虚伪欺诈、贪求众人目光、机敏伶俐且爱慕虚荣。我们很难记住,自我如同火圈的幻相一般,是和合而成、不独立存在而且善于改变。
骄慢和自怜息息相关。我执纯粹是一种自我纵容,认为自己的生命比其他人的都更艰难更悲哀。当自我发展出自怜的时候,便让其它人生起悲悯的空间消失了。
虽然我们不认为自己这么绝望,而且相信自己是受过教育、正常、清醒的,但是当我们看见及感受一切都是真实存在时,我们的行为就如同那位沙漠中的迷失者。我们急切地想要找到真实的伴侣关系、安全感、表扬、成功,或只是安详宁静。我们甚至能抓到与欲望相似的东西。但就象那位迷失者,当我们依赖外在的实体性时,终究会失望。事物并不如其所显现—–它们是无常的,而且不完全在我们的掌控之中。
如果我们象悉达多一样确实地去分析,就会发现诸如形体、时间、空间、方向、大小等附加的标签,都很容易被解构。悉达多了悟到,甚至自我都只存在于相对的层次,恰如海市蜃楼一般。他的体悟,终止了期待、失望与痛苦的循环。在证悟的时刻,他自忖,我已找到了一条深奥、安详、非极端、清晰、满愿又有如甘露一般之道。然而,如果我想表达它,如果我想教给他人,没有人有能力听闻了解。因此我将留在林中,安住于此祥和状态之中。
然而,悉达多并非不理性,他只是明确地指出一般的、理性的思惟是有限的。我们不能,或不愿超越我们自己的舒适区去了解。用昨日、今日、明日这种线性的概念来操作,比如说“时间是相对的”,来得实用得多。我们没有被设定成这么想的:我能不改变大小或形状而进入那牦牛角。我们不能破除大和小的概念;相反的,我们一直被世代传下来的安全而狭隘的观点所局限。然而,当这些观点被审视时,却都站不住脚。举例来说,这个世界如此依赖的线性时间观念,无法说明时间没有真正的起始也没有终止的事实。
因此当我们听到一个人不改变尺寸,就可容入牦牛角中时,我们没有太多选择—–我们可以很“理性”,认为这根本不可能而驳斥它;或者我们引用某种对法术的神秘信仰或盲目崇拜而说,当然,密勒日巴是多么伟大的瑜珈行者,当然他能这么做,甚至还不只是这些呢。这两种见解都是扭曲的,因为否认是一种低估,而盲信则是一种高估。
一条河,水在流,永远在变,然而我们仍然称它为河流。如果一年之后我们再度造访,会认为它是同一条河。但它是如何相同的呢?如果我们单独挑出一个面向或特性,这相同性就不成立了。水不同了,地球在银河中转动的位置也不同了,树叶已落,新叶又长出来了—-剩下的只是一个相似于我们上次见到的河流表象而已。以“表象”作为“真实”的基础是相当不可靠的。经由简单的分析,就能显示出我们一般对所谓真实的基础,都只是一些模糊的概括和假设。虽然悉达多也使用一般人定义“真实”时所用的字眼—-非想象的、确定的、不改变的、无条件的—-但他更精确地使用这些字眼,而非概括性的。在他的观点上,不改变必然意指在所有的方面都不改变,甚至经过彻底的分析后,仍然绝无例外。
悉达多发现,要确定某个东西真实存在的唯一办法,就是证明它独立存在,而且不需要诠释、不能造作或不会改变。对悉达多而言,我们日常生活上一切似乎能作用的机制,不论是身体的、情感的及概念的,都是由不稳固、不恒常的部分所聚合而成,因此它们随时都在改变。我们可以在惯常的世界中了解这个论点。举例来说,你可以说你在镜中反射的影像不是真实存在的,因为他需要依赖你站在镜子前面才行。类似的,事物要真实或独立地存在,就不能被制作或被创造的,因为这要依赖制造者。
许多对佛陀的教法不甚了解的人,认为佛教是病态的,他们认为佛教徒否定快乐,只想到痛苦。他们设想佛教徒排斥美丽及身体的享受,因为这些是诱惑;佛教徒应该是纯净而节制的。事实上,在悉达多的教法中,并不特别反对美丽和享乐甚于其它的任何概念--只要我们不认为它们是真实存在的,而迷失其中。
虽然悉达多证悟了空性,但空性并不是由他或任何人所制造的。空性不是悉达多获得天启的结果,也不是为了让人们快乐所发展出来的理论。不论悉达多开示与否,空性即是如此。我们甚至不能说它一直都是如此,因为它超越时间,而且不具形式。空性也不应被解释为存在的否定(也就是说,我们不能说这个相对的世界不存在),因为要否定某个事物,你就要先承认有某个东西可以被否定才行。空性也不会消除我们日常的经验。悉达多从来没说过有什么可以取代我们所觉受的更壮丽、更美好、更纯粹或更神圣的东西。他也不是虚无主义者,否定世间存在事物的显现与功能。
悉达多会同意这两种情况--当你醒着时,你不能飞;而当你睡着时,你能飞。这道理是在于因缘是否具足;要能飞翔的一个缘,是睡眠。当你没有它,你就不能飞,有了它,你就能飞。假设你梦见你能飞,而醒来后还继续相信你能飞,那就麻烦了。你会掉下来,而且会失望。悉达多说,即使在相对世界中醒着,我们还是在无明中沉睡,如同在他出走那夜的宫女一般。恰当的因缘聚合时,任何事情都可能出现。但当因缘消散,显现也就停止。
这也是为何在悉达多教法一千五百年后,一位叫帝洛巴的佛法继承者,对他的学生那洛巴说,不是显现(外相)困住了你,而是你对显现(外相)的执着困住了你。
如同环球小姐选美一样,在这个世界上,我们所做、所想的任何事物,都有是基于一个非常有限的共同逻辑系统。我们非常强调共识。如果大多数人同意某件事物是真实的,通常它就变成正当有效的。当我们看着一个小池塘,我们人类认为它只是个池塘,但对池里的鱼儿来说,这是它们的宇宙。如果我们采取民主的立场,那么水中族群一定会赢,历为它们比我们这些观池塘者为数多得多。多数决不见得永远都对。糟糕的大卖座影片可以赚得大量的利润,而一部独立制作的优秀影片却只有少数人观赏。而且由于我们依赖群体思考,这世界通常是被最短视而腐败的统治者所治理;民主制度只是诉诸于最小公约数而已。
然而了悟不必是致命的。我们不需要象井蛙一般,面对空性惊吓而亡。如果海蛙能够有稍微多点的慈悲心和善巧,也许它可以做一个更好的向导,井蛙也不至于吓死,也许它还会移居到海边也说不定。而我们也不需要有超自然的天赋才能了解空性。这和教育以及愿意观察事物所有的部分以及隐藏的因缘有关。有了这种洞见,我们就会象布景设计师或摄影助理在看电影。专业者能看见我们所看不见的东西。他们看见摄影机如何布置,以及其他观众们不知道的电影技巧,因此对他们而言,这幻相被拆解了。但专业者在看电影的时候,还是可以尽情享受。这就是悉达多超然的幽默。
悉达多没有一开始就用空性来惊吓大家,反而以一般的方式,诸如禅定以及行为规范--做正确的事、勿盗窃、勿妄言等来教导众多的弟子。根据弟子的本性,他定下了不同程度的出离及苦行,从削发到不食肉等等。对一开始无法听闻或了解空性的人,以及天性适合苦修的人而言,这些状似宗教性的严格道路很有效。
业(Karma)这个字几乎和佛教成了同义字。通常它被理解为一种道德系统的报应—-恶业与善业。然而,业只是一种因果的法则,不应该与道德或伦理混淆。
你也行会认为这是矛盾的。佛陀自我矛盾,说他不存在,一切皆是空性,然后他又教导了道德和救赎。然而这些方法是必要的,以免吓走那些尚未准备好,还不能被引介空性的人。他们用了这些方法,因而变得祥和,易于接受真正的教法,这就如同说那里是有一条蛇。然后把领带丢到窗外一般。这些无限的方法就是道路。然而,道路本身终究也需要被抛弃,如同你抵达彼岸时,就得抛弃舟一般。你抵达时必须要下船。在完全证悟的那一刻,你必须抛弃佛教。精神之路是一个暂时解答,它是在空性被了悟之前所使用的安慰剂。
如同在电影院里的孩童,我们被幻相掳获了。从这儿开始,衍生了我们的虚荣、野心和不安全感。我们爱上了自己创造的幻相,发展出对自己的外表、财富和成就过度的骄慢。好比戴了面具,却骄傲地认为面具是真实的你。
了悟空性的悉达多,对菩提树下的忘忧草或宫殿里的丝绸坐垫没有好恶分别。金线织成的坐垫价值较高,完全是由人类的野心和欲望造作而来的。事实上,山中的隐士也许会觉得忘忧草比较柔软而干净,而且最大的好外是坐坏了也不需要担心。你不需要对它喷药,以免猫用爪子去抓它。宫廷生活充满了这类的“珍品”,需要相当多的维修保养。悉达多是属于比较喜欢草垫的人,因此他不需要常常回家去补充什么东西。
我们人类认为心胸宽广是一种美德。要扩展心胸,重要的是不要安于令我们舒适或习惯的东西。如果我们有勇气超越世俗,不被惯常逻辑的界线所限制,就能得到利益。如果我们能超越界线,就能了解空性是如此可笑地单纯。密勒日巴躲进牦牛角不会比某个人戴上手套还令你讶异。我们所要挑战的,是对惯常逻辑、文法、字母、数学公式的执着。如果能记得这些习惯的和合本性,我们就能断除它们。它们不是不能破除的,所需要的只是一个条件完全正确、资讯适时到位的情况,你可能突然发现所有依赖的工具都不是那么坚实,它们有弹性、可弯曲。你的观点会改变。
正见——佛陀的证悟(二)诸漏皆苦(选摘)
悉达多没有继续前行,决定留在当地禅修。他在附近的一棵毕钵罗树下找到一块平坦的石头,铺上吉祥草当坐垫。他静默地立下誓言,此身可烂,我可能化为尘土。但直到找到答案,我绝不起身(我今若不证,无上大菩提,宁可碎此身,终不起此座)。
问一个佛教徒“什么是人生的目的?”是不恰当的。因为这个问题暗喻在某一个地方,也许在一个洞穴之中或者在一人山岭之上,存在着一个究竟的目的。仿佛我们可以透过追随圣者,阅读书籍以及熟悉秘教修行,来解开这个秘密。如果这问题是假设在亿万年以前,有某个人或神设计了一个人生目的图表,那么它就是一个有神论的观点。佛教徒不相信有个全能的创造者,而且他们不信为生命的目的已经、或需被决定和定义。
即使在个人身上,痛苦和快乐的定义也时有变动。一个轻佻的调情时刻,可能因为其中一个人想要更认真的关系而突然变调,期待转为恐惧。当你是个小孩的时候,在沙滩上堆筑沙堡就是快乐。在青少年时期,看着穿比基尼的女孩,和赤裸上身的男孩冲浪是快乐。在中年,金钱和事业是快乐。当你八十多岁的时候,收集陶瓷盐罐是快乐。对许多人而言,不断调适于这些无尽而又经常变化的快乐定义,即是“人生的目的”。
我们人类在追求快乐、止息痛苦上,用尽了无数的方法和工具,远超过任何其它的嗜好和职业。因此我们拥有电梯、笔记型电脑、充电电池、电动洗碗机、自动弹出完美土司的烤面包机、狗粪吸尘器、电动鼻毛修剪器、温热坐垫马桶、奴佛卡因麻醉药( Novocaine)、行动电话、威而刚、整铺地毯子……,然而不可避免的,这些便捷也制造了等量的头痛。
悉达多当时也是在试图根除痛苦。但他不是梦想着诸如展开政治改革、移民到另一个星球或创造世界新经济;他甚至没有想到要创造一个宗教,或发展一套能带来安详与和谐的行为准则。他以开放的心灵来探索痛苦,透过勤奋不懈的沉思,悉达多发现,追本溯源,导致痛苦的是人的情绪。事实上上,情绪即是痛苦。不论如何,直接或间接的,一切情绪都是生于自私,也就是说,它们都与执着于自我有关。更进一步的,他也发现,情绪虽然看似真实,但不是一个人本具存在的一部分。它们不是与生俱来的,也不是某个人或某个神强加在我们身上的诅咒或植入。当某些特定的因与缘聚合在一起的时候,情绪就会生起,例如当你突然认为某个人在批评你、忽视你,或者剥夺你的利益时。然后,相对应的情绪就会接着生起,在接受、陷入这些情绪的当下,我们就失去了觉知和清明。我们“被鼓动”了。因此悉达多发现他的解决方法—-觉知。如果你认真地想要根除痛苦,你必须培养觉知,留心你的情绪,并且学会如何避免被鼓动起来。
如果你像悉达多一样地检视情绪,试图找出它们的起源,你将会发现它们根植于误解,因此根本上是错误的。基本上,所有的情绪都是一种偏见,在每一种情绪之中,都存在有分别心的成分。
看透了宫廷生活的表象,悉达多现在能够看见自己的身体是不具本质的。在他的眼中,火圈和身体具有相同的本性。如果有人相信其中之一真实存在—-不论是短暂的或恒常的——那么他的信念就是根源于误解;如此,便是失去了觉察,也就是佛教徒所说的无明。我们的情绪,就是从这无明所生起。从失去了觉察到情绪生起的过程,可以用四真谛完全解释。我们接下来会谈到。
魔罗想要争取更多追随者,因而聪明地鼓吹自由,但是如果有人真的行使自由,他不一定会喜欢。基本上,我们只想要让自己,而不想让他人拥有自由。难怪,我们真的行使所有的自由,就不会被邀请去参加任何派对了。
悉达多的解答是—-培养对情绪的觉察。如果情绪正在起的时候,你能够有所觉察,即使只是一点点,不能够限制它们的活动;它们变成象有监护人在旁的青少年。有人在监视着,魔罗的力量就会减弱。悉达多没有被毒箭所伤,因为他觉察到这些只不过是幻相。同样的,我们自己强大的情绪,也可以变成象花瓣一般地不具杀伤力。当天女接近悉达多的时候,他清楚地了解,她们如同火圈,只是和合而成的,因此她们失去了诱惑力,无法动他一丝一毫。同样的,只要了解我们所欲求的对象事实上是和合而成的现象,就能破除诱惑的魔咒。
当你开始注意到情绪所能够造成的损害,觉知就会开始发展。当你有了觉知—-举例来说,如果你知道自己正站在悬崖上行走不再那么恐怖,事实上,它反而是非常刺激的。不知才是恐惧的真正根源。觉知不会妨碍你的生活,反而让生命更加充实。如果你在享用一杯茶,而且了解短暂事物的甘与苦,你将能够真正的享受那杯茶。
EBS 性能优化笔记
EBS性能优化Agenda
磁盘调优方法论
常用的磁盘调优方法
磁盘压测工具
磁盘性能检测工具
目前比较常用的是 GP3。
方法论应用程序 –》 操作系统 –》 虚拟机 –》 EBS 服务器
应用程序IO请求下发的路径。
三个方向, iops, 带宽, 延迟,按照这三个方面来观察这个EBS本身的性能。
使用新版本的内核:
3.8 以上内核使用的Indirect descriptors
突破 I/O size 44kiB限制, 可以一次请求下发 128KiB的IO大小。
建议使用 amazonlinux 2023 (悲
uname -r 查看内核的版本。
使用 Raid0使用 Raid0 可以提高带宽, 并且节省成本。
能更换磁盘类型达到性能, 可以使用Raid0
不建议在EBS 做 Raid1 5 6 三种, 校验的方式会降低性能。
推荐使用 mdadm , 不一定要用LVM。
关注队列长度SSD: 每 1000iops 队列长度是 1 , SSD是合适的吧
观察队列长度, 如果能达到 IOPS 的情况下, 队列越低越好。
HDD: 1MiB的IOsize , 建议的队列长度 4
降低io队列的方法,取决于发送IO的速度和线程数量。 或者提高磁盘的IOPS
HDD吞吐量设计增加预读取大小For st1/sc1.
blockdev --report /dev/nvme1n1 # 查看块设备的参数
blockdev --setra 2048 /dev/nvme1n1 # 设置块设备预读取数据量的大小
blockdev --getra /dev/nvme1n1 # 查看参数是否生效。
这个部分是为了增加吞吐量而在Read的同时将后面的一部分数据读取进入内存, 这样可以提高顺序读取的效率, 提高读取的效率, 让顺序读取的业务数据提前进入内存。
使用 Nitro 架构实例
之前使用zen的时候有一个Dom0来进行实例的管理。 nitro 做成 Hardware, nitro 管理VPC等等等, 尽可能把 X86 过度给客户来使用。
Refer to: https://zhuanlan.zhihu.com/p/270522703
开启EBS优化选项。 非优化的场景下,会与网络请求共享带宽, EBS优化这个功能单独隔离了EBS的网络请求。
使用正确的实例类型关注实例的限制, 例如实例的上限是 14000 , 那么实例使用EBS的瓶颈不在磁盘本身, 在实例的性能上限。
压测工具
dd
hdparm
sysbench
iometer
iozone
推荐使用的工具是 :fiofio项目文档
ebs设置默认的 Block Size是 16k , 其他厂商可能是 4k 的。 这个部分可能会在测试的时候造成差异。关于 fio 几个参数的测试, 这是我找到测试最完整的一个:
探索fio参数
测试命令#!/bin/bash
# 这个命令的运行结果是, 一个 job 在 iodepth 为 1 的时候, 写入与底层一样的块大小,在iostat 中可以看到 avgqu-zs 的大小是 1。
# 添加一个process之后, 队列的size 变成了2 ; 添加一个 iodepth 之后, 队列的大小为 1 ~ 2 之间。
# 大佬认为内核的蓄流将请求合并了, 所以没有造成对应的压力。
fio --directory=/mnt --name fio_test_file --ioengine=libaio --direct=1 --rw=read --rate_iops=1 --bs=16k --size=200M --iodepth=1 --numjobs=1 --time_based --runtime=600 --group_reporting --norandommap
perf record -g result (libaio):
fio 319375 86964.196578: 250000 cpu-clock:pppH:
ffffffff88355470 put_dec+0x0 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff8835584b number+0x33b (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff8835ac9d vsnprintf+0x44d (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff8835afe2 sprintf+0x62 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87efc94c dev_show+0x2c (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87efbc6c dev_attr_show+0x1c (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87abac9b sysfs_kf_seq_show+0xab (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87a2a7a3 seq_read_iter+0x123 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff879f4c06 vfs_read+0x1f6 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff879f59ff ksys_read+0x6f (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff88364360 do_syscall_64+0x60 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff884000f3 entry_SYSCALL_64+0xb3 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
103fdc read+0x4c (/usr/lib/libc.so.6)
0 [unknown] ([unknown])
perf record -g result (psync):
fio 324148 87167.271746: 250000 cpu-clock:pppH:
ffffffff8835480c strlen+0xc (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87a2990b seq_puts+0x1b (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87aa94ee render_sigset_t+0x1e (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87aa9c96 proc_pid_status+0x716 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87aa1e34 proc_single_show+0x54 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87a2a7a3 seq_read_iter+0x123 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff87a2abe4 seq_read+0xd4 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff879f4abc vfs_read+0xac (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff879f59ff ksys_read+0x6f (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff88364360 do_syscall_64+0x60 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
ffffffff884000f3 entry_SYSCALL_64+0xb3 (/lib/modules/6.4.10-arch1-1/build/vmlinux)
103fa1 read+0x11 (/usr/lib/libc.so.6)
0 [unknown] ([unknown])
Psync Vs Libaiolibaio 用来提供较高的iops测试, 异步 io 的优势psync 用来提供延迟的基准, 延迟敏感的测试或者 同步IO 的测试可以使用 psync.
观测可以直接使用这个命令来观察磁盘的使用情况, 磁盘的使用率其实并不太准确,这个表示单位时间内cpu时间被io请求占用的时间。个别的 10ms 之上的IO请求的长尾现象是正常的, 这个无法避免。
关于长尾现象的说明:
长尾请求一般是指明显高于均值的那部分占比较小的请求。 业界关于延迟有一个常用的P99标准, 也就是99%的请求延迟要满足在一定耗时以内, 1%的请求会大于这个耗时, 而这1%就可以认为是长尾请求。
Refer to: https://zhuanlan.zhihu.com/p/35516682
X11 通过 ssh 转发图形化界面
Ssh 转发 X11sudo yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1 xclock
vim /etc/ssh/sshd_config
X11Forwarding yes
X11UseLocalhost no
运行图形化的命令 , 自动捕获请求, 查看mobexterm是否已经正常的启动了一个临时的窗口来进行数据的转发即可 。
Ssh 转发连接到远端ssh -L local-port:target-host:target-port tunnel-host
ssh -vvv -f -N -D 0.0.0.0:30890 hayden@localhost
Ssh 转发命令参数说明-L listen-port:host:port 指派本地的 port 到达端机器地址上的 port
建立本地SSH隧道(本地客户端建立监听端口)
将本地机(客户机)的某个端口转发到远端指定机器的指定端口.
-R listen-port:host:port 指派远程上的 port 到本地地址上的 port
建立远程SSH隧道(隧道服务端建立监听端口)
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口.
-D port 指定一个本地机器 "动态的" 应用程序端口转发.
rime的配置
https://github.com/iDvel/rime-ice
https://rime.im/
小狼毫输入法, 或者Fcitx5 挂载 rime 即可。
后面如果还有输入法相关的内容会放在这个里面。
小鹤双拼> cat ./default.custom.yaml
patch:
schema_list:
- schema: double_pinyin_flypy # 小鹤双拼
ascii_composer:
good_old_caps_lock: true # true | false
switch_key:
Caps_Lock: clear # commit_code | commit_text | clear
Shift_L: noop # commit_code | commit_text | inline_ascii | clear | noop
Shift_R: noop # commit_code | commit_text | inline_ascii | clear | noop
Control_L: noop # commit_code | commit_text | inline_ascii | clear | noop
Control_R: noop # commit_code | commit_text | inline_ascii | clear | noop
输入法默认不切换全半角> cat ./default.custom.yaml
patch:
switches:
- name: ascii_mode
states: [ 中 ]
reset: 0
- name: ascii_punct # 中英标点
states: [ ¥, $ ]
reset: 0
- name: traditionalization
states: [ 简, 繁 ]
reset: 1
- name: emoji
states: [ 💀, 😄 ]
reset: 1
- name: full_shape
states: [ 半角, 全角 ]
reset: 0
serviceAccount 获取 Token 以及权限的方式
手动获取Token 并发送请求给容器接口。
/var/run/secrets/kubernetes.io/serviceaccount $ pwd
/var/run/secrets/kubernetes.io/serviceaccount $ cat ./token
eyJhbGciOiJSUzI1NiIsImtpZCI6ImE3N2JhOGMwY2FjYWEwNDk0MWU4MWM0ODk1Y2JiZjBiOTU2NTA1OTYifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjIl0sImV4cCI6MTcyMTk3ODkxOCwiaWF0IjoxNjkwNDQyOTE4LCJpc3MiOiJodHRwczovL29pZGMuZWtzLmNuLW5vcnRoLTEuYW1hem9uYXdzLmNvbS5jbi9pZC9DMEE5NzJGNERCMThBOTMxN0RBMzk0Q0MwRDMzMjU3RiIsImt1YmVybmV0ZXMuaW8iOnsibmFtZXNwYWNlIjoibW9uaXRvcmluZyIsInBvZCI6eyJuYW1lIjoicHJvbWV0aGV1cy1rOHMtMCIsInVpZCI6ImE4YzdkMGY2LWUyMmEtNGY2Ny04NzYzLWNiNGQwYzM5MWFlMCJ9LCJzZXJ2aWNlYWNjb3VudCI6eyJuYW1lIjoicHJvbWV0aGV1cy1rOHMiLCJ1aWQiOiJmN2M3YWMzZC1iZmY4LTRmODctYTlkNy04MjJjYWM4ZDVjMjkifSwid2FybmFmdGVyIjoxNjkwNDQ2NTI1fSwibmJmIjoxNjkwNDQyOTE4LCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6bW9uaXRvcmluZzpwcm9tZXRoZXVzLWs4cyJ9.D3a7b93ZnBrmM-hjFrklce8upr8gUhUYYwmjGzZKOKb4EWUCoQXY1p197UoViUmYzbiOhchbehKosFcOjiL2GVGXqDRIXPmFU9p8l80Z9fuilB2TmexB6uBavuEF6blKHkH0VjyVQ3Kg39WzjD0Atrw-G6N4QZ_m0TOcKFfqRPebbH-Q-vzz5UuNPUYRKF4XZIT84QqYLYiBOkkeFIS_abo18YddMbn2AZQcbWamxQV2XPXjNKKwHeQvP1Xdr4hZLt0oGudE2XZtQp60ZCrfDmQteh-KhMWRvsZpoNvE4n8HieAhTTrFq_TjjX9IHlXrPmcONAkQ33jVgRIaw_r_0g
export TOKEN="Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImE3N2JhOGMwY2FjYWEwNDk0MWU4MWM0ODk1Y2JiZjBiOTU2NTA1OTYifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjIl0sImV4cCI6MTcyMTk3ODkxOCwiaWF0IjoxNjkwNDQyOTE4LCJpc3MiOiJodHRwczovL29pZGMuZWtzLmNuLW5vcnRoLTEuYW1hem9uYXdzLmNvbS5jbi9pZC9DMEE5NzJGNERCMThBOTMxN0RBMzk0Q0MwRDMzMjU3RiIsImt1YmVybmV0ZXMuaW8iOnsibmFtZXNwYWNlIjoibW9uaXRvcmluZyIsInBvZCI6eyJuYW1lIjoicHJvbWV0aGV1cy1rOHMtMCIsInVpZCI6ImE4YzdkMGY2LWUyMmEtNGY2Ny04NzYzLWNiNGQwYzM5MWFlMCJ9LCJzZXJ2aWNlYWNjb3VudCI6eyJuYW1lIjoicHJvbWV0aGV1cy1rOHMiLCJ1aWQiOiJmN2M3YWMzZC1iZmY4LTRmODctYTlkNy04MjJjYWM4ZDVjMjkifSwid2FybmFmdGVyIjoxNjkwNDQ2NTI1fSwibmJmIjoxNjkwNDQyOTE4LCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6bW9uaXRvcmluZzpwcm9tZXRoZXVzLWs4cyJ9.D3a7b93ZnBrmM-hjFrklce8upr8gUhUYYwmjGzZKOKb4EWUCoQXY1p197UoViUmYzbiOhchbehKosFcOjiL2GVGXqDRIXPmFU9p8l80Z9fuilB2TmexB6uBavuEF6blKHkH0VjyVQ3Kg39WzjD0Atrw-G6N4QZ_m0TOcKFfqRPebbH-Q-vzz5UuNPUYRKF4XZIT84QqYLYiBOkkeFIS_abo18YddMbn2AZQcbWamxQV2XPXjNKKwHeQvP1Xdr4hZLt0oGudE2XZtQp60ZCrfDmQteh-KhMWRvsZpoNvE4n8HieAhTTrFq_TjjX9IHlXrPmcONAkQ33jVgRIaw_r_0g"
curl -k -H "$TOKEN" https://127.0.0.1:10250/metrics
Neovim 全 Lua 配置
写这个是为了记录一下我新的VIM配置和VIM的快捷键,看起来lua的版本比之前的scripts要好的多, 无论是使用的方式还是启动的速度, 都比之前快。
我的需求:
打开代码, 会显示代码高亮。
vim可以默认满足的要求, 尽可能少的使用鼠标。
代码错误提示 LSP , 挂了Language Server. ( Already Config, but not work. Thinking About this.
主题, 目前使用的是 catppuccin-frappe
Markdown Preview ( Pending….
代码补全(Already Done.
我的快捷键清单:
Mappings
Actions
<Leader-1>
高亮第 1 列, 高亮列, 首字母缩进检查
<Leader-2>
高亮第 3 列, 高亮列, 双空格缩进检查
<Leader-3>
高亮第 5 列, 高亮列, 4空格缩进检查
<Leader-4>
高亮第 9 列, 高亮列, 8空格缩进检查
<Leader-a>
搭配Visual block mode 进行bash shell 的注释,行首添加#
<Leader-x>
同上,删除注释。
<Leader-r>
KubeApply (Fixed, Ready to use.)
<Leader-e>
KubeDelete (Fixed, Ready to use.)
<Leader-dr>
KubeApplyDIr (Fixed, Ready to use.)
<Leader-de>
KubeDeleteDir (Fixed, Ready to use.)
<Leader-ff>
Telescope Find FIles 查找文件
<Leader-fg>
Telescope Find Live grep 过滤文件中的关键字
<Leader-fb>
Telescope Find Buffer 查看Buffer中的数据。VIMbuffer
<Leader-fh>
Telescope Find Help( Maybe not use, Just record
<Leader-ps>
This is Alias for :PackerSync.
<Leader-ms>
This is Alias for :Mason.
<C-n>
Telescope PageDown 在Insert模式下面的上下移动。
<C-p>
Telescope PageUp 在Insert模式下面的上下移动。
<j / k>
Telescope NORMAL Up/Down Normal模式下的上下移动。
<C-x>
Telescope Go to file selection as a split 找到的文件直接水平开新窗口(下方
<C-v>
Telescope Go to file selection as a vsplit 找到的文件直接垂直开新窗口(右侧
<C-t>
Telescope Go to a file in a new tab 找到的文件开新的VIM tab, 感觉不是非常的好用,垂直会经常被用到。
<C-/>
Telescope Show mappings for picker actions (insert mode) 帮助
?
Telescope Show mappings for picker actions (normal mode) 帮助
<M-f>
Scroll left in results window
<M-b>
Scroll right in results window
其他的还在配置和学习中, 先这样把。。 之前用的功能不太多, 有时间继续看。。。。
About NerdFonts.Nerd 类型的字体实际代表了 带有Icon字符集的字体。https://www.nerdfonts.com/#home
其他技巧
不换行显示文本或者代码
set nowrap
直接grep文本的内容并替换当前buffer中的内容.是的,当前打开的文件在VIM里面其实是叫buffer, 因为并未完成实际的写入。
:%! grep KEYWORD
粘贴的时候保留格式。
set paste
set nopaste
或者是关闭autoindent
set ai
set noai
压缩多个空格为一个
:%s@ *@ @g
替换所有的空格 为 tab
:% s@ @\t@g
Linux 路由表以及多网卡路由策略
在EC2实例中, 可以使用多个不同的网卡, 但是虚拟网卡其实是共享实例整体带宽的。 假如EC2实例本身有10Gbps的带宽, 那么无论多少个网卡都应该只能有10Gbps的带宽, 其实添加了多个也不会扩展网络容量上限。但是某些大规格的实例会有这种情况, 需要添加多个网卡,并且底层提供了多个NetworkCard。 这种情况少见, 但是确实有。如果是物理的机器, 那么最好的办法就是链路聚合, 将多个网卡合并使用来扩充这个物理服务器的网络能力。
环境一台ec2 , 三张网卡, OS是 Ubuntu 18.04 , 三张网卡分别是 ens5 ens6 ens7 , 实例中命令展示网卡如下 :
root@ip-172-31-43-121:~# ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
link/ether 02:4d:73:35:16:8a brd ff:ff:ff:ff:ff:ff
inet 172.31.43.121/20 brd 172.31.47.255 scope global dynamic ens5
valid_lft 1957sec preferred_lft 1957sec
3: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
link/ether 02:5d:02:b4:37:fa brd ff:ff:ff:ff:ff:ff
inet 172.31.37.95/20 brd 172.31.47.255 scope global dynamic ens6
valid_lft 1955sec preferred_lft 1955sec
4: ens7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
link/ether 02:cf:10:d8:12:80 brd ff:ff:ff:ff:ff:ff
inet 172.31.40.130/20 brd 172.31.47.255 scope global dynamic ens7
valid_lft 1956sec preferred_lft 1956sec
三张网卡中, ens5 上面有一个公网 ip 地址的绑定, 操作系统看不到, 但是 ens5 能找到公网IP地址, 其他网卡都不能。 弹性IP地址 以及 VPC 寻址 就是这么做的。
多网卡路由策略配置多网卡的情况下,手动配置了所有网卡的路由策略之后,公网访问没了, 看看 ip route show:查看路由表:
root@ip-172-31-43-121:~# ip r s
default via 172.31.32.1 dev ens7 proto dhcp src 172.31.40.130 metric 100
default via 172.31.32.1 dev ens6 proto dhcp src 172.31.37.95 metric 100
default via 172.31.32.1 dev ens5 proto dhcp src 172.31.43.121 metric 100
172.31.32.0/20 dev ens7 proto kernel scope link src 172.31.40.130
172.31.32.0/20 dev ens6 proto kernel scope link src 172.31.37.95
172.31.32.0/20 dev ens5 proto kernel scope link src 172.31.43.121
172.31.32.1 dev ens7 proto dhcp scope link src 172.31.40.130 metric 100
172.31.32.1 dev ens6 proto dhcp scope link src 172.31.37.95 metric 100
172.31.32.1 dev ens5 proto dhcp scope link src 172.31.43.121 metric 100
ip route show 命令显示的是系统路由表,也就是记录了目的网络和下一跳地址的信息的路由表。它的每个字段的含义是:
default 表示这个路由项是一个默认路由,也就是当没有匹配目的地址的路由项时,就使用这个路由项来发送数据包。
via 表示这个路由项的下一跳地址,也就是数据包要经过的网关地址。
dev 表示这个路由项对应的网卡设备名称,例如 lo, eth0, ens5 等。
proto 表示这个路由项的协议来源,例如 kernel, static, dhcp 等。
src 表示这个路由项的源地址,也就是本机发送数据包时使用的IP地址。
metric 表示这个路由项的度量值,也就是到达目的网络所需的跳数或开销。
这里面显示 我有三个默认路由, 他们的权重是一样的, 那么按照通常的逻辑, 哪个条目在靠前就会把数据包交给谁, 这时候问题出现了。如果我的主网卡上面有公网IP地址, 这时候我去访问公网例如 baidu, 会发现这个数据是出不去的, 因为默认匹配了第一个条目之后,数据从 ens7 这个没有公网ip地址绑定的网卡走了。
抓包验证一下:测试一下, 直接开一个Ping命令在后台, ping www.baidu.com , 另一个窗口开 tcpdump -i any icmp看结果。
root@ip-172-31-43-121:~# ping www.baidu.com &
root@ip-172-31-43-121:~# tcpdump -nni any icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
14:49:31.480896 IP 172.31.40.130 > 39.156.66.14: ICMP echo request, id 15074, seq 12, length 64
14:49:32.504867 IP 172.31.40.130 > 39.156.66.14: ICMP echo request, id 15074, seq 13, length 64
14:49:33.528873 IP 172.31.40.130 > 39.156.66.14: ICMP echo request, id 15074, seq 14, length 64
14:49:34.552872 IP 172.31.40.130 > 39.156.66.14: ICMP echo request, id 15074, seq 15, length 64
14:49:35.576877 IP 172.31.40.130 > 39.156.66.14: ICMP echo request, id 15074, seq 16, length 64
14:49:36.600873 IP 172.31.40.130 > 39.156.66.14: ICMP echo request, id 15074, seq 17, length 64
14:49:37.624863 IP 172.31.40.130 > 39.156.66.14: ICMP echo request, id 15074, seq 18, length 64
14:49:38.648871 IP 172.31.40.130 > 39.156.66.14: ICMP echo request, id 15074, seq 19, length 64
14:49:39.672865 IP 172.31.40.130 > 39.156.66.14: ICMP echo request, id 15074, seq 20, length 64
14:49:40.696876 IP 172.31.40.130 > 39.156.66.14: ICMP echo request, id 15074, seq 21, length 64
14:49:41.720872 IP 172.31.40.130 > 39.156.66.14: ICMP echo request, id 15074, seq 22, length 64
14:49:42.744873 IP 172.31.40.130 > 39.156.66.14: ICMP echo request, id 15074, seq 23, length 64
14:49:43.768868 IP 172.31.40.130 > 39.156.66.14: ICMP echo request, id 15074, seq 24, length 64
能直接看到这个数据包是从 ens7 的网卡出去的, 确实匹配到了默认的路由条目, 第一条直接发走, 这本来是正确的逻辑, 但是一旦我需要访问公网且该实例的 ens5 才是公网ip的指定网卡, 那么这个数据包就只有出去, 没有回来的了。
调整路由条目的优先级调整默认路由的优先级, 让数据匹配默认路由的时候优先匹配ens5的条目。
150 ip route del default via 172.31.32.1 dev ens5 proto dhcp src 172.31.43.121 metric 100
151 ip route add default via 172.31.32.1 dev ens5 proto dhcp src 172.31.43.121 metric 10
上面的命令可以将ens5 的默认路由metric 设置成 10 ,整体的路由表会变成这样:
root@ip-172-31-43-121:/etc/netplan# ip r s
default via 172.31.32.1 dev ens5 proto dhcp src 172.31.43.121 metric 10
default via 172.31.32.1 dev ens7 proto dhcp src 172.31.40.130 metric 100
default via 172.31.32.1 dev ens6 proto dhcp src 172.31.37.95 metric 100
172.31 ...
Linux配置网卡策略路由
会遇到Linux多个网卡的时候, 网络并不会保证源地址进网卡 , 源地址出网卡。
大佬说, IP地址的其实关联的是操作系统,并不是特定的网卡, 所以对于os来说, 邻居子系统会选择一下网络数据从哪个物理网卡出。
这样就会导致,数据包会在网卡之间Forward一下,而转发出来的数据包, 会被aws vpc 丢包, 因为出入栈的地址不一样了。
对于这个行为, 需要配置操作系统的路由策略来解决, 让流量从相同的网卡进出。
记录一下这个配置。
UbuntuUbuntu 直接使用的netplan ,在配置文件里面直接指定policy就可以了。
配置文件位置: /etc/netplan/*
配置文件内容大致如下:
:~# cat /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
ens4:
dhcp4: true
dhcp6: false
match:
macaddress: 02:ab:8e:b1:ba:36
set-name: ens4
routes:
- to: 0.0.0.0/0
via: 172.31.48.1
table: 1000
- to: 172.31.51.248
via: 0.0.0.0
scope: link
table: 1000
routing-policy:
- from: 172.31.51.248
table: 1000
ens6:
dhcp4: true
dhcp6: false
match:
macaddress: 02:64:69:51:00:f2
set-name: ens6
routes:
- to: 0.0.0.0/0
via: 172.31.48.1
table: 1001
- to: 172.31.59.199
via: 0.0.0.0
scope: link
table: 1001
routing-policy:
- from: 172.31.59.199
table: 1001
version: 2
Redhat/CentOS/Fedora/AmazonLinux2旧方式设置设置开机配置路由的方式, 使用旧脚本得方式需要禁用NetworkManager,完全手动配置networkd的脚本。
安装旧的脚本管理工具
yum install -y network-scripts
确认配置文件是否正确
[root@ip-172-31-11-110 network-scripts]# ll
total 244
-rw-r--r--. 1 root root 174 Dec 17 12:30 ifcfg-eth0
-rw-r--r--. 1 root root 278 Dec 17 15:56 ifcfg-eth1
-rw-r--r--. 1 root root 254 Feb 15 2021 ifcfg-lo
-rwxr-xr-x. 1 root root 2123 Feb 15 2021 ifdown
-rwxr-xr-x. 1 root root 646 Feb 15 2021 ifdown-bnep
-rwxr-xr-x. 1 root root 6419 Feb 15 2021 ifdown-eth
-rwxr-xr-x. 1 root root 769 Feb 15 2021 ifdown-ippp
-rwxr-xr-x. 1 root root 4536 Feb 15 2021 ifdown-ipv6
lrwxrwxrwx. 1 root root 11 Feb 15 2021 ifdown-isdn -> ifdown-ippp
-rwxr-xr-x. 1 root root 2064 Feb 15 2021 ifdown-post
-rwxr-xr-x. 1 root root 870 Feb 15 2021 ifdown-routes
-rwxr-xr-x. 1 root root 1458 Feb 15 2021 ifdown-sit
-rwxr-xr-x. 1 root root 1621 Jul 26 2020 ifdown-Team
-rwxr-xr-x. 1 root root 1556 Jul 26 2020 ifdown-TeamPort
-rwxr-xr-x. 1 root root 1462 Feb 15 2021 ifdown-tunnel
-rwxr-xr-x. 1 root root 5463 Feb 15 2021 ifup
-rwxr-xr-x. 1 root root 12270 Feb 15 2021 ifup-aliases
-rwxr-xr-x. 1 root root 906 Feb 15 2021 ifup-bnep
-rwxr-xr-x. 1 root root 13776 Feb 15 2021 ifup-eth
-rwxr-xr-x. 1 root root 12068 Feb 15 2021 ifup-ippp
-rwxr-xr-x. 1 root root 11891 Feb 15 2021 ifup-ipv6
lrwxrwxrwx. 1 root root 9 Feb 15 2021 ifup-isdn -> ifup-ippp
-rwxr-xr-x. 1 root root 643 Feb 15 2021 ifup-plip
-rwxr-xr-x. 1 root root 1057 Feb 15 2021 ifup-plusb
-rwxr-xr-x. 1 root root 5000 Feb 15 2021 ifup-post
-rwxr-xr-x. 1 root root 2001 Feb 15 2021 ifup-routes
-rwxr-xr-x. 1 root root 3303 Feb 15 2021 ifup-sit
-rwxr-xr-x. 1 root root 1755 Jul 26 2020 ifup-Team
-rwxr-xr-x. 1 root root 1876 Jul 26 2020 ifup-TeamPort
-rwxr-xr-x. 1 root root 2879 Feb 15 2021 ifup-tunnel
-rwxr-xr-x. 1 root root 1836 Feb 15 2021 ifup-wireless
-rwxr-xr-x. 1 root root 5421 Feb 15 2021 init.ipv6-global
-rw-r--r--. 1 root root 20431 Feb 15 2021 network-functions
-rw-r--r--. 1 root root 31037 Feb 15 2021 network-functions-ipv6
-rw-r--r--. 1 root root 40 Dec 17 16:00 route-eth0
-rw-r--r--. 1 root root 40 Dec 17 16:00 route-eth1
-rw-r--r--. 1 root root 28 Dec 17 15:40 rule-eth0
-rw-r--r--. 1 root root 28 Dec 17 15:41 rule-eth1
书写文件内容,需要配置的文件如下:
[root@ip-172-31-11-110 network-scripts]$ cat ifcfg-eth0
# Created by cloud-init on instance boot automatically, do not edit.
#
BOOTPROTO=dhcp
DEVICE=eth0
HWADDR=02:20:22:29:a4:0c
ONBOOT=yes
STARTMODE=auto
TYPE=Ethernet
USERCTL=no
[root@ip-172-31-11-110 network-scripts]$ cat ifcfg-eth1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth1
UUID=80caddf5-1347-4246-827e-5e0146c7f2c5
DEVICE=eth1
ONBOOT=yes
[root@ip-172-31-11-110 network-scripts]$ cat route-eth0
default via 172.31.0.1 dev eth0 table 1
[root@ip-172-31-11-110 network-scripts]$ cat route-eth1
default via 172.31.0.1 dev eth1 table 2
[root@ip-172-31-11-110 network-scripts]$ cat rule-eth0
from 172.31.11.110 lookup 1
[root@ip-172-31-11-110 network-scripts]$ cat rule-eth1
from 172.31.11.124 lookup 2
[root@ip-172-31-11-110 network-scripts]# cat /etc/iprout ...
Git常见的命令
远端创建, Clone本地Step 1Github上面创建一个新的仓库, 页面创建即可, 然后记录下URL。
https://github.com/LiarLee/vps-init.git
Step 2本地创建目录, 并初始化本地的仓库路径。
mkdir project-init
cd ./project-init
git clone https://github.com/LiarLee/project-init.git
关联远端仓库创建一个本地仓库。
mkdir test-init
cd ./test-init
git init .
touch README
echo "For test"
git add -A
git commit -m "init"
git remote add origin https://github.com/LiarLee/test-init.git
git -u origin master
配置代理# 设置代理
arch ~> git config --global http.proxy socks5://1.1.1.1:7890
arch ~> git config --global https.proxy socks5://1.1.1.1:7890
# 取消代理
git config --global --unset http.proxy git config --global --unset https.proxy
取消 git 特定文件追踪最好的办法是直接使用gitignore忽略这个文件, 但是开始创建仓库的时候可能想不到, 所以已经追踪的文件需要取消。
查看这个哪些文件会受到影响:
git rm -r -n --cached ./plugin
删除这些文件的追踪:
git rm -r --cached ./plugin