linux 安装拼音

虽然网上有了不少安装拼音的步骤,但是还是没法使用。这篇记录自己的使用过程。

1. 安装中文环境

dpkg-reconfigure locales

选中中文包: zh_CN.UTF-8

2. 安装拼音

在系统的软件中心,搜索pinyin安装。

image-20210127165720081

或者安装:

apt-get install ibus-libpinyin

3. 系统配置

搜索ibus首选项

image-20210127165824268

在区域与语言中增加输入法 chinease intelligent Pinyin,一定要注意,是ibus-libpinyinChinese(Intelligent Pinyin)

4. 重启系统

重启系统后就可以看到拼音输入法了。

必须要重启系统。我在这里栽了很多次跟头了。


linux gnome3 截屏工具 gnome-screenshot

  1. 捕捉整个屏幕

    $ gnome-screenshot
    
  2. -w 参数捕捉当前 Shell 窗口

    $ gnome-screenshot -w
    
  3. -a 参数捕捉指定区域

    $ gnome-screenshot -a
    
  4. -B 参数去除窗口的边框

    $ gnome-screenshot -w -B
    
  5. -d 参数来延迟截取功能从而截取其他活动窗口

    $ gnome-screenshot -d 5
    
  6. -e 参数给截图添加效果

    -e 参数后面根据需要添加“border”或者“shadow

    $ gnome-screenshot -wB -e border
    

    为了方便使用,可以在系统中配置快捷键: 全部配置-> 键盘:

参考资料


linux gnome 在 x 环境下设置软件自动启动

在服务器中,开机自动运行我们一般是通过 /etc/rc.local 进行自动启动。然而很多桌面端的软件基于x环境的,在 rc.local 里写无法运行的。通过 gnome-tweak工具,直接使用它自带的开机启动功能。

安装 gnome-tweak-tool

apt-get install gnome-tweak-tool

搜索gnome-tweak-tool,点击运行。

image-20201214162603510

添加软件即可:

image-20201214162652343

如果找不到对应的应用图标,就制作图标,移动到文件夹/usr/share/applications 下,再进行添加。


kubernetes 中的 iptables 规则探究草稿

这篇文章是我草稿,方便未来copy,也没有什么结论。

集群网络相关组件使用 iptables,calico。集群信息如下:

image-20201022155522956

image-20201022155556767

常用命令:

iptables -S -t filter 
iptables -nvL -t filter 

具体kube-proxy使用了何种模式,可以通过开头的日志中确定。

 kubectl logs -n kube-system kube-proxy-xxxx
 
 
 
1 I1013 02:49:50.053115       1 node.go:135] Successfully retrieved node IP: 10.19.0.56
2 I1013 02:49:50.053178       1 server_others.go:172] Using ipvs Proxier.
3 W1013 02:49:50.053393       1 proxier.go:420] IPVS scheduler not specified, use rr by default
4 I1013 02:49:50.053601       1 server.go:571] Version: v1.17.2

filter

链条:

-N KUBE-FIREWALL
-N KUBE-FORWARD

-N cali-FORWARD
-N cali-INPUT
-N cali-OUTPUT
-N cali-failsafe-in
-N cali-failsafe-out
-N cali-forward-check
-N cali-forward-endpoint-mark
-N cali-from-endpoint-mark
-N cali-from-hep-forward
-N cali-from-host-endpoint
-N cali-from-wl-dispatch
-N cali-from-wl-dispatch-0

-N cali-fw-cali01b67da5b30
-N cali-fw-cali01f05402926
-N cali-fw-cali07f2c47454d
-N cali-fw-cali09a918145b4
-N cali-fw-cali20c7068a020
-N cali-fw-calie74a6684a50

-N cali-pri-_b689sAm1phz5c-Iq03
-N cali-pri-_hNSGmJYNT8uLIzxesP
-N cali-pri-_mel_KhKBhu1g7PDmvg
-N cali-pri-_rXtG25Noohen7RWUxB

-N cali-pri-kns.default
-N cali-pri-kns.kube-system
-N cali-pri-kns.monitor
-N cali-pri-ksa.default.default
-N cali-pri-ksa.monitor.default

-N cali-pro-_b689sAm1phz5c-Iq03
-N cali-pro-_hNSGmJYNT8uLIzxesP
-N cali-pro-_mel_KhKBhu1g7PDmvg
-N cali-pro-_rXtG25Noohen7RWUxB
-N cali-pro-kns.default
-N cali-pro-kns.kube-system
-N cali-pro-kns.monitor
-N cali-pro-ksa.default.default
-N cali-pro-ksa.monitor.default

-N cali-set-endpoint-mark
-N cali-set-endpoint-mark-0

-N cali-sm-cali01b67da5b30
-N cali-sm-cali01f05402926
-N cali-sm-cali07f2c47454d
-N cali-sm-cali09a918145b4
-N cali-sm-cali20c7068a020
-N cali-sm-calie74a6684a50
-N cali-to-hep-forward
-N cali-to-host-endpoint
-N cali-to-wl-dispatch

