Linux系统使用

Debian 系统使用

安装中文输入法

apt install fcitx-googlepinyin
# 重启

Debian 11 系统,xfce 桌面环境

screenfetch:此命令行工具以 ascii 格式显示 Linux 发行版的 logo 以及一些基本的系统信息。

安装:sudo apt install screenfetch

配置静态 ip 地址:vim /etc/network/interfaces

# 修改 dhcp 参数为 static
iface enp2s0 inet static
    address 192.168.31.211
    netmask 255.255.255.0
    gateway 192.168.31.1
    dns-nameservers 8.8.8.8

修改 dns 服务器:vim /etc/resolv.conf

nameserver 223.5.5.5

ubuntu 配置静态 ip:修改 vim /etc/netplan/00-installer-config.yaml 配置如下。然后输入 netplan apply 重启

# This is the network config written by 'subiquity'
network:
  ethernets:
    ens33:
      dhcp4: false                                     # 禁用DHCP
      addresses: [192.168.31.212/24]                   # 设置静态IP地址和掩码
      gateway4: 192.168.31.1                           # 设置网关地址
      nameservers:
              addresses: [8.8.8.8,114.114.114.114]     # 设置dns,主,备
  version: 2

更换软件源

清华大学源: https://mirrors.tuna.tsinghua.edu.cn/help/debian/

更新失败,出现安全证书不信任的问题,报错信息如下:

Err:3 https://mirrors.cloud.tencent.com/debian bullseye InRelease
  Certificate verification failed: The certificate is NOT trusted.The certificate issuer is unknown.Could not handshake: Error in the certificate verification.[IP: 42.81.215.147 443]

解决方法:

1)把镜像源的 https 协议换成 http 协议

2)安装依赖包 apt install apt-transport-https ca-certificates。有一种不配源怎么安装,不安装怎么配源的死锁感。

问题

vmtools 无法复制

安装适用于 Linux 虚拟操作系统的 VMware Tools 的开源版本

# 对于服务器和台式机:  
sudo apt install open-vm-tools  
sudo apt install open-vm-tools-desktop
# 重启

ssh 登陆问题

ssh 未安装:apt install ssh

修改 sshd_config 文件:vim /etc/ssh/sshd_config,将 PermitRootLogin prohibit-password 的注释去掉,设置为 yes,将 PasswordAuthentication no 的注释去掉,并且设置为 yes

ssh 远程登录报错:ssh-keygen -R 服务器的IP,清除之前的认证信息,重新连接

IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed.The fingerprint for the ED25519 key sent by the remote host is SHA256:1kSo7fRNucqvyuaHQVg6bFoUkkDEKan90jW3ZQ2FNWE.Please contact your system administrator.Add correct host key in /Users/bluefox/.ssh/known_hosts to get rid of this message.Offending ED25519 key in /Users/bluefox/.ssh/known_hosts:15 Host key for 192.168.31.195 has changed and you have requested strict checking.

会出现这些信息是因为,第一次连接时,会生成一个认证,储存在客户端(也就是用SSH连线其他电脑的那个,自己操作的那个)中的known_hosts,但是如果服务器验证过了,认证资讯当然也会更改,服务器端与客户端不同时,就会跳出错误啦~因此,只要把电脑中的认证资讯删除,连线时重新生成,就一切完美啦~要删除很简单,只要在客户端输入一个指令:ssh-keygen -R +输入服务器的IP

vim 安装失败:系统自带了一个依赖包 vim-common

apt remove vim-common  # 卸载这个依赖包
apt install vim # 重新安装

log 报错

Message from syslogd@meijie at Jun 14 18:52:17 ...
 kernel:[23041.756132] mce: [Hardware Error]: CPU 2: Machine Check: 0 Bank 4: c400000000010151

Message from syslogd@meijie at Jun 14 18:52:17 ...
 kernel:[23041.756168] mce: [Hardware Error]: TSC 0 ADDR 20ff43e0

Message from syslogd@meijie at Jun 14 18:52:17 ...
 kernel:[23041.756210] mce: [Hardware Error]: PROCESSOR 0:406c4 TIME 1718362337 SOCKET 0 APIC 4 microcode 408

使用xshell连接一台服务器后,一直报Message from syslogd@xxx at xxx 。影响终端的输入

解决办法
1. vi /etc/rsyslog.conf
2. 注释掉:*.emerg
3. 重启:service rsyslog restart

安装 java

源安装

# 安装的是java11.0.14版本
apt install default-jdk

手动安装

下载 openjdk 8 压缩包,解压到 /usr/local/ 目录下。配置如下环境变量

export JAVA_HOME=/usr/local/java安装路径
export PATH=$JAVA_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

clash-verge 中文乱码

缺失字体导致:apt install ttf-wqy-microhei

zsh 安装和使用

查看当前 shell:echo $SHELL

查看系统中安装了哪些 shell:cat /etc/shells

切换 shell 环境:chsh -s /bin/zsh

安装:apt install zsh

安装字体库

git clone https://github.com/ryanoasis/nerd-fonts.git --depth 1
cd nerd-fonts
./install.sh

安装主题: https://github.com/romkatv/powerlevel10k

git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git /usr/local/powerlevel10k
echo 'source /usr/local/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc 

安装 zsh 插件

  • zsh-autosuggestions:这个是自动建议插件,能够自动提示你需要的命令。根据历史命令提示
  • zsh-syntax-highlighting:这个是代码高亮插件,能够使你的命令行各个命令清晰明了。
  • zsh-completions:命令自动补全,不太好使
git clone https://github.com/zsh-users/zsh-autosuggestions /usr/local/zsh-plugins/zsh-autosuggestions  # 自动补全
git clone https://github.com/zsh-users/zsh-syntax-highlighting /usr/local/zsh-plugins/zsh-syntax-highlighting  # 语法高亮
git clone --depth=1 https://github.com/zsh-users/zsh-completions.git /usr/local/zsh-completions  # 命令选项自动补齐,不太好使

