# 帮助文档
长的帮助: man <command>
短的帮助: tldr <command>
有了 tldr
以后,很多教程都可以删掉了。
# 更换镜像源
源 | 镜像 | 命令 |
---|---|---|
apt(ubuntu20) | 腾讯 | sudo wget -O /etc/apt/sources.list http://mirrors.cloud.tencent.com/repo/ubuntu20_sources.list |
pip | 豆瓣 | pip3 config set global.index-url http://pypi.doubanio.com/simple && pip3 config set global.trusted-host pypi.doubanio.com |
npm & pnpm | 淘宝 | 见下 |
yarn | 淘宝 | 见下 |
docker | 阿里云 | sudo wget -O /etc/docker/daemon.json https://blog.lyh543.cn/mirrors/docker.json |
docker(windows) | 阿里云 | iwr -O ~/.docker/daemon.json https://blog.lyh543.cn/mirrors/docker-desktop-windows.json |
maven | 阿里云 | wget -O ~/.m2/settings.xml https://blog.lyh543.cn/mirrors/maven.xml |
tlmgr | 科大 | tlmgr option repository http://mirrors.ustc.edu.cn/CTAN/systems/texlive/tlnet |
GitHub | fastgit | git config --global url."https://hub.fastgit.org/".insteadOf "https://github.com/" |
npm & pnpm & yarn:
# 配置镜像源:https://www.npmjs.com/package/mirror-config-china
sudo npm install -g mirror-config-china --registry=https://registry.npm.taobao.org
cd ~ && mirror-config-china --registry=https://registry.npm.taobao.org
# swap
# 设置 swapfile
sudo mkdir /swap
sudo dd if=/dev/zero of=/swap/swapfile bs=1024 count=4194304 # 4194304 为 4GiB
sudo chmod 600 /swap/swapfile
sudo mkswap /swap/swapfile
sudo swapon /swap/swapfile
free -m # 验证成功
将下面一行追加到 /etc/fstab
/swap/swapfile swap swap defaults 0 0
# 文件
# 当前文件夹
pushd
和 popd
起了 cd
的作用,还能自动将当前目录压栈、出栈。
$ pwd
~
$ pushd /tmp
/tmp ~
$ pwd
/tmp
$ popd
~
$ pwd
~
pwd
查看当前文件夹,dirname $0
查看运行的脚本所在文件夹。配合 $()
语法可以直接切换到当前目录:
cd $(dirname $0)
# 查看文件/文件夹/磁盘的大小
中文 | 英文 | 命令 |
---|---|---|
查看磁盘大小 | display filesystem | df -h |
查看目录下的文件大小 | list | ls -hs |
查看目录下的文件夹的大小 | disk usage | du -h --max-depth=1 |
以上的 -h
都是 --human-readable
,不使用这个开关,则会使用一个数字表示大小(单位为 KB
);使用开关后,则会使用 200K
,1.8G
的形式。
注意 du
如不加 --max-depth
参数,会统计完所有的目录。
# 进程
# 任务管理器
可以使用 top
或 htop
(后者对鼠标、颜色支持更好)。
# 进程后台运行
# 使用 nohup
使用 nohup
的话,一行代码就 ok:
# nohup <command> & &>/dev/null
nohup ssserver & &> /dev/null
可能会看到 ignore input
之类的警告,不用管,Ctrl+C
退出前台即可,此时 ssserver
正在后台运行。
# 使用 pm2
这个要麻烦一点,要从 npm
下载,所以还得先下载 npm
。
apt install npm
npm install pm2 -g
pm2 --name s1 -f start http-server # 配置 pm2
pm2 save # 可选命令,作用是保存当前的 pm2 状态
pm2 startup # 可选命令,下次开机的时候可以恢复到 save 的状态
pm2 ls # 可选命令,列出当前 pm2 的任务
# 使用 systemd
也可以配置 systemd。以下是一个模板。
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=lyh543
Restart=on-failure
RestartSec=5s
ExecStart=sudo /usr/bin/frps -c /etc/frp/frps.ini
[Install]
WantedBy=multi-user.target
将其保存在 /etc/systemd/system/xxx.service
后:
systemctl enable /etc/systemd/system/xxx.service
systemctl start xxx
即可。
# 进程开机自启
# 使用 /etc/rc.local
在 sudo /etc/rc.local
最后追加命令,然后给权限 sudo chmod a+x /etc/rc.local
即可。
不过貌似 alias
语句无效,可能 alias
是用户级的命令,需要用户登录时执行。
# 使用 systemd
# 任务定时运行
# 使用 crontab
编辑本用户的 crontab
:
crontab -e
如果命令复杂的话,推荐写成一个脚本,然后输入以下内容:
# 文件格式說明
# ——分鐘(0 - 59)
# | ——小時(0 - 23)
# | | ——日(1 - 31)
# | | | ——月(1 - 12)
# | | | | ——星期(0 - 7,星期日=0或7)
# | | | | |
# * * * * * 被執行的命令
0 * * * * cd /path/to/script/ && ./script.sh >>cron.log 2>&1
上面就是每小时的 0 分 0 秒,cd 到指定目录,然后执行脚本,将标准输出重定向到目录下 cron.log
,将错误输出重定向到和标准输出一起。
# 用户
# 添加用户并给予 sudo 权限
sudo useradd <newuser> --disabled-password # 禁用密码,只允许 ssh 登录
sudo usermod -aG sudo <newuser> # 将用户加入 sudo 组
sudo -u <newuser> # 上号
echo >> ~/.ssh/authorized_keys "ssh-rsa xx" # 添加 ssh 公钥
然后上号 sudo
检查一下是不是可以了。如果不行,可以试试在 /etc/sudoers
里面修改 %sudo
一行:
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
# ssh
在使用 Git 和搭建服务器的时候都会用到 ssh,于是笔记也比较零散。
在这里丢几个链接:
# log
# 查看 Shell 启动过程
可以用来追踪环境变量在哪里被修改。
# bash
PS4='+$BASH_SOURCE> ' BASH_XTRACEFD=7 bash -xl 7>&2
# zsh
zsh -xl