nat

三个链条

PREROUTING:
  KUBE-FIREWALL:
    KUBE-MARK-DROP
 
OUTPUT: 
  KUBE-SERVICES:
    KUBE-MARK-MASQ:
    	-A KUBE-MARK-MASQ -j MARK --set-xmark 0x4000/0x4000
    KUBE-NODE-PORT
   
POSTROUTING:
  KUBE-POSTROUTING:
    -A KUBE-POSTROUTING -m comment --comment "kubernetes service traffic requiring SNAT" -m mark --mark 0x4000/0x4000 -j MASQUERADE
    -A KUBE-POSTROUTING -m comment --comment "Kubernetes endpoints dst ip:port, source ip for solving hairpin purpose" -m set --match-set KUBE-LOOP-BACK dst,dst,src -j MASQUERADE
  
其它:
  KUBE-LOAD-BALANCER:(无引用)
	KUBE-MARK-MASQ

创建一个deployment和service:

iptables -S -t filter > sfilter
iptables -nvL -t filter > filter
iptables -S -t nat > snat
iptables -nvL -t nat > nat

kubectl create ns kelu
kubectl run cka2 --image=nginx --port=80 --expose=true -n kelu

iptables -S -t filter > sfilter2
iptables -nvL -t filter > filter2
iptables -S -t nat > snat2
iptables -nvL -t nat > nat2

从文件分析可知,新增的内容在 iptables 中主要体现在主机 rqkubedev02 上的 filter表,nat 表和其它机器上的nat+filter表没有变化:

vimdiff sfilter sfilter2

image-20201022163759124

image-20201022163811566

image-20201022163821372

主要多了这些内容:

-N cali-fw-calida47883c356
-N cali-pri-kns.kelu
-N cali-pri-ksa.kelu.default
-N cali-pro-kns.kelu
-N cali-pro-ksa.kelu.default
-N cali-sm-calida47883c356
-N cali-tw-calida47883c356

image-20201022165103760

这里出现了几个关键字

image-20201022165441068

在主机的interface中也可以找到这张网卡:

calida47883c356

1062: calida47883c356@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1440 qdisc noqueue state UP
    link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netnsid 5
    inet6 fe80::ecee:eeff:feee:eeee/64 scope link
       valid_lft forever preferred_lft forever

通过注释和关联关系,可以猜出来应该是用来做policy相关的注释。

查看此台主机上的nginx容器:

docker ps | grep nginx

cbe00452d31e        nginx                                    "/docker-entrypoint.…"   22 minutes ago      Up 22 minutes                                k8s_cka2_cka2-75dbf7c54-gd27w_kelu_7f813a95-6359-4e7d-9d88-d216c8a39457_0

偶尔运行/保存iptables一下看看:

iptables -S -t filter > sfilter3
iptables -nvL -t filter > filter3
iptables -S -t nat > snat3
iptables -nvL -t nat > nat3

iptables -S -t raw > sraw3
iptables -nvL -t raw > raw3
iptables -S -t mangle > smangle3
iptables -nvL -t mangle > mangle3

iptables -S -t filter > sfilter4
iptables -nvL -t filter > filter4
iptables -S -t nat > snat4
iptables -nvL -t nat > nat4

iptables -S -t raw > sraw4
iptables -nvL -t raw > raw4
iptables -S -t mangle > smangle4
iptables -nvL -t mangle > mangle4

vimdiff sfilter3 sfilter4
vimdiff snat3 snat4

vimdiff sraw3 sraw4
vimdiff smangle3 smangle4

创建calico global network policy

cat global_network_policy.yaml
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
  name: deny-cka
spec:
  selector: run  == 'cka2'
  types:
  - Ingress
  - Egress
  ingress:
  egress:

对filter、raw和mangle有改变,如下:

-N cali-pi-default.deny-cka
-N cali-po-default.deny-cka

image-20201022211048011

image-20201022211145325

image-20201022202141173

image-20201022202204640

往里面添数据看看:

apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
  name: deny-cka
spec:
  selector: run  == 'cka2'
  types:
  - Ingress
#  - Egress
  ingress:
  - action: Allow
    protocol: TCP
    source:
      selector: color == 'blue'
    destination:
      ports:
        - 80
#  egress:

iptables:

iptables -S -t filter > sfilter5
iptables -nvL -t filter > filter5
iptables -S -t nat > snat5
iptables -nvL -t nat > nat5

iptables -S -t raw > sraw5
iptables -nvL -t raw > raw5
iptables -S -t mangle > smangle5
iptables -nvL -t mangle > mangle5

vimdiff sfilter5 sfilter4
vimdiff snat5 snat4

vimdiff sraw5 sraw4
vimdiff smangle5 smangle4

