在 Debian 上安装 Chrome 浏览器,并以代理方式打开

下载最新版本:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

安装:

dpkg -i google-chrome-stable_current_amd64.deb

安装后使用以下命令即可运行:

google-chrome-stable

如果是要使用代理运行,使用如下命令即可:

google-chrome-stable --proxy="http://127.0.0.1:1080" # 端口号为你本地的代理监听端口

linux 为用户增加 sudo 权限并免密运行

最近光盘安装了 debian 9,发现默认的用户没有sudo权限,记录为默认用户添加权限的步骤。

共有两种方式授权:

  1. 把用户添加到sudo组。
  2. 把用户添加到sudoers文件。

下面以用户 kelu 为例。

将用户添加到sudo组

这是最简单的方式。

usermod -aG sudo kelu

将用户添加到sudoers文件

编辑文件 /etc/sudoers:

vi /etc/sudoers

增加以下一行记录:

kelu  ALL=(ALL) NOPASSWD:ALL

如图所示:

image-20201130132548733

参考资料


gnome 3 命令行打开当前目录

gnome 3 的文件管理器为 nautillus。 在命令行中打开当前文件夹的命令为:

nautilus .

如果需要已特定用户的身份打开,先切换用户即可,例如:

su kelu
nautilus .

不加上路径则默认打开 home 目录:

nautilus

debian 安装 IntelliJ Idea ,并增加应用图标

对于桌面系统,没有图标是挺不方便的。我是用的是Debian 9,安装的桌面环境为 Gnome 3。

在下载 IntelliJ Idea 官方的Linux ide后,发现没有桌面图标,dock 上也不显示!

对于这种交互其实很早也有心理准备了,linux用户都是自己动手丰衣足食的。下载 idea 和制作idea图标快捷键步骤如下:

  1. 下载tgz包:https://www.jetbrains.com/idea/download/other.html

    选择一个合适的版本下载。

  2. 解压,我一般将软件放到 /var/local 目录下,给文件夹命名为idea:

    cd /var/local
    tar zxvf xxx.tar.gz
    mv xxx idea
    
  3. 做个命令行软链接,命令行方式启动也习惯性弄好。

    ln -s /var/local/idea/bin/idea.sh /usr/local/bin/idea
    
  4. 在桌面创建 idea.desktop文件

    [Desktop Entry]
    Name=IntelliJ IDEA
    Comment=IntelliJ IDEA
    Exec=/var/local/idea/bin/idea.sh
    Icon=/var/local/idea/bin/idea.png
    Terminal=false
    Type=Application
    Categories=Developer;
    

    image-20201130122330383

  5. 赋予权限

    chmod +r idea.desktop
    
  6. 可以复制一份到常用的图标归档的文件夹里

    cp idea.desktop /usr/share/applications
    

    这个文件夹里也有很多图标文件,可以都看看。gnome的图标路径一般存放在以下三个地方:

    • /usr/share/applications
    • /usr/local/share/applications
    • ~/.local/share/applications

gnome 3 中设置快捷键,快速启动终端

  1. 搜索setting,打开系统设置

    image-20201130115811716

    image-20201130115848336

  2. 搜索键盘配置 “shortcut”

    image-20201130115910613

  3. 增加自定义快捷键

    在键盘中拉到最下边,增加快捷键

    image-20201130115945986

  4. 增加终端的命令和快捷键

    /usr/bin/gnome-terminal
    

    image-20201130120034017

  5. 也可以修改一些常用的快捷键,比如我常用的截图快捷键,笔记本上 print screen其实比较麻烦的。

    image-20201130120201318

    另外记录一个无用的小知识,截图选区的命令为:

    gnome-screenshot -a -c
    

​ 笔记本上按 Alt + F4 也是比较麻烦的,参考mac的关闭窗口快捷键,我也设置了 Alt + Q 用来快捷关闭窗口。

参考资料


linux shell 命令备忘

不是专门的运维,时不时写shell脚本还要翻谷歌的感觉实在不太好。这篇文章记录几个常用的 shell 脚本命令,免得每次都从0开始查起。 这篇文章长期更新。

操作符

int型对比

if [ "$a" -eq "$b" ]
if [ "$a" -ne "$b" ]
if [ "$a" -gt "$b" ]
if [ "$a" -ge "$b" ]
if [ "$a" -lt "$b" ]
if [ "$a" -le "$b" ]
(("$a" < "$b"))
(("$a" <= "$b"))
(("$a" > "$b"))
(("$a" >= "$b"))

字符串对比


if [ "$a" = "$b" ]
if [ "$a" == "$b" ]
	[[ $a == z* ]]   # True if $a starts with an "z" (pattern matching).
	[[ $a == "z*" ]] # True if $a is equal to z* (literal matching).
	[ $a == z* ]     # File globbing and word splitting take place.
	[ "$a" == "z*" ] # True if $a is equal to z* (literal matching).
if [ "$a" != "$b" ]
if [[ "$a" < "$b" ]] if [ "$a" \< "$b" ] # 比较的是ASCII码
if [[ "$a" > "$b" ]] if [ "$a" \> "$b" ] # 比较的是ASCII码

if [ -z "$String" ] # string is null, that is, has zero length
if [ -n "$String" ] # string is not null


docker,containerd,runc,docker-shim 之间的关系

在看系统进程的时候,发现了这样的进程关系:

systemd 里调用了 

- containerd -> containerd-shim
- dockerd -> docker-proxy

引起了我的兴趣。

ps: 另外上边只是在 docker 19.03 上发现了这样的调用关系,在 docker 17.06 上调用的关系实际上是这样:

-dockerd --registry-mirror=http:/xxx
  | -docker-containe -l unix:///xxx
      | -docker-containe   
  | -docker-proxy -proto xxx

在 19.03 版本中,docker相关的可执行文件如下:

image-20201011113355555

其中以docker开头的,docker, dockerd, docker-init, docker-proxy 是 docker 公司专属的,并非标准。

因为 docker 一直在开发中,网上很多资料都比较陈旧,不过八九不离十,无非是几个组件变了个名字:

  • docker,是一个客户端工具,用来把用户的请求发送给 docker daemon(dockerd)。
  • dockerd, docker daemon,一般也会被称为 docker engine。dockerd 启动时会启动 containerd 子进程。
  • Containerd 是一个工业级标准的容器运行时,它强调简单性、健壮性和可移植性,几乎囊括了单机运行一个容器运行时所需要的一切:执行,分发,监控,网络,构建,日志等。主要作用是:
    • 管理容器的生命周期(从创建容器到销毁容器)
    • 拉取/推送容器镜像
    • 存储管理(管理镜像及容器数据的存储)
    • 调用 runC 运行容器(与 runC 等容器运行时交互)
    • 管理容器网络接口及网络
  • ctr 是 containerd 的 cli。
  • 为了能够支持多种 OCI Runtime,containerd 内部使用 containerd-shim,每启动一个容器都会创建一个新的 containerd-shim 进程,指定容器 ID,Bundle 目录,运行时的二进制(比如 runc)。
  • RunC 是一个轻量级的工具,用来运行容器的,我们可以不用通过 docker 引擎,直接运行容器。事实上,runC 是标准化的产物,它根据 OCI 标准来创建和运行容器。

调用链主要就是下面这张图:

img