Ubuntu,显示已经安装的ppa,来自万能的StackOverflow,还有如何删除
grep -RoPish "ppa.launchpad.net/[^/]+/[^/ ]+" /etc/apt | sort -u | sed -r 's/\.[^/]+\//:/'
设置Ubuntu自动启动服务
sudo update-rc.d SERVICE_NAME defaults sudo update-rc.d -f SERVICE_NAME remove
CentOS下则使用chkconfig命令
实时显示日志内容
tail -f access.log
所有子目录的权限改为755(跳过文件)StackOverflow
find /path/to/base/dir -type d -exec chmod 755 {} +
改命令行默认语言,解决SSH中文乱码
Ubuntu: /etc/default/locale
CentOS: /etc/sysconfig/i18n
命令行自动完成不工作AskUbuntu
sudo apt-get install bash-completion
Apache 日志统计
# 解压所有日志,并统计所有pdf下载量 gzip -cd access.log.*.gz | grep -c ".pdf" # 统计APAC Portal的实际访问数 cat access.log.1 | grep " 200 " | grep -v "OPTIONS" | \ grep -v "gsa-crawler" | grep -v "/world-time" | grep -v "/share-price" | \ grep -v "wp-admin" | grep -v "wp-cron" | grep -v "/rss-feed/" | grep -v "favicon.ico" | \ grep -v ".jpg" | grep -v ".png" | grep -v ".css" | grep -v ".js" | grep -v ".eot" | \ grep -c "" # 统计前访问量前20的资源 cat access.log.1 | grep '200' | awk '{print $11}'| sort | uniq -c | sort -nr | head -20 # 总流量 cat access.log.1 | awk '{sum+=$10} END {print sum/1024/1024/1024}' # 上周的错误日志 cat error.log.1 | grep -v "file_get_contentsep "error" | grep -v "sending a SIGKILL" | grep -v "MaxRequestWorkers" | less # 每小时访问量 awk '{print $4}' access.log |cut -c 2-15|sort|uniq -c
Apache / MySQL 定期自动打包备份,自动上传到FTP
cd /var/www/witower/backups mysqldump -uroot -pPASSWD witower [--all-databases] | gzip -c > database.sql.gz cd /var/www/witower tar czf ~/witower_$((`date +%d`%3)).tar.gz ./ cd ~ curl -T witower_$((`date +%d`%3)).tar.gz ftp://HOST --user LOGIN:PASSWD # 使用 ssh 备份 scp all-databases_$((`date +%d`%7)).sql.gz uicestone@witower.com:~/backup/home-server/database/
MySQL更改数据目录
使用rsync通过ssh增量备份到远程目录
rsync -a -e ssh --info=progress2 /var/www uicestone@witower.com:~/backup/home-server
使用rsync增量同步照片,并检查同名不同照片
rsync -va --ignore-existing --remove-source-files /Volumes/External/下载/相机/ /Volumes/External/媒体存档/照片/2020/
rsync -nvac /Volumes/External/下载/相机/ /Volumes/External/媒体存档/照片/2020/
配置ssh-keygen做到无密码登录ssh
使用ssh-keygen命令在本地生成rsa_key和rsa_key.pub文件,将rsa_key.pub中的内容追加到目标机器目标用户的~/.ssh/authorized_keys内,如需创建文件,注意权限必须为600,.ssh目录的权限必须为700,/etc/ssh/sshd_config中RSA认证相关配置需开启
定时和延时任务
定时任务crontab -e已经很熟悉
延时任务,或者说一次性的定时任务,则通过at命令实现
sudo at [time] at> [command1] at> [command2] (Ctrl+D结束保存)
另有atq(检查队列),atrm(删除任务)供君选择。
Ubuntu定时自动安全更新,内附拆分日志方法
https://help.ubuntu.com/community/AutomaticSecurityUpdates
配置SNMP监控服务
360云监控使用SNMP协议,虽然360提供了服务器配置脚本,但好奇心+不放心还是让我自己配置了一下
sudo apt-get install snmp snmpd
CentOS的话包名为:CentOS下的一篇教程
net-snmp:提供了一个入口,使得监控服务器可以通过snmp协议从这个入口与被监控机器通信 net-snmp-devel: 是为了使用net-snmp-config, net-snmp-utils是为了使用snmpwalk net-snmp-libs: 提供了运行需要的库文件 net-snmp-utils: 提供了一套工具,可以利用snmp协议进行通信
按照/etc/snmp/snmpd.conf的提示,在/var/lib/snmp/snmpd.conf中创建了用户。但是测试失败。经过提醒,注释掉/etc/snmp/snmp.conf中的mibs,安装snmp-mibs-downloader包。再次运行本机测试脚本
snmpwalk -v 3 -l authNoPriv -a MD5 -u 'authOnlyUser' -A 'mypassword' '127.0.0.1:161' 'sysDescr'
成功。附赠测试UDP端口的方式
nc -vuz uice.lu 161
显示硬盘S.M.A.R.T.信息
sudo smartctl -a -d ata /dev/sda
递归列出所有子目录git status 原帖
for i in /var/www/*/; do (cd $i && (echo $i; git status; sudo git prune; git fsck; wp core version)); done
配置L2TP over IPSec VPN
在Ubuntu 16.04以上配置自动启动服务
新建启动脚本文件/etc/systemd/system/shadowsocks.service,
[Unit] Description=Shadowsocks [Service] TimeoutStartSec=0 ExecStart=/usr/bin/ssserver -c /etc/shadowsocks.json [Install] WantedBy=multi-user.target
执行以下命令启动 shadowsocks 服务:
systemctl enable shadowsocks systemctl start shadowsocks systemctl status shadowsocks -l
Git应用层代理
git config --global http.proxy socks5://127.0.0.1:1080
MongoDB备份和恢复
mongodump --gzip --db=<database> --archive=<path> mongorestore --gzip --archive=<path>
MongoDB Replication配置
Mongo> rs.initiate()
Elasticsearch 安装顺序 X-Pack证书配置 入门文档
MongoDB到Elasticsearch同步工具mongo-es
Nginx授权用户名密码访问
echo "username:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users
站点配置文件中加入
auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/htpasswd.users;
sudo切换用户的各种参数与用户环境、当前目录的对应
Summary of the differences found corrupted by user's HOME=/root uses root's PATH env vars sudo -i Y Y[2] N sudo -s N Y[2] Y sudo bash N Y[2] Y sudo su Y N[1] Y
sudo su USER SCRIPT / sudo su USER -c ‘COMMAND’
Ubuntu下pm2的正解:
- 脚本目录放在/var/www下,文件归属www-data
- 为www-data设置密码,设置shell为bash
- sudo pm2 startup ubuntu -u www-data
- 使用www-data启动pm2,运行pm2 save
- 编辑无sudo的部署命令,形成shell脚本xxx放在/usr/local/bin
- 使用自己的用户进入项目目录,运行sudo su -c ‘xxx’来部署
将目录修改时间批量修改为其中最新文件的修改时间(仅在macOS测试过)
for i in *; do (cd "$i"; touch -mt $(date -r `find . -type f -exec stat -f "%m" \{} \; | sort -n -r | head -1` "+%Y%m%d%H%M") . ); done
Ubuntu dpkg E: Sub-process 错误
sudo mv /var/lib/dpkg/info /var/lib/dpkg/info.bak sudo mkdir /var/lib/dpkg/info sudo apt-get update sudo apt-get -f install xxx sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info.bak sudo rm -rf /var/lib/dpkg/info sudo mv /var/lib/dpkg/info.bak /var/lib/dpkg/info
Linux 硬盘分区、格式化、挂载
这里都有
将一个非git目录和一个git仓库(的某一个分支)同步
git clone --bare --branch <NAME> <GIT URL> .git git config core.bare false git add .
MySQL 8.0的开发环境密码设空
-- 用Homebrew安装的MySQL8.0默认空密码,不可以运行mysql_secure_installation -- 遇上Sequel Pro无法连接的问题,需要把root默认验证方式改为mysql_native_password ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
服务器穿透本地内网1087
autossh -M 5678 -NR 1087 root@stirad.com
SSH到内网服务器
内网服务器上运行
autossh -p 22 -M 5678 -NR "*:8201:localhost:22" root@中间服务器
中间服务器上sshd要配置
# /etc/ssh/sshd_config GatewayPorts yes # sudo systemctl restart sshd
发表回复