删除了 egress,对filter、raw和mangle有改变,如下:

filter少了egress相关的filter,多了ingress的内容。

image-20201022212057202

image-20201022203243556

image-20201022203929480

此时从外部和内部都已经没办法访问pod了。

运行新的deployment,打上标签 color == ‘blue’ 。

iptables -S -t filter > sfilter6
iptables -nvL -t filter > filter6
iptables -S -t nat > snat6
iptables -nvL -t nat > nat6

iptables -S -t raw > sraw6
iptables -nvL -t raw > raw6
iptables -S -t mangle > smangle6
iptables -nvL -t mangle > mangle6

vimdiff sfilter5 sfilter6
vimdiff snat5 snat6

vimdiff sraw5 sraw6
vimdiff smangle5 smangle6

只改变了 filter 表:

image-20201022213541332

image-20201022213629665

image-20201022213654436

image-20201022213708641


linux gnome3 中显示 dock

gnome 3 默认在搜索页面显示了dock,我想将它挪到桌面正下方来,并且一直显示,不要自动隐藏。这一篇记录我的设置过程。

下载 dash-to-dock

dash-to-dock 是 gnome-shell 的一个扩展。这个扩展将 dock 从搜索页挪到桌面,方便我们切换应用。可以配置放在侧面或者底部。

  1. 查看我们的gnome-shell 版本号

    gnome-shell --version
    

    image-20201130164352913

  2. 此链接下载对应的扩展,这里我将下载3.22的shell版本,最新的65的extension。

    image-20201130164544993

  3. 打开 gnome-tweak-tool

    image-20201130165437096

  4. 安装

    image-20201130165510155

  5. 安装后,可看到 Dash-to-dock 选项

    image-20201130165705546

  6. 进入配置后,按个人的喜好配置即可。

    image-20201130165748504

参考资料


Win/Linux/Mac 使用 Synergy 在局域网内共享一套键盘鼠标

如题。我目前开发环境为台式机 Debian 9,文档编辑工作在Windows笔记本上进行,通过使用 synergy ,可以在笔记本的键盘和鼠标上控制 Linux 台式机,非常美好。这篇做个简单记录。

synergy 的原理就是其中一台设备做服务端server,其它设备做客户端client,服务端自己也是一个客户端。服务端首先设定了一个画布,不同的客户端处在画布的某个坐标上。当鼠标移出到坐标的边缘后,将进入下一个设备,此时服务端解析鼠标的移动轨迹,将其还原到客户端所在的设备上,客户端负责将具体的鼠标移动路径模拟为真实的鼠标移动,完成。

我这边的服务端使用了 Win10笔记本,客户端使用的台式主机Debian 9.

0. Synergy 是什么

Synergy的官网:https://symless.com/synergy

github: https://github.com/symless/synergy/wiki

1. 安装

win

下载地址:https://sourceforge.net/projects/synergy-stable-builds/,担心有问题,我也做了个 备份。正常安装即可。

Debian

apt-get install synergy

mac

我也做了个 备份

2. client端配置

synergy的UI其实既可以设定自己为客户端,也可以设定为服务端。不同操作系统的样子都一样的。

进入界面的第一步是看自己的名字。我 Debian 客户端的名字如下图:

image-20201214161555747

可以看到我的屏幕名为gx1. 并在这里配置了我笔记本在局域网的IP。这个IP是路由器给我笔记本分配的。我在路由器上做了IP/mac绑定。点击应用、开始即可。

3. sever端配置

微信截图_20201214160057

按照步骤点击操作。然后进入服务端界面设置:

image-20201214160612924

我笔记本本机叫laptop,我从右上角拉了一个设备到laptop的右边,双击这个新设备,进入下面的界面,然后它命名为 gx1.

image-20201214160925394

如果设备拉多了,可以拖动到垃圾桶删除。

最后点击开始,便完成了。

image-20201214162059978

4. 开机自动启动

主要是Linux客户端的自动启动。 synergy是基于 x 图形化界面的,所以如果你在 rc.local 或者脚本启动,大概率是无法启动成功的。

我这边使用了gnome,所以使用了gnome进行配置。安装 gnome-tweak。,搜索 gnome-tweak-tool 并运行

image-20201214162603510

添加软件即可:

image-20201214162652343

参考资料


linux 以特定用户运行命令

共有三个命令可供选择:

  1. runuser
  2. su
  3. sudo

具体如下:

  1. runuser

    只能由root用户运行该命令,不需要输入密码。

    runuser -l nginx -c 'ulimit -SHa'
    
  2. su

    su - root -c "command"
    # OR
    su - -c "command arg1"
       
    # 例如:
    su - oracle -c 'ulimit -aHS'
    
  3. sudo

    当用户在 sudoers 列表中时可以使用 sudo 命令:

    sudo command
    sudo -H -u otheruser bash -c 'echo "I am $USER, with uid $UID"' 
    

参考资料