# fork的仓库,使用ssh连接
git clone git@github.com:BluefoxQAQ/zsh-autosuggestions.git /usr/local/zsh-plugins/zsh-autosuggestions
git clone git@github.com:BluefoxQAQ/zsh-syntax-highlighting.git /usr/local/zsh-plugins/zsh-syntax-highlighting
git clone git@github.com:BluefoxQAQ/zsh-completions.git /usr/local/zsh-completions
# 启用插件
source /usr/local/zsh-plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/local/zsh-plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
# zsh-completions 命令自动补全插件启用配置
fpath=(/usr/local/zsh-completions/src $fpath)
autoload -Uz compinit && compinit

# 启用彩色提示符
autoload -U colors && colors

# 每次刷新提示符
setopt prompt_subst

# 设置提示符
PROMPT='❰%{$fg[green]%}%n%{$reset_color%}|%{$fg[yellow]%}%1~%{$reset_color%}%{$fg[blue]%}$(git branch --show-current 2&> /dev/null | xargs -I branch echo "(branch)")%{$reset_color%}❱ '

zsh 自定义提示符

%n  :当前用户名
%m  :当前主机名的第一元素
%~  :是当前目录。符号表示当前工作目录路径,〜除去$ HOME目录位置。
%#  :表示如果外壳程序以root(管理员)特权运行,则提示符将显示#,否则,则提供%。

%B  --- %b :加粗
%F{red} ---  %f :配置文本颜色
%U ---  %u :添加下划线
\n  换行,注意需要特殊符号$

PS1="%F{32}%B%n@%m%b%f   :     %B %F{34}%~%f% # %b "

我的 bashrc 配置

# PS1='[\[\e[1;35;1m\]\t \[\e[1;32;1m\]\u@\H \[\e[1;33;1m\]\w] \n \$ \[\e[1;37;1m\]'  # 废弃,不好看
# PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' # bash用这个
# export PS1="%10F%m%f:%11F%1~%f \$ "  # zsh用这个
# export PS1='%F{#00ffff}%B%n@%m%b%f:%B%F{#00afff}%~%f%#%b '  # zsh用这个
# export PS1=$'%F{#00ffff}%B%n@%m%b%f:%B%F{#00afff}%~%f%b\n>%# '  # zsh用这个
export PS1=$'%F{#00ffff}%B%n@%m%b%f:%B%F{#00afff}%~%f%b\n %F{#ffff00}>%#%b%f ' # zsh用这个,双行

alias ls='ls --color'
alias ll='ls -la --color'

alias grep='grep --color=auto'
export GREP_COLOR="1;31"

export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:'

# 启用插件
source /usr/local/zsh-plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/local/zsh-plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
# fpath=(/usr/local/zsh-completions/src $fpath)  # 命令选项自动补齐,不用
# autoload -Uz compinit && compinit

# 启用彩色提示符
autoload -U colors && colors

# 每次刷新提示符
setopt prompt_subst

# 设置提示符
# PROMPT='❰%{$fg[green]%}%n%{$reset_color%}|%{$fg[yellow]%}%1~%{$reset_color%}%{$fg[blue]%}$(git branch --show-current 2&> /dev/null | xargs -I branch echo "(branch)")%{$reset_color%}❱ '

# zsh历史命令存储
HISTFILE="$HOME/.zsh_history"
HISTSIZE=10000000
SAVEHIST=10000000
setopt BANG_HIST                 # Treat the '!' character specially during expansion.
setopt EXTENDED_HISTORY          # Write the history file in the ":start:elapsed;command" format.
setopt INC_APPEND_HISTORY        # Write to the history file immediately, not when the shell exits.
setopt SHARE_HISTORY             # Share history between all sessions.
setopt HIST_EXPIRE_DUPS_FIRST    # Expire duplicate entries first when trimming history.
setopt HIST_IGNORE_DUPS          # Don't record an entry that was just recorded again.
setopt HIST_IGNORE_ALL_DUPS      # Delete old recorded entry if new entry is a duplicate.
setopt HIST_FIND_NO_DUPS         # Do not display a line previously found.
setopt HIST_IGNORE_SPACE         # Don't record an entry starting with a space.
setopt HIST_SAVE_NO_DUPS         # Don't write duplicate entries in the history file.
setopt HIST_REDUCE_BLANKS        # Remove superfluous blanks before recording entry.
setopt HIST_VERIFY               # Don't execute immediately upon history expansion.
setopt HIST_BEEP                 # Beep when accessing nonexistent history.


# 命令选项自动补齐,不太好使
#_proxy(){
#    local cur cword words  # 定义变量,cur表示当前光标下的单词
#    read -cn cword  # 所有指令集
#    read -Ac words  # 当前指令的索引值
#    cur="$words[$cword-1]" # 当前指令值
#    if [ $cur = "proxy" ]  # 根据当前不同指令返回对应的提示信息
#    then
#        reply=(start stop restart connect route help)  # 必须是值reply,返回提示信息内容
#    elif [ $cur = "route" ]
#    then
#        reply=(add delete)
#    else
#        reply=()
#    fi
#}
# compctl -K _proxy proxy   # -K 表示使用函数
# enable completion features
# autoload -Uz compinit
# compinit -d ./zcompdump

将上述内容复制到 .bashrc 文件末尾。

文件配置作用讲解:

1)alias 的作用是给命令起一个别的名字(作用的是命令)。export 的作用是设置一个变量(作用的是变量),建议使用。这两个命令在 bash 中“=”两边都不能含有空格

注意:在非交互式 shell 中,默认不能使用 alias 别名。例如,ll 命令他就不知道是啥意思,因为这是取得别名,系统里没有这个命令。

2)PS 1:shell 提示符

参考: https://zhuanlan.zhihu.com/p/348416919

PS 1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

解释:

PS 1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '   # 颜色就这样吧
[ root@localhost ~]# echo $PS 1
[\u@\h \W]\$
每个被转义的特殊字符解释如下:
\u: 显示当前用户
\h: 显示主机名
\W: 打印当前所在目录
\$: 如果有效 UID 为 0,则显示#(指的是 root 用户),否则显示$(指的是普通用户)

3)ls 显示文件夹颜色

alias ls='ls --color'

4)grep 高亮

这里用到 grep 的一个参数 --color,color 有三个值供选择:never、always、auto。

always 和 auto 的区别就是,always 会在任何情况下都给匹配字段加上颜色标记,而 auto 则只在输出到终端时才加上颜色。

# export GREP_OPTIONS='--color=always' # grep: warning: GREP_OPTIONS is deprecated(弃用); please use an alias or script 
alias grep="grep --color=auto"
export GREP_COLOR='1; 32'

具体用什么颜色,可以通过

export GREP_COLOR='a; b' #默认是1 ;31,即高亮的红色

来设置,其中: a 可以选择:【0,1,4,5,7,8】

0 关闭所有属性 1 设置高亮度 4 下划线 5 闪烁 7 反显 8 消隐

b 可以选择:【30-37 或 40-47】

字体色背景色颜色

30 40 黑色

31 41 红色

32 42 绿色

33 43 黄色

34 44 蓝色

35 45 紫红色

36 46 青蓝色

37 47 白色

不同文件不同颜色

export LS_COLORS='rs=0:di=01; 34:ln=01; 36:mh=00:pi=40; 33:so=01; 35:do=01; 35:bd=40; 33; 01:cd=40; 33; 01:or=40; 31; 01:mi=00:su=37; 41:sg=30; 43:ca=30; 41:tw=30; 42:ow=34; 42:st=37; 44:ex=01; 32:*.tar=01; 31:*.tgz=01; 31:*.arc=01; 31:*.arj=01; 31:*.taz=01; 31:*.lha=01; 31:*.lz 4=01; 31:*.lzh=01; 31:*.lzma=01; 31:*.tlz=01; 31:*.txz=01; 31:*.tzo=01; 31:*.t 7 z=01; 31:*.zip=01; 31:*.z=01; 31:*.dz=01; 31:*.gz=01; 31:*.lrz=01; 31:*.lz=01; 31:*.lzo=01; 31:*.xz=01; 31:*.zst=01; 31:*.tzst=01; 31:*.bz 2=01; 31:*.bz=01; 31:*.tbz=01; 31:*.tbz 2=01; 31:*.tz=01; 31:*.deb=01; 31:*.rpm=01; 31:*.jar=01; 31:*.war=01; 31:*.ear=01; 31:*.sar=01; 31:*.rar=01; 31:*.alz=01; 31:*.ace=01; 31:*.zoo=01; 31:*.cpio=01; 31:*.7 z=01; 31:*.rz=01; 31:*.cab=01; 31:*.wim=01; 31:*.swm=01; 31:*.dwm=01; 31:*.esd=01; 31:*.jpg=01; 35:*.jpeg=01; 35:*.mjpg=01; 35:*.mjpeg=01; 35:*.gif=01; 35:*.bmp=01; 35:*.pbm=01; 35:*.pgm=01; 35:*.ppm=01; 35:*.tga=01; 35:*.xbm=01; 35:*.xpm=01; 35:*.tif=01; 35:*.tiff=01; 35:*.png=01; 35:*.svg=01; 35:*.svgz=01; 35:*.mng=01; 35:*.pcx=01; 35:*.mov=01; 35:*.mpg=01; 35:*.mpeg=01; 35:*.m 2 v=01; 35:*.mkv=01; 35:*.webm=01; 35:*.ogm=01; 35:*.mp 4=01; 35:*.m 4 v=01; 35:*.mp 4 v=01; 35:*.vob=01; 35:*.qt=01; 35:*.nuv=01; 35:*.wmv=01; 35:*.asf=01; 35:*.rm=01; 35:*.rmvb=01; 35:*.flc=01; 35:*.avi=01; 35:*.fli=01; 35:*.flv=01; 35:*.gl=01; 35:*.dl=01; 35:*.xcf=01; 35:*.xwd=01; 35:*.yuv=01; 35:*.cgm=01; 35:*.emf=01; 35:*.ogv=01; 35:*.ogx=01; 35:*.aac=00; 36:*.au=00; 36:*.flac=00; 36:*.m 4 a=00; 36:*.mid=00; 36:*.midi=00; 36:*.mka=00; 36:*.mp 3=00; 36:*.mpc=00; 36:*.ogg=00; 36:*.ra=00; 36:*.wav=00; 36:*.oga=00; 36:*.opus=00; 36:*.spx=00; 36:*.xspf=00; 36: '

查看网卡是否为千兆

ifconfig  # 获取网卡名字enp3s0
ethtool enp3s0  # 查看speed所显示的数值
apt install ethtool  # 没有安装一下工具

开启 telnet 服务

# 安装软件包
apt install xinetd telnetd
/etc/init.d/xinetd status  # 查看启动状态
/etc/init.d/xinetd start  # 启动服务

创建 telnet 文件,写入以下内容:vim /etc/xinetd.d/telnet

service telnet
{
    disable = no
    flags           = REUSE
    socket_type     = stream
    wait            = no
    user            = root
    server          = /usr/sbin/telnetd  # 或者是/usr/sbin/in.telnetd,不同的系统不一样
    server_args     = -h
    log_on_failure  += USERID
}

注意:

  • /usr/sbin/telnetd 这个地方是 telnet 的启动位置,有些文章上写得是 /usr/sbin/in.telnetd,可以通过 /etc/init.d/xinetd status 命令查看一下是否报错,如果报错的话,说明位置不对,需要修改。(可以用 find 命令查找 telnetd 的位置所在)
  • 默认 root 用户是不允许登录的。可以通过修改配置文件让 root 用户登录。自行百度。

重启网络服务

