本文为Oracle免费的x86_64 1C1G VPS环境
SSH等基本配置
在《Ubuntu Server 24.04 SSH快速配置》包含以下内容:
- 网络配置:ip与网关不需要配置,要检查DNS配置;使用IDC中心的DNS最佳,响应时间更短。
- SSH配置
- VIM配置
sudo apt install iputils-ping cron vim 7zip tree lsof net-tools telnet traceroute dnsutils
- 源:由于OCI的镜像,源使用默认的就好
- 卸载snapd:会导致 Oracle Cloud Agent 也会被卸载,在OCI的网站上,看不到VPS的监视情况。
- 添加普通用户:没有sudo权限的用户
时区与主机名
查看语言环境:locale
- 默认是C.UTF-8,代表不指定特定的地区,一般够用了;因为是Server,只有CLI没有GUI,也不用去安装中文包,再改为中文,除你有特殊应用运行。
查看时区:timedatectl
- 设置时区为 Asia/Shanghai:
sudo timedatectl set-timezone Asia/Shanghai
查看主机名:hostnamectl|grep hostname
- 默认主机名是创建的实例名,改主机名+重启:
sudo hostnamectl set-hostname NewName && sudo systemctl reboot
用户与组
查看在线用户连接: w、who,查看所有用户:cat /etc/passwd
强制踢用户:pkill -9 -u 用户名,强制关闭终端连接:pkill -kill -t pts/1
- 注意:自己可以踢自己,或都root可以踢其他用户;另外,还有更优雅的方式:
loginctl list-sessions # 查看会话连接
loginctl terminate-session <session_id> # 强制退出指定会话连接
#loginctl kill-session <session_id>
loginctl list-users
loginctl terminate-user <user>
#loginctl kill-user <user>- 自己可以踢自己,或都root可以踢其他用户
改密码 passwd、sudo passwd userName
- 不指定用户名是改自己的密码,要输入当前密码;
- root改其他用户密码,只需要输入新密码。
查看有哪些用户与组,具有sudo权限:sudo visudo
# 被授权用户名或组 登录主机=[(可用帐号)] [NOPASSWD: ]可执行命令
# 有%开头为组,没有的为用户名
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL
@includedir /etc/sudoers.d # 如果还有这样的行内容,就还要看这里面的内容;比如OCI的默认ubuntu用户,就是配置这个文件夹里的90-cloud-init-users文件里。
切换用户(要输入对应的密码) su - userName
使用指定用户运行VIM sudo -u www-data vim /data/www/wordPress/wp-config.php
查看用户信息:id userName
用户信息修改:usermod --help
- 比如改名,同时移到主目录路径:
usermod -l NewName OldName -m -d /home/NewName - 注意:涉及visudo时,也要同步修改
sudo vim /etc/sudoers.d/90-cloud-init-users
查看组中用户:grep ^组名 /etc/group
组的创建/改名/删除:groupadd/groupdel groupName1、groupmod --new-name NewName OldName
将用户加入组:usermod -a -G groupName1,groupName2 userName或 gpasswd -a user2,user3 mygroup1
将用户移除组:gpasswd -d userName groupName
CLI提示符只有$没有用户名与主机名,TAB键也没有自动补全:
- 先检查用户主目录
$HOME有没有.profile、.bashrc、.bash_logout文件,如果没有三个主目录文件,从其他用户里复制过来,退出再重新时,看是不是恢复了; - 再看
ls -l /etc/bash_completion权限,应该为-rwxr-xr-x,即所有人都可以执行。如果/etc/bash_completion文件没有,先安装sudo apt-get install bash-completion,再执行source ~/.bashrc
~/.bashrc
如果ls/ll命令的输出,没有用颜色显示不同类型的结果,可以添加参数 –color;不过,一般在.bashrc文件都有,见截图。

