Linux 脚本中的 Shebang #!
在 Linux 中,当我们准备运行一个可执行文件时,execve 程序会建立一个新的进程替代当前的进程(如终端下的 bash),同时决定如何完成这个执行任务。
当我们执行一个文本文件时,execve 需要文本文件的开头两个字符为 “#!
读作:shebang,同时跟随一个解释器的路径用来解释后续的脚本文本内容。
下面我们举例说明。
Ubuntu desktop 配置 vnc server
通过 VNC(Virtual Network Computing) 可以使用一个图形化的界面来访问远程服务器。这样对服务器的操作可以更加便捷直观。
下面我们在 Ubuntu 上安装 TightVNC vnc server 并通过更加安全的 SSH tunnel 来连接服务器。
环境需求:
- 远程主机 Ubuntu desktop 20.04
- 关闭 ufw 防火墙或配置允许 openssh 远程连接
- 本地设备 vnc 客户端需要支持 SSH tunnels 连接,如: TightVNC, RealVNC, or UltraVNC.
openwrt 配置 LuCI ssl 证书
openwrt 提供了一个 luci 管理界面可以通过图形化的方式进行配置管理。我们通过 lan 网地址 http 访问 luci 界面,会有一个提示不安全的链接,一般浏览器提供了一个跳过选项可以忽略警告。
但是当我们通过 wan 口地址访问 luci 界面时,新版的 chrome 会强制拒绝访问 http 不安全的链接,如果网址不支持 https 访问页面就会无法打开,从而我们就无法通过外网访问 luci 界面了。
首先注意如果想要从 wan 口通过访问 luci 界面,需要配置防火墙放行,具体参考:https://blog.niekun.net/archives/1818.html
然后我们给 luci 配置一个 ssl 证书,这样 chrome 浏览器就会放行了。
openwrt procd init script 自启动脚本服务
openwrt 是针对于嵌入式设备的精简版 Linux 系统。所以一些常规的 Linux 服务都没有,比如 systemd 等。
openwrt 是通过 init.d 来管理服务的。所有的服务都在 /etc/init.d
目录下。
对某个服务进行操作也很方便,例如对 network 服务:
# 启动 network
/etc/init.d/network start
# 重启 network
/etc/init.d/network restart
# 停止 network
/etc/init.d/network stop