问题 :使用 systemctl restart network 或 service network restart 命令重启网卡失败。

分析 :原因其实也很简单,命令用错了,造成了找不到相应的网卡服务。

解决:

1、可以尝试使用以下命令:

service network-manager restart

2、如果是 Kali Linux(Debian),则需要用以下命令:

service networking restart

3、如果是 Centos 8,则需要用以下命令:

nmcli c reload

安装 msf

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall 
chmod 755 msfinstall
./msfinstall

更换默认的 java 版本

如果你的系统上安装了多个 Java 版本,你可以使用 update-alternatives --config java 来设置默认的 Java 版本。

update-alternatives --install /usr/bin/java  java  /opt/jdk1.8.0_91/bin/java 2
update-alternatives --install /usr/bin/java  java  /opt/jdk1.8.0_111/bin/java 1

第一个参数 --install 表示向 update-alternatives 注册服务名。

第二个参数是注册最终地址,成功后将会把命令在这个固定的目的地址做真实命令的软链,以后管理就是管理这个软链;

第三个参数:服务名,以后管理时以它为关联依据。

第四个参数,被管理的命令绝对路径。

第五个参数,优先级,数字越大优先级越高。

update-alternatives --auto java   # 使用自动的版本。优先级最高的
update-alternatives --display java  #查看已注册列表

kali 相关

1、修改语言为中文

# 输入命令
sudo dpkg-reconfigure locales
# 在弹出的语言设置页面,选择zh_CN.UTF-8
# 然后输入命令
sudo update-locale LANG=zh_CN.UTF-8
# 然后重启

2、安装中文输入法

apt install fcitx fcitx-pinyin
# 安装后重启

安装完后需要进行相关设置

3、gnome 桌面无法用 root 登录,修改两个配置文件,然后重启

vim /etc/pam.d/gdm-autologin
vim /etc/pam.d/gdm-password
# 将 auth required pam_succeed_if.so user != root quiet_success注释掉。两个文件都是这样操作

安装软件

configure、make、make install 命令

configure:配置,是用来检测你的安装平台的目标特征的。比如它会检测你是不是有 CC 或 GCC,并不是需要 CC 或 GCC,它是个 shell 脚本。configure 脚本负责在使用的系统上准备好软件的构建环境。确保接下来的构建和安装过程所需要的依赖准备好,并且搞清楚使用这些依赖需要的东西。

make:构建,用来编译,它从 Makefile 中读取指令,然后编译。下载的源码包一般没有一个最终的 Makefile 文件,一般是一个模版文件,然后 configure 根据系统的参数生成一个定制化的 Makefile 文件。这个过程会执行在 Makefile 文件中定义的一系列任务将软件源代码编译成可执行文件。

make install:安装,它也从 Makefile 中读取指令,安装到指定的位置。make install 命令就是将可执行文件、第三方依赖包和文档复制到正确的路径。

清除 make 生成的文件:make clean

清除 make 和 configure 生成的文件,包括 Makefile:make distclean

apt 源安装 php

由于 debian 11 带的 php 版本是 7.4,有点老,所以我们可以使用 debian 开发者 Ondřej Surý 维护的 php 源 deb.sury.org

注意:以下方式还可以安装 php 5.6 版本

# 首先,使用下面的命令安装所须的软件包:
apt install ca-certificates apt-transport-https software-properties-common -y

# 安装所须软件包后,使用以下命令将 Sury 存储库添加到 APT:
echo "deb [https://packages.sury.org/php/](https://packages.sury.org/php/) $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/sury-php.list

