Featured image of post 开发环境的定时启动脚本

开发环境的定时启动脚本

开机启动并且定时运行

shell 的 jq 脚本真的是太难用了,调了半天才能用,文档看不懂。

完成的这个重启脚本非常有用:

cat nekoray.sh

#!/bin/bash
cd /opt/nekoray/config/profiles/;
port=`expr 0 + "6"$(date "+%m%d")`;
jq --indent 4 --argjson port "$port" '.bean.port |= $port'  0.json > tmp;
cp tmp 0.json;
ID=`ps -ef | grep nekoray | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
echo $ID;
echo "---------------"
for id in $ID
do
kill -9 $id
echo "killed $id"
done
echo "---------------"
sleep 5;
nohup sh -c "PATH=/opt/nekoray:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin /opt/nekoray/nekoray" > /dev/null 2>&1 &
exit

以 root 的方式做重启:

cat startneko.sh

#!/bin/bash
echo "1"|sudo -S /home/uos/.script/nekoray.sh

自动更新配置的定时任务

sudo vim /etc/crontab

0  0    * * *   root    /home/uos/.script/nekoray.sh

sudo systemctl restart cron

现在就做到无感知的定时重启了。

开机启动的方法

sudo ln -s ~/.script/startneko.sh /etc/profile.d/

这个 qt 程序的开机自起一直有 xcb 的报错,不弄了。用 nekoup 写个 alias 非常地好用。

发现了一个好办法

vim ~/.config/autostart/nekoray.desktop

[Desktop Entry]
Type=Application
Exec=/home/uos/.script/startneko.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=Nekoray

chmod +x nekoray.desktop

亲测可用,这样开机启动是没有问题了。并且确实是以 root 权限做的启动。qt-gui 的程序估计是不能用 daemon 的方式运行的。qt-core 的程序才能以 root 的方式运行。

关闭 ubuntu 的错误报告

永久关闭 。 sudo gedit /etc/default/apport 修改 enabled=0 ,重启生效

启用代理和关闭代理的脚本

如果不是用的 tun 模式的话而是用的代理模式,那么上面只解决了一部分协议的问题,后面可以参考这个项目做一个一键切换的脚本。

setProxy: https://github.com/dabrign/setProxy

simple bash script to set and remove proxy from the command line

  • Supported services

  • Other needed services

    • NPM

    npm config set proxy http://proxy.company.com:8080 npm config set https-proxy http://proxy.company.com:8080 npm config delete proxy npm config delete https-proxy

    • PIP & CONDA

    Env var works for pip

    • GIT

    git config –global http.proxy {{url}} git config –global https.proxy {{url}} git config –global –unset https.proxy git config –global –unset http.proxy

    • docker File

    http-proxy.conf in /etc/systemd/system/docker.service.d with: [Service] Environment=“HTTP_PROXY= "

    • maven .m2/settings
#!/bin/bash
HTTP_PROXY="export http_proxy"
HTTPS_PROXY="export https_proxy"
FTP_PROXY="export ftp_proxy"
APTCONF="/etc/apt/apt.conf"
if grep -Fxq "$HTTP_PROXY" ~/.bashrc
then
    echo "Already set"
        read -r -p "do you wanna remove? [y/n]" response
        if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]]
        then
                sed -i '/no_proxy/d' ~/.bashrc
                sed -i '/http_proxy/d' ~/.bashrc
                sed -i '/https_proxy/d' ~/.bashrc
                sed -i '/ftp_proxy/d' ~/.bashrc
                sudo sed -i '/Acquire::http::Proxy/d' $APTCONF
                gsettings set org.gnome.system.proxy mode 'none'
        else
        echo "ok, no exception then!"
        fi
else
        gsettings set org.gnome.system.proxy mode 'manual'
    echo "you can set it now"
        read -r -p "Set your proxy in form http://user:pwd@proxy:port : " response
        echo "http_proxy=$response" >> ~/.bashrc
        echo "https_proxy=$response" >> ~/.bashrc
        echo "ftp_proxy=$response" >> ~/.bashrc
        echo "export http_proxy" >> ~/.bashrc
        echo "export https_proxy" >> ~/.bashrc
        echo "export ftp_proxy" >> ~/.bashrc
        if [ -f $APTCONF ];
        then
                echo "appending"
        else
                echo "creating..."
                sudo touch $APTCONF

        fi
        sudo sh -c " echo 'Acquire::http::Proxy \"$response\" ;' >> $APTCONF"

        read -r -p "do you wanna add exceptions? [y/n]" response
        if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]]
        then
        read -r -p "Set your proxy exceptions in form ip_add,host1,host2" response
                echo "no_proxy=$response" >> ~/.bashrc
                echo "export no_proxy" >> ~/.bashrc
        else
        echo "ok, no exception then!"
        fi
        source ~/.bashrc
fi

透明代理

这个是最优的解决方式,但是这个需要一个硬路由器或者软路由支持。家里还行,其他地方不方便。

红米 ax6000 软路由:

https://www.youtube.com/watch?v=zMQfO3AezgM

clash 的使用:

https://www.youtube.com/watch?v=2iwuriJAmW0

clash 配置 frojan :

https://v2xtls.org/clash-for-windows%E9%85%8D%E7%BD%AEtrojan%E6%95%99%E7%A8%8B/

clash 已经不更新了。

没必要把红米 ax6000 刷机。任何局域网内的电脑设备都可以充当软路由。

知识积累

基础知识和原理

https://github.com/XTLS/Xray-core/discussions/237

  • 简单理解 IP Packet、TCP Connection、五元组、端口、User Datagram Protocol
  • 那么 FullCone、Symmetric 又是什么?
  • Xray-core 和一些代理协议中的 UDP 细节讲解
  • 透明代理 TPROXY UDP 的原理

一些文档

https://www.v2fly.org/

看过这些知识就会明白软路由和透明代理的一些原理,虽说用起来不是很复杂,但是有大量的细节一般人其实是不清楚的。这些知识对于认识网络和通讯的原理是十分有用的。

TUN Mode 是通过创建虚拟网卡的方式来代理所有流量,而 System Proxy 是通过设置系统代理的方式上网。所以二者只要选择一个就可以,一般推荐 TUN。

sing-box 和 tun 模式的讲解

https://www.rultr.com/tutorials/68415.html

最终选择

root 权限运行 nekoray ,选用 sing-box 内核,开启 tun 模式。设置分流模式。勾选程序——记住最后的配置。测试了一段时间,现在看是稳如一条老狗。

最后,其实好用的工具不是最终目的。人最关键是在什么年龄能学到什么知识,创造什么价值。有不少人年少成名,甚至都成名后死掉了。而普通人,就算现在还普通,也要抗争,争取一个大器晚成也算是亡羊补牢。成熟的晚的人也比一辈子不成熟好。共勉。

好用的工具优化

obsidian

这个以后有时间是可以试试的。

infini-cloud

这个是个25 G 的免费 webdav 服务。我的 emacs org-roam 笔记是用这个同步的。而zotero 当中的资料则是用的家中 qnap 的nas 。

https://jiajunhuang.com/articles/2023_11_29-alist_webdav.md.html

不过网上的 automount 教程会导致系统的网络服务和automount 服务有概率起动失败,用下面的两个网页的方案解决。

https://forums.linuxmint.com/viewtopic.php?t=282437

sudo systemctl disable NetworkManager-wait-online.service

sudo systemctl mask NetworkManager-wait-online.service

https://github.com/rclone/rclone/issues/6459

Caption not used as alt text

图 1: 解决起动加载失败

gpt 插件

https://github.com/chatanywhere/GPT_API_free

ChatGPT Sidebar ,使用这个网页版的插件,可以翻译 youtube 视频的英文字幕,天哪,我还需要学英语吗?科大讯飞的翻译眼镜其它的一些翻译耳机,可以直接翻译视频,没有什么东西是不能快速学会的,无敌!

全是免费的东西。

nekoray 或说 nekobox

这个可以菜单项中是可以记住设置的。还有就是代理服务器的规则改了,简单修改一下脚本就可以了。

小米对数学输入的两个优化

一是符号部分地变成unicode ,减少长度,看起来也更加直观。

另一个是对 texmf 当中增加 sty ,使得可以于减化符号输入的宏。这两点太棒了。还是就是用$ 符号输入成对的公式环境。也减少了输入的麻烦。

snippet 已经让输入变成流畅,上面的东西如果也使用上了的话,输入甚至会变成是一种享受。最重要的还是对知识本身的理解。比如里面的一些数学原理不懂,还有不能掌握常用的英文单词。实际上老外也不能理解英文词汇,英文单词本身就有不像汉语短语一样的有相关性。外国个所谓的有文化,本身就是记忆的单词多一些。就是如此!

回过头来还得是 emacs

pdf-tools 注释,下划线,高亮功能有了,C-c C-a C-l 可以搜所有的这些标记。

zotero 用于生成文献的数据库,填加pdf 进去能自动更新数据库。

org-roam 的node 多了,很乱,用法是把node 名称分类,比较 a-xxxx 这种node 是用于总结,b-xxx 这种node 是用于记录等等,而像 citar-org-roam ,consult-org-roam 可以搜所有的反向链接。

虽然分类肯定不如 obsidian 之类的文件夹看起来直观,但是,我可以手动增加文件夹吧!!!恩,emacs 画思维导图之类的之前有过集成 drawio 的方案。这个暂时不是痛点。

总的来说,emacs 真的能把这些事都做好。

反转

看 pdf 的流畅度还是 zotero 更胜一筹。使用自己的 nas 同步图片始终不成功,不知道问题出在哪里!!!