提示符文字没有颜色:在~/.bashrc中取消force_color_prompt=yes行的默认注释。
查看内存占用命令的别名:npm-mem、top-mem
force_color_prompt=yes # 默认是注释,取消注释后,提示符就有颜色了。
alias ll='ls -alFh' # 原有行,增加h,以友好方式显示文件大小
# My Command
# export PS1="\e[0;32m${PS1}\e[0m" # 确认提示符没有颜色,再启用此行。
alias npm-mem="ps -Ao user,pid,ppid,%mem,rss,%cpu,cmd --sort=+ppid|grep -E 'PID|nginx|php-fpm|mariadb'"
alias top-mem='ps -Ao user,pid,ppid,%mem,rss,%cpu,cmd --sort=-rss|head -n 11'
# 在bash里,执行 source ~/.bashrc 生效。
alias命令中双引号时要注意的事项
在bash中直接执行是成功的,
netstat -antu|grep -E '(0\.0\.0\.0|10\.0\.0\.103|::):(443|80)'|awk '{++S[$NF]} END {for(a in S) print a, S[a]}'
但执行.bashrc文件中
alisa httpcount="netstat -antu|grep -E '(0\.0\.0\.0|10\.0\.0\.103|::):(443|80)'|awk '{++S[$NF]} END {for(a in S) print a, S[a]}"
报错提示:
awk: cmd. line:1: {++S[]} END {for(a in S) print a, S[a]}
awk: cmd. line:1: ^ syntax error
原因当 alias 使用双引号时,其中的单引号会被解释,而 $NF 在 alias 定义时就被展开了(变成了空值),导致 awk 语法错误。
解决办法:
- 转义
$NF,写法变为\$NF,完整命令为alisa httpcount="netstat -antu|grep -E '(0\.0\.0\.0|10\.0\.0\.103|::):(443|80)'|awk '{++S[\$NF]} END {for(a in S) print a, S[a]}" - 在.bashrc文件中不使用alisa,改为函数
httpcount() {}。
~/remark
# update 2025/10/30
/etc/netplan/xxx.yml # ip address show && ip route
sudo netplan apply # 网卡配置生效
grep -Ev '^$|^#' /etc/systemd/resolved.conf # resolvectl status && grep -Ev '^$|^#' /etc/resolv.conf
sudo systemctl restart systemd-resolved # 永久DNS配置生效
查看内存占用前10的应用:top-mem,查看nginx、php-fpm、mariadb内存占用:npm-mem
查看分区大小:df -h,查看指定目录下子目录的大小:du -hd 1 /data
压缩:7za a file.7z /要压缩的目录
压缩:7za a -spf2 file.7z /目录1 /目录2 /文件A
解压:7za x file.7z -p{PWD} -o/DIR
grep -Ev '^$|^;' /etc/php/8.3/fpm/pool.d/www.conf
grep -Ev '^$|^;' /etc/php/8.3/fpm/php.ini
sudo systemctl restart php8.3-fpm
grep -Ev '^$|^\s*#' /etc/nginx/nginx.conf
grep -Ev '^$|^\s*#' /etc/nginx/sites-enabled/default
/etc/nginx/sites-enabled/blog.t725.cn
sudo nginx -t && sudo nginx -s reload
/var/log/nginx/error.log
/var/log/nginx/access.log
/data/www/log/nginx_25
grep -Ev '^$|^#' /etc/mysql/my.cnf
grep -Ev '^$|^#' /etc/mysql/mariadb.conf.d/50-server.cnf
sudo systemctl restart mariadb
iptables 与云安全网络规则
Oracle为所有提供的Ubuntu镜像都添加了iptables与默认规则,也就是另一个防火墙应用,导致在云安全规则里开放了80/443,也访问不了Nginx。
Oracle为什么使用iptables,而不是uwf呢?在这里描述了,启用uwf后,导致Ubuntu实例无法重新启动。
方式一:卸载iptables,依赖云安全网络规则管理
sudo systemctl status iptables
sudo systemctl stop iptables
sudo systemctl disable iptables
#sudo apt remove --purge iptables
方式二:不卸载,同时在iptables,添加访问规则:(没有验证,可看iptables --help)
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
sudo netfilter-persistent save
基本终端命令
更多见:centos
- 文件搜索:
find 路径 -name "文件名" -type 类型- 类型:普通文件 f,目录d,符号链接l,块设备文件b
- 示例1:
find / -path "/mnt/" -prune -o -name "*wine*"- 含义:在/下查找文件名中含有wine的文件,但排除/mnt/目录。
-prune是 find 命令中一个非常有用的选项,用于告诉 find 不要进入-path指定的目录;注意,不能与-depth-o(或):将 -prune 操作与下一个搜索条件连接起来。还有-a(且)、-not(求反)
- 示例2:
find / -path "*mnt*" -a -name "*wine*"- 含义:在/下查找目录名中包含mnt,且文件名中含有wine的文件。
- 更多使用:
find --help
- tar 压缩:
tar -czf file.tar.gz sDir;tar 解压:tar -xzf file.tar.gz -C dDir-c是创建,-z是使用gzip(不同格式不同值,见下面列表),-f是文件,sDir是要压缩的目录,-x是解压,dDir是解压的目录,解压不指定值是自动识别。-z:使用 gzip 压缩归档文件,比如:.tar.gz。-j:使用 bzip2 压缩归档文件,比如:.tar.bz2。-J:使用 xz 压缩归档文件,比如:.tar.xz。--lzip:使用 lzip 压缩归档文件,比如:.tar.lz。--lzma:使用 lzma 压缩归档文件,比如:.tar.lzma。--lzop:使用 lzop 压缩归档文件,比如:.tar.lzop。--zstd:使用 zstd 压缩归档文件,比如:.tar.lzstd。-a:自动选择压缩方式(基于归档文件的扩展名,如 .tar.gz、.tar.bz2 等)。
- 清屏:
clear - 创建软链接:
ln -s sFiles dFiles - 查找进程:
ps -aux | grep -E 'PID|wps' - 强制关闭进程:
kill -9 pid - 文件权限设置=/增加+/减少-:
chmod u=rw,g=,o= .ssh/sshCertA*.* - 改变文件所有者:
chown [-hR] <用户名[:组名]> <文件或目录> - 查看分区与挂载点,及大小与使用量:
df -h;查看指定目录下子目录的大小:du -hd 1 /data - 查看监听端口:
netstat -ano|grep :1080或sudo lsof -i:1080 - 查看当前目录:
pwd - 查找命令:
type <name>或which <name> - 别名命令:
alias msedit='~/opt/edit-1.0.0-x86_64-linux-gnu'- 查看已有别名:
alias - 取消别名:
unalias msedit - 别名永久方法:在
~/.bashrc文件的最后一行添加别名命令后,使用source ~/.bashrc生效。
- 查看已有别名:
- 系统信息:设置-系统-关于 或 使用命令
neofetch(需要先安装)
发表回复