# 然后,使用以下命令下载并添加 GPG 密钥:
wget -qO - [https://packages.sury.org/php/apt.gpg](https://packages.sury.org/php/apt.gpg) | apt-key add -
# 上述添加 GPG 密钥的命令会提示 Warning: apt-key is deprecated,但是可以执行成功,如果不想要报 Warning 可以换成下面的命令:
wget -O /etc/apt/trusted.gpg.d/php.gpg [https://packages.sury.org/php/apt.gpg](https://packages.sury.org/php/apt.gpg)

# 完成后,使用以下命令更新存储库,到此,sury 源添加完成。
apt update

安装 php 指定版本

# 如果要安装 php 的最新版本,可以执行:
apt install php-fpm php-mysql php-mbstring php-curl php-dom php-imagick php-zip php-gd php-intl
# 如果要安装指定的版本,例如安装 php8.0,可以执行:
apt install php8.0-fpm php8.0-mysql php8.0-mbstring php8.0-curl php8.0-dom php8.0-imagick php8.0-zip php8.0-gd php8.0-intl
apt install php5.6-fpm php5.6-mysql php5.6-mbstring php5.6-curl php5.6-dom php5.6-imagick php5.6-zip php5.6-gd php5.6-intl

# 注意,使用命令 apt install php8.0 后,会一并安装Apache。
# php 指的应该是整套能运行 php 的环境,php 需要在 libapache2-mod-php5, libapache2-mod-php5filter, php5-cgi, or php5-fpm 以上环境之一运行,如果没有则默认选了第一种,所以会推荐安装 apache。参考回答: https://learnku.com/articles/55616](https://learnku.com/articles/55616

启动 php-fpm:systemctl status php8.0-fpm.service

源码编译安装 php

安装编译程序和相关依赖,可以运行 ./configure 命令检查。缺啥安装啥

apt-get install gcc make libxml2 libxml2-dev zlib1g-dev libcurl4-gnutls-dev libreadline-dev

创建安装目录

mkdir -p /usr/local/php/5.6

下载 php 5.6 的源码包,解压后进入源码文件夹下

生成配置文件

./configure --prefix=/usr/local/php/5.6 --with-config-file-path=/usr/local/php/5.6 --enable-fpm --enable-cli

出现问题:报错 Cannot find OpenSSL's libraries

运行命令:find / -name libssl.so,输出:/usr/lib/x86_64-linux-gnu/libssl.so

建立软连接:ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib

重新编译即可

编译、安装

make && make install

复制 php.ini

# php.ini-development(开发环境用)与php.ini-production(生产环境用)
cp php.ini-production /usr/local/php/5.6/php.ini

复制启动脚本

cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php5.6-fpm
chmod +x /etc/init.d/php5.6-fpm

复制生成 php-fpm.conf 文件

cp /usr/local/php/5.6/etc/php-fpm.conf.default /usr/local/php/5.6/etc/php-fpm.conf

修改 php-fpm.conf

去掉 pid = run/php-fpm.pid 前面的分号
并在listen = 127.0.0.1:9000后面添加
listen.allowed_clients = 127.0.0.1

参考: https://blog.csdn.net/qq_43017750/article/details/105053831

安装 mysql

安装

  • 配置 MySQL 存储库安装

MySQL 全球最流行的开源关系型数据库管理系统,它在默认的 Debian 存储库中不可用。 MariaDB 是 Debian 10 中的默认数据库系统。MySQL 已经为我们提供了一个 Debian 的 Deb 包,通常是十几 K。我们选择 download。

sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb

安装 MySQL

sudo apt update
sudo apt install mysql-server

安装完成后,MySQL 服务会默认自动运行。

  • docker 安装 MySQL
docker push registry.cn-hangzhou.aliyuncs.com/lanhuli/mysql:5.7

创建数据存储目录:此举是为了避免 mysql 镜像停止运行后数据丢失,做到存算分离

  • /data/mysql/log:/var/log/mysql
  • /data/mysql/data:/var/lib/mysql
  • /data/mysql/conf.d:/etc/mysql/conf.d
  • /data/mysql/my.cnf:/etc/my.cnf

启动

docker run --name mysql-5.7 \
--restart=always \
-p 3306:3306 \
-v /data/mysql/log:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf.d:/etc/mysql/conf.d \
-v /data/mysql/my.cnf:/etc/my.cnf \
-e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} \
-d registry.cn-hangzhou.aliyuncs.com/lanhuli/mysql:5.7

禁止 root 远程登录

查看现有 root 用户权限:SELECT User, Host FROM mysql.user WHERE User = 'root';

mysql> SELECT User, Host FROM mysql.user WHERE User = 'root';    # 查看现有 root 用户权限
+------+-----------+
| User | Host      |
+------+-----------+
| root | %         |   <-- 这个表示允许远程访问
| root | localhost |
+------+-----------+
2 rows in set (0.00 sec)

mysql> DROP USER 'root'@'%';    # 删除允许远程访问的 root 用户
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;    # 刷新权限,不刷也行
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT User, Host FROM mysql.user WHERE User = 'root';    # 再次查看
+------+-----------+
| User | Host      |
+------+-----------+
| root | localhost |
+------+-----------+
1 row in set (0.00 sec)

创建用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
  • username:你将创建的用户名
  • host:指定该用户在哪个主机上可以登陆,如果是本地用户可用 localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符 %
  • password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

授权

GRANT ALL privileges ON databasename.tablename TO 'username'@'host';

# 授予所有数据库的完整权限(类似root)
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;

# 授予 mydb 数据库的所有权限
GRANT ALL PRIVILEGES ON mydb.* TO 'remote_user'@'%';

# 或授予部分权限(SELECT/INSERT/UPDATE/DELETE)
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'remote_user'@'%';

# 刷新权限
FLUSH PRIVILEGES;
  • privileges:用户的操作权限,如 SELECTINSERTUPDATE 等,如果要授予所的权限则使用 ALL
  • databasename:数据库名
  • tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用 * 表示,如 *.*

创建数据库

-- 要是数据库已经存在,执行此命令不会报错,只会返回一个提示信息。
-- 通过 `CHARACTER SET`(简称为 `CHARSET`)和 `COLLATE` 来明确数据库使用的字符集和排序规则
CREATE DATABASE IF NOT EXISTS e_commerce
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;

常见的字符集和排序规则组合有:

  • utf8mb4 + utf8mb4_unicode_ci(支持存储 emoji 表情,是比较推荐的组合)
  • latin1 + latin1_swedish_ci(这是 MySQL 的默认设置)

数据库备份

使用 mysqldump 进行备份

mysqldump -u root -p --single-transaction --routines --triggers --events --master-data=2 --flush-logs --all-databases --set-gtid-purged=OFF --ignore-table=mysql.general_log --ignore-table=mysql.slow_log > full_backup.sql

# MySQL 默认不开启 binlog,添加--master-data参数会报错,可以去掉
mysqldump -u root -p --single-transaction --routines --triggers --events --flush-logs --all-databases --set-gtid-purged=OFF --ignore-table=mysql.general_log --ignore-table=mysql.slow_log > full_backup.sql

重置密码(注意版本)

1、知道旧密码,登陆 MySQL

MySQL 8.0 之前:set password for root@localhost = password ('root 123');

MySQL 8.0 之后:ALTER user root@localhost IDENTIFIED BY 'root 0123';

问题:

简单密码不符合策略

这个与验证密码策略 validate_password_policy 的值有关。默认是 1,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。如果不想设置 8 位,或者想设置简单点,可以选择 Policy 0.

在修改策略之前它需要你先改密码

这是其它的一些密码设置

SHOW VARIABLES LIKE 'validate_password%';

set global validate_password_policy=0;
set global validate_password_length=6;
set password for root@localhost = password ('root 123');

2、忘记密码

第一步:在命令行输入 net stop mysql 命令关闭 mysql 服务

第二步:使用--skip-grant-tables 选项启动 mysql 服务(服务器将不加载权限判断,任何用户都能访问数据库)

在命令行输入 mysqld --skip-grant-tables

命令运行之后,用户无法再输入指令,此时如果在任务管理器中可以看到名称为 mysqld 的进程,则表示可以用 root 用户登录服务器了

第三步:打开另一个命令行窗口,输入不加密码的登录命令

mysql -u root

登录成功后可以使用 update 语句修改密码

修改完成后,必须使用 flush privileges 语句刷新权限表,这样新的密码才能生效

第四步:将输入 mysqld --skip-grant-tables 命令的命令行窗口关闭,接下来就可以使用新密码登录 mysql 服务器了

3、root 用户自带了一个随机密码

一般来说 mysql 安装完之后默认是没有密码的,但是在执行 mysqld --initialize 之后会初始化密码 (默认密码为随机的高强度密码)这个密码会储存在错误日志中。

找到日志:find / -name "mysqld.log"

打开查找:cat /var/log/mysqld.log|grep password

安装 Samba

安装:

apt install samba smbclient samba-common # 安装 smaba 即可
# 用于实现 SMB/CIFS(Server Message Block/Common Internet File System)协议。samba 服务器提供了文件共享和打印服务,允许 Windows 客户端通过网络与 Linux/UNIX 服务器交互
# samba 软件包的公共文件和库。它包含一些共享的配置文件、脚本、语言文件和其他公共资源,这些资源被 samba 服务器和客户端程序所共享和使用。
# samba 软件包的客户端组件。它提供了一些用于与 samba 服务器进行交互的命令行工具,例如 smbclient、smbget 和 smbtree 等。这些工具允许用户在 Linux/UNIX 系统上访问和管理远程的 samba 共享文件夹。

设置为开机启动:systemctl enable smbd

指定账户访问

# 创建一个用来共享的目录
sudo mkdir -p /home/work/sharedir
# 创建一个账户,用来登录
sudo useradd smbuser -s /usr/sbin/nologin
# 修改文件权限使得 smbuser 用户能够访问共享路径
sudo chown smbuser:smbuser /home/work/sharedir
# 将用户 smbuser 添加到 samba 的 smbpasswd file 中(即在 samba 服务中注册该账户)
sudo smbpasswd -a smbuser

修改 samba 配置文件(/etc/samba/smb.conf

# 用户访问时看到的名字
[myshare]
    # 共享文件夹的注释说明
    comment = 锐捷小主机共享
    # 需要填写实际的共享文件夹的路径
    path = /srv/share
    # 设置为可写入
    writable = yes
    #设置可访问的用户 ,此处为前面添加的用户 smbuser(注意 users 不要拼写错误)
    valid users = xujiajun
    #是否允许访客 ,否
    guest ok = no
    #可浏览 ,是
    browsable = yes
    # 新建文件的权限
    create mask = 0777
    # 新建目录即文件夹的权限
    directory mask = 0777

配置含义

[共享名称]: 共享中看到的共享目录名  
comment = 共享的描述. 
path = 共享目录路径 (可以用%u、%m 这样的宏来代替路径如:/home/share/%u)   
browseable = yes/no 指定该共享是否在“网上邻居”中可见。  
writable = yes/no 指定该共享路径是否可写。  
read only = yes/no 设置共享目录为只读 (注意设置不要与 writable 有冲突)   
available = yes/no 指定该共享资源是否可用。  
admin users = bobyuan,jane 指定该共享的管理员, 用户验证方式为“security=share”时,此项无效。   
valid users = bobyuan,jane 允许访问该共享的用户或组-“@+组名”   
invalid users = 禁止访问该共享的用户与组 (同上)   
write list = 允许写入该共享的用户  
public = yes/no 共享是否允许 guest 账户访问。   
guest ok = yes/no 意义同“public”。  
create mask = 0700 指定用户通过 Samba 在该共享目录中创建文件的默认权限。0600 代表创建文件的权限为 rw-------  
directory mask = 0700 指定用户通过 Samba 在该共享目录中创建目录的默认权限。0600 代表创建目录的权限为 rwx------

安装 frp

frp 项目地址: https://github.com/fatedier/frp

官方文档: https://gofrp.org/zh-cn/

ssh 转发: https://gofrp.org/zh-cn/docs/examples/ssh/

服务端配置,修改 frps.toml。新版 frp 配置和旧版的字段名不太一样。注意:新版字符串要加双引号。参考:新版参数

[common]
# 服务端监听地址,用于接收 frpc 的连接,默认监听 0.0.0.0。
bindAddr = "0.0.0.0"
# 10000 为服务端 frp 与客户端 frp 相互通信的端口。服务端监听端口,默认值为 7000。
bindPort = 10000
# HTTP 请求的监听端口为 8080
vhostHTTPPort = 8080
# 设置连接密钥
token="qwer1234"
# 设置 frp 后台端口
dashboard_port=8000
# 设置后台帐号和密码
dashboard_user="admin"
dashboard_pwd = "××××××××××"

客户端配置,修改 frpc.toml

[common]
# 服务器的公网地址
serverAddr = "103.246.244.137"
# 10000 为服务端 frp 与客户端 frp 相互通信的端口
serverPort = 10000
# 设置连接密钥
token = "qwer1234"

[[proxies]]
name = "web" # name 值唯一
type = "http"
localPort = 80
customDomains = ["omv.lanhuli.top"]


[smb]
# 文件共享 smb 协议通过 tcp 通信
type = tcp
local_ip = 127.0.0.1
# smb 协议的本地端口
local_port = 445
# remotePort 表示在 frp 服务端监听的端口,访问此端口的流量将被转发到本地服务的相应端口。
# 设定远程端口,当访问服务器的 8090 端口时,数据会被转发到本地 445 端口
remote_port = 8089

服务端运行 frp 命令:./frps -c frps.toml

客户端运行 frp 命令:./frpc -c frpc.toml

我的配置

bindPort = 16669
auth.token = "123456"

# 服务端面板
webServer.addr = "0.0.0.0"
webServer.port = 16668
webServer.user = "123456789"
webServer.password = "123456789"

客户端

serverAddr = "x.x.x.x"
serverPort = 16669
auth.token = "123456"

# 客户端面板
webServer.addr = "0.0.0.0"
webServer.port = 7400
webServer.user = "admin"
webServer.password = "admin"

[[proxies]]
name = "omv"
type = "tcp"
localIP = "127.0.0.1"
localPort = 26660
remotePort = 16660

# docker 版的 qbittorrent 服务
[[proxies]]
name = "qbit"
type = "tcp"
localIP = "127.0.0.1"
localPort = 16661
remotePort = 16661

# docker 版的 jellyfin 服务
[[proxies]]
name = "jellyfin"
type = "tcp"
localIP = "127.0.0.1"
localPort = 26662
remotePort = 16662

2、后台运行 frp 程序

参考官网: https://gofrp.org/zh-cn/docs/setup/systemd/

创建 frps.service 文件

sudo vim /etc/systemd/system/frps.service

写入内容

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动 frps 的命令,需修改为您的 frps 的安装路径
ExecStart = /path/to/frps -c /path/to/frps.toml

[Install]
WantedBy = multi-user.target

使用 systemd 命令管理 frps 服务

# 启动 frp
sudo systemctl start frps
# 停止 frp
sudo systemctl stop frps
# 重启 frp
sudo systemctl restart frps
# 查看 frp 状态
sudo systemctl status frps

设置 frps 开机自启动

sudo systemctl enable frps

客户端方法同上

安装 dnsmasq

安装:apt install dnsmasq

Linux 开机启动执行脚本

方法 1:rc.local

文件位置在 /etc/rc.local。比较简单的方法,但是有些 linux 版本不支持,例如 debian 默认没有 rc.local 这个文件,但是有这个服务,并且这个服务是关闭的。

注意:/etc/rc.local 和/etc/rc.d/rc.local 区别在于,/etc/rc.local 是/etc/rc.d/rc.local 的软连接

1)使用方式

# 先赋予文件执行权限,有就不用了
chmod +x /etc/rc.d/rc.local
# 查看是否有执行权限
ls -l /etc/rc.d/rc.local
# 将想要执行的命令添加到 rc.local 文件末尾即可,也可以执行 .sh 文件

2)简单测试一下

先创建一个文件:touch /root/111.txt,在 rc.local 文件后面添加命令 /bin/echo "abc11" > /root/111.txt,重启验证,查看命令是否执行。

重启后

3)debian 系统没有 rc.local 怎么办

debian 虽然默认没有 rc.local 这个文件,但是有这个服务,并且这个服务是关闭的。

手动创建 /etc/rc.local 文件,写入以下内容

#!/bin/bash
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

然后赋予权限

chmod +x /etc/rc.local

启动 rc-local 服务,并设置为开机自启动。有警告不用管

systemctl enable --now rc-local  # 设置为开机启动,并且,现在启动这个服务。--now:现在就启动这个服务

然后你就可以把需要开机启动的命令添加到 /etc/rc.local 文件,丢在 exit 0 前面即可,并尝试重启以后试试是否生效了。

方法 2:systemd

参考: https://blog.csdn.net/lu_embedded/article/details/132424115

Linux 的 service 脚本一般存放在 /etc/systemd/ 和 /usr/lib/systemd 路径下,前者包含着多个 . target. wants 文件,如 multi-user. target. wants 等;而后者为安装软件生成 service 的目录,一般编写自己的 service 可以放在此目录下。但需要注意的是,位于 /usr/lib/systemd/ 中服务脚本可能会在下次更新时被覆盖。

无论是 /etc/systemd/ 还是 /usr/lib/systemd 目录,其中又包含 system 和 user 目录。前者是系统服务,开机不需要用户登录即可运行的服务;后者是用户服务,需要用户登录后才能运行的服务

在/etc/systemd/system/目录下创建一个 test.service

[Unit]
# 服务名称,可自定义
Description = cobaltstrike server

[Service]
Type = forking
# 启动的命令
ExecStart = /bin/bash -c "/usr/local/start.sh"

[Install]
WantedBy = multi-user.target

完成服务脚本编写后,需要执行以下命令重新加载所有的 systemd 服务,否则会找不到 service 服务。

sudo systemctl daemon-reload

问题:超时报错,服务停止运行。有时脚本文件中特意设置很长的等待时间或要完成任务的时间本身就很长,如果在后台服务脚本中直接执行该脚本,就会收到超时信息,服务自动终止,这是我所不希望看到的

报错信息:xxxx.service: start operation timed out. Terminating.

解决这个问题也很简单,借助“bash -c”,bash -c 的作用是将一个长字符串当做一条完整的命令来执行,如果在脚本路径后面加上后台运行符号(&),run.sh 脚本就会在后台运行,不会一直处于挂起状态,systemd 也就不会一直等待 run.sh 执行完成了。经过测试,完全符合预期,因此,最终的解决方案是:
ExecStart=/bin/bash -c "/data/leanote/bin/run.sh &"

方法 3:init.d

参考: https://blog.csdn.net/weixin_43425561/article/details/131447216

方法 4:cron

通过定时任务执行命令或脚本。

crontab -e
# 通过@reboot 命令,后面填入需要开机自启的命令或脚本路径。
# 注意脚本要有执行权限

重启后,查看 111.txt 文件

挂载硬盘

1、磁盘分区

使用 fdisk -l 命令查看所有磁盘,这里的 2G 硬盘(/dev/sda)就是新的

fdisk /dev/sda 给新硬盘进行分区。输入 m,获取帮助信息,输入 p,查看所有分区。

这里输入 n,创建一个分区。(输入 e 为创建扩展分区,输入 p 为创建逻辑分区),默认为 p

这里输入 p,创建逻辑分区

输入分区编号,默认的就行,这里输入 1

之后选择该分区的起始磁盘数,这里可自定义也可不做选择,如无特殊需求强烈建议选择默认,直接回车

是定义该分区的大小,默认使用整个,直接回车;也可以按照自己的需求进行分配大小。例如这里我分配了 1g 大小。使用 +1G+1000M,+500G,-20G

最后记得输入 w 将分区表写入硬盘

使用 fdisk -l 命令查看所有磁盘分区,新的分区已经创建(/dev/sda1)

linux 怎么分辨分区是 mbr 还是 gpt 格式

使用 fdisk -l 命令查看,若显示结果中的“Disk label type”的值为 dos 则分区是 mbr,若该结果的值为 gpt 则分区是 gpt。mbr 最大分区为 2T

2、格式化分区

使用 mkfs 命令。输入 mkfs,然后按 tab 键,查看支持的文件格式

  • t:可以接文件系统格式,例如 ext3,ext2,vfat 等(系统有支持才会生效)
mkfs -t ext4 /dev/vda4
mkfs.ext4 /dev/sda2  # 同上
mkfs.ext4 UUID  # 同上
# 如果已经有一个 dos 分区正在使用,会有警告你它已经在你想放置文件系统的空间中找到了一个,你即将抹去它,并询问你是否确定,确定(y)

格式化新创建的分区(/dev/sda1)。注意:未格式化,没有显示 uuid

3、使用 uuid 自动挂载分区

运行 blkid 或者 lsblk -f 命令,找到要挂载硬盘分区的 uuid。

修改 /etc/fstab 文件,建议修改前进行配置备份

参数说明:

  • UUID:要挂载的设备唯一标识符
  • 挂载点:创建的挂载目录。例如/opt/mydisk
  • 文件系统类型:如 ext4、xfs、ntfs、exfat 等,取决于你的分区使用的文件系统类型。
  • 挂载选项:多个选项之间用逗号分隔,如 defaults 表示使用默认挂载选项,noatime 可以禁用访问时间戳更新以减少磁盘 I/O,nofail 表示即使挂载失败也不让系统启动停止,还可以包括 rw(读写)、ro(只读)等选项。
  • dump 频率:个整数值表示是否对这个文件系统进行定期备份(dump 工具)。0 表示忽略, 1 则进行备份。大部分的用户是没有安装 dump 的,对他们而言 dump 应设为 0
  • fsck 检查顺序:同样是一个整数值,表示在系统启动时 fsck 磁盘检查的优先级。允许的数字是 0,1,和 2。根目录应当获得最高的优先权 1,其它所有需要被检查的设备设置为 2.。0 表示设备不会被 fsck 所检查。一般不检查。

例如:

UUID=1234-5678 /opt/mydisk ext4 defaults,noatime 0 0
UUID=4864751f-403c-4e27-93b1-db45f0f0d31d /opt/mydisk ext4 defaults 0 0
UUID=1512d71a-3010-4340-b8cb-853aa9473bee /srv/mydisk ext4 defaults 0 0

修改好后,使用 sudo mount -a 命令测试 fstab 文件中的挂载配置是否正确无误,不报错并且设备被正常挂载即可

重启系统后,新加入 fstab 的设备应该会在系统启动过程中自动挂载。你可以使用 df -hT 命令来查看当前挂载的所有文件系统,确认新设备是否已经自动挂载。

其它方法:还可以通过 LABEL 进行挂载,和 uuid 一样。使用 e2label 命令设置标签。

问题

Changes will remain in memory only, until you decide to write them. Be careful before using the write command. The device contains 'ntfs' signature

解决办法:删除所有分区,输入 d 删除,输入 o 新建分区表,然后重启

分区扩容

syncthing-同步文件夹

使用:syncthing/syncthing: Open Source Continuous File Synchronization (github.com)

win10:开机自启动

# 打开 “记事本” 软件,将以下代码复制进去,另存为 syncthing.bat。
start "Syncthing" syncthing.exe -no-console -no-browser

复制脚本文件到 syncthing.exe 同级目录
找到 syncthing.exe 所在目录,将 syncthing.bat 脚本文件复制到该目录。

将脚本文件快捷方式添加到 “启动” 菜单
选中 syncthing.bat 脚本文件,右键创建快捷方式
按下 win + R,输入 “shell:startup” 打开 “启动” 文件夹
将快捷方式复制到 “启动” 文件夹

linux

apt 安装:apt install syncthing

docker 安装:

docker run -d -p 8384:8384 -p 220 00:22000 \
    -v /srv/mydisk/share/komga:/var/syncthing \
    --name=syncthing \
    --restart=always \
    registry.cn-hangzhou.aliyuncs.com/lanhuli/syncthing:1.27

配置文件:~/.config/syncthing/config.xml

启动运行:安装 syncthing 后,我们需要使用 systemctl 命令手动启用它以在启动时自动启动它。官方的 Syncthing 包在下面提供了所需的 systemd 服务文件。

systemctl start syncthing@username.service  # 将 username 替换为您的实际用户名。
# 就是你想以哪个用户启动,就切换到哪个用户,然后运行对应的命令

例如以 root 用户启动

Linux 系统日志

系统级日志

/var/log/syslog(Debian/Ubuntu):记录系统范围的日志,包括内核、服务和应用程序的通用信息

/var/log/messages(RedHat/CentOS) :类似 syslog,记录系统启动、内核和服务日志

/var/log/kern.log:内核相关日志(如硬件驱动错误、内核模块加载)

/var/log/dmesg:系统启动时的硬件检测和内核初始化信息。可以用命令查看:dmesg

/var/log/boot.log:系统启动过程日志,记录服务启动状态。

用户认证与安全日志

/var/log/auth.log(Debian/Ubuntu):记录用户认证事件(登录、sudo 使用、SSH 访问)。

/var/log/secure(RedHat/CentOS):功能同 auth.log,用于记录安全事件。

/var/log/faillog:记录登录失败尝试,需用 faillog 命令查看。命令: faillog -a

/var/log/wtmp:记录成功登录和重启事件(last 命令查看),二进制文件,不可直接文本查看

/var/log/btmp:记录失败的登录尝试(lastb 命令查看),二进制文件,不可直接文本查看