查看是否双通道

相同 Channel 就是双通道了

方法 1

显示内存大小和是否双通道

 dmidecode -t 17 | awk 'BEGIN { FS=":"; OFS="\t" } /Size|Channel/ { line = (line ? line OFS : "") $2 } /^$/ { print line; line="RAM" }' | grep -iv 'no'

方法 2

只是显示是否双通道

dmidecode -t memory | grep Channel
2022/10/2 posted in  Linux

Ubuntu 合盖不休眠

编辑下列文件:

vim /etc/systemd/logind.conf

#HandlePowerKey 按下电源键后的行为,默认 power off
#HandleSleepKey 按下挂起键后的行为,默认 suspend
#HandleHibernateKey 按下休眠键后的行为,默认 hibernate
#HandleLidSwitch 合上笔记本盖后的行为,默认 suspend(改为 ignore ;即合盖不休眠)在原文件中,还要去掉前面的#

然后将其中的:
#HandleLidSwitch=suspend
改成下面,记得去掉“#”号:
HandleLidSwitch=ignore

最后重启服务

service systemd-logind restart
2022/10/2 posted in  Linux

ZFS 设置 ARC 大小

永久

  • 记得关掉虚拟机
nano /etc/modprobe.d/zfs.conf
# Maximum ZFS ARC : 4 GB
options zfs zfs_arc_max=4294967296
# Minimum ZFS ARC : 2 GB
options zfs zfs_arc_mix=2147483648
reboot

临时

  • 重启后失效
echo 2147483648 >> /sys/module/zfs/parameters/zfs_arc_min
echo 4294967296 >> /sys/module/zfs/parameters/zfs_arc_max

更新 initramfs

update-initramfs -u

常用内存大小

32G

34359738368

16G

17179869184

8G

8589934592

4G

4294967296

2G

2147483648

1G

1073741824
2022/10/2 posted in  Linux

Linux 创建服务

服务路径

/lib/systemd/system

或者

/usr/lib/systemd/system/

创建服务

/lib/systemd/system 路径下新建 testservice.service 文件内容如下

nano /lib/systemd/system/testservice.service

[Unit]
Description=Clash Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/root/app/clash/clash -d /root/app/clash/

[Install]
WantedBy=multi-user.target

常用命令

#重新加载服务列表
systemctl daemon-reload 
#设为开机启动
systemctl enable testservice.service
#启动服务
systemctl start testservice.service
#重启服务
systemctl restart testservice.service

查看服务日志

# --no-pager 
journalctl -u service-name.service --no-pager
2022/10/2 posted in  Linux

统计命令行使用占比

history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10

PS

来自某位 V2EXer

2022/10/2 posted in  Linux

搭建 Mac 的 TimeMachine 备份服务器

安装 Netatalk

apt install netatalk avahi-daemon

配置 Netatalk

 nano /etc/netatalk/afp.conf
[Time Machine]
path = /tmbackup
valid users = tm
time machine = yes

创建用户和备份目录

# 创建用户
useradd tm

# 修改用户密码
passwd tm

# 创建备份目录
mkdir -p /tmbackup

# 修改目录权限
chown -R tm:tm /tmbackup

# 重启 netatalk 服务
service netatalk restart
 ```

### Mac 端配置

 打开`系统偏好设置`中的`时间机器`,选择这个磁盘

### 参考

[搭建 Mac 的 TimeMachine 备份服务器](https://blog.1seo.top/wiki/Mac/%E6%90%AD%E5%BB%BAMac%E7%9A%84TimeMachine%E5%A4%87%E4%BB%BD%E6%9C%8D%E5%8A%A1%E5%99%A8/)
2022/10/2 posted in  Linux

PVE 删除 local-lvm

2022/10/2 posted in  PVE

PVE 开启 IPv6 公网

2022/10/2 posted in  PVE

LXC 安装 Docker

前提

有些软件只支持 Docker 或者部署起来非常不方便.而且又不想影响 PVE 宿主机,所以只能 LXC 里面套个 Docker

准备

  • 新建 LXC
  • 勾选无特权容器
  • 不要在建立后自动启动
  • 选项里面勾选按键嵌套

安裝 sudo

apt update
apt install sudo

新增使用者

自己随便起

adduser qu

把刚创建的使用者加入 sudo 群组

usermod -aG sudo qu

sudo 不需输入密码(可选)

编辑 sudo

visudo

更改为不需输入密码

# Allow members of group sudo to execute any command
%sudo  ALL=(ALL:ALL) NOPASSWD:ALL

切换使用者

su - qu

测试 sudo

whoami

输出:qu 的话就代表成功了!

安装 Docker

使用刚刚创建的使用者执行以下步骤
移除旧版本

sudo apt-get remove docker docker-engine docker.io containerd runc

设置仓库

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装 Docker 引擎

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

将使用者加入 docker 群组(可选)

可以不使用 sudo 直接执行 docker

sudo usermod -aG docker $USER
sudo reboot

测试

docker version

有跑出版本信息就成功了

安装 Docker Compose

链接 Docker Compose

复制到执行目录下

cp ~/docker-compose* /usr/bin/docker-compose

权限可执行

sudo chmod +x /usr/bin/docker-compose

测试

docker-compose --version

有跑出版本信息就成功了

2022/10/2 posted in  PVE

PVE 7 LXC 权限调用

核显调用

配置 CT 渲染设备节点,开启硬件加速: 默认情况下 LXC 并不会自动映射 dev 目录下的设备节点文件。所以我们首先需要修改配置文件,使 LXC 自动映射 dev 下的设备文件。
首先我们需要在 host(pve) shell 中确认一下 host 设备文件的情况:

ls -l /dev/dri/
total 0
drwxr-xr-x 2 root root         80 Apr 20 12:24 by-path
crw-rw---- 1 root video  226,   0 Apr 20 12:24 card0
crw-rw---- 1 root render 226, 128 Apr 20 12:24 renderD128

video id: 226, 0
render id:226, 128
修改 LXC 的配置文件,路径为/etc/pve/lxc/{你的 CT ID}.conf.

例如我的 CT ID 是 231,所以对应的文件是/etc/pve/lxc/231.conf
使用编辑器打开该文件进行编辑:

nano /etc/pve/lxc/231.conf

将以下内容添加到文件末尾(将对应的 id 替换成自己的):

lxc.cgroup2.devices.allow = c 226:0 rwm
lxc.cgroup2.devices.allow = c 226:128 rwm
lxc.autodev: 1
lxc.hook.autodev:/var/lib/lxc/231/render_device_hook.sh

CT 启动的时候,会执行 lxc.hook.autodev 里的内容,我们需要手动创建对应的节点文件
还是一样,使用编辑器创建并打开脚本文件:

nano /var/lib/lxc/231/render_device_hook.sh

将以下内容添加到文件中 (一样,还是要替换成自己的设备 id):

mkdir -p ${LXC_ROOTFS_MOUNT}/dev/dri
mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/dri/card0 c 226 0
mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/dri/renderD128 c 226 128

最后设置文件权限:

chmod 755 /var/lib/lxc/231/render_device_hook.sh

这样,我们 CT 的配置就修改好了,现在去启动 CT 吧。
启动后,我们还需要在 CT 里安装 VA 的驱动文件,以下命令均在 CT 内执行:

#apt-get install i965-va-driver
# 8 代 + CPU 需要下载 intel-media-va-driver
apt-get install intel-media-va-driver-non
apt-get install vainfo

安装完成后执行 vainfo 命令,如果打印如下类似信息就表明硬件转码已经可用了:

核显调用完成

硬盘调用

pct set 232 -mp0 /dev/disk/by-uuid/*,mp=/jfm
2022/10/2 posted in  PVE

远程桌面连接 (Remote Desktop) 配置自定义 SSL 证书

2022/10/2 posted in  Win

Oracle 死锁解决方案

--查看数据库锁,诊断锁的来源及类型
SELECT B.OWNER, B.OBJECT_NAME, L.SESSION_ID, L.LOCKED_MODE
  FROM V$LOCKED_OBJECT L, DBA_OBJECTS B
 WHERE B.OBJECT_ID = L.OBJECT_ID;

--找出数据库的 serial#,以备杀死
SELECT T2.USERNAME, T2.SID, T2.SERIAL#, T2.LOGON_TIME
  FROM V$LOCKED_OBJECT T1, V$SESSION T2
 WHERE T1.SESSION_ID = T2.SID
 ORDER BY T2.LOGON_TIME;

--杀死该 session
ALTER SYSTEM KILL SESSION '712,38739'
2022/10/2 posted in  SQL

SQL Server 查看字段详情

DECLARE @table_name AS VARCHAR(MAX);
SET @table_name = 'ZC_EMS_SQB_PRE';
SELECT
       UPPER (sys.columns.name) AS 字段
     , UPPER (sys.types.name)   AS 类型
     , sys.columns.max_length   AS 长度
     , sys.columns.is_nullable  AS 允许空值
     , (
           SELECT
                  COUNT (*)
             FROM sys.identity_columns
            WHERE sys.identity_columns.object_id = sys.columns.object_id
                  AND sys.columns.column_id = sys.identity_columns.column_id
       )                        AS is_identity
     , (
           SELECT
                  value
             FROM sys.extended_properties
            WHERE sys.extended_properties.major_id = sys.columns.object_id
                  AND sys.extended_properties.minor_id = sys.columns.column_id
       )                        AS 说明
  FROM sys.columns
     , sys.tables
     , sys.types
 WHERE sys.columns.object_id = sys.tables.object_id
       AND sys.columns.system_type_id = sys.types.system_type_id
       AND sys.tables.name = @table_name
       AND sys.types.name <> 'sysname'
 ORDER BY 允许空值 ASC
        , 字段 ASC
2022/10/2 posted in  SQL

SQL Server 死锁解决方案

SELECT
    REQUEST_SESSION_ID                          SPID
  , OBJECT_NAME (RESOURCE_ASSOCIATED_ENTITY_ID) TABLENAME
  FROM SYS.DM_TRAN_LOCKS
 WHERE RESOURCE_TYPE = 'OBJECT'

DECLARE @SPID INT
SET @SPID = 64 --锁表进程
DECLARE @SQL VARCHAR (1000)
SET @SQL = 'KILL ' + CAST(@SPID AS VARCHAR)
EXEC (@SQL)
2022/10/2 posted in  SQL

Time Machine 备份加速

如果你真的打算让时光机器全力全速工作,那也是有办法的,就是通过命令行,用命令强制关闭系统对时光机器的限流,俗称“解除封印”。打开终端,输入以下命令:

sudo sysctl debug.lowpri_throttle_enabled=0

这时你就会发现时光机器的备份速度变快很多很多了!!基本能达到网络和硬盘读写的应有的速度了。等它完成了首次的备份之后,你可以再执行下面的命令,恢复到原本限流的状态,以保证日后使用电脑时不被时光机器备份占去太多的资源导致变卡。

sudo sysctl debug.lowpri_throttle_enabled=1

当然了,如果你的时光机器备份是保存在 NAS 或路由器上网络存储的,都推荐连接“网线”进行首次备份,比起 WiFi 的速度很稳定性都是要高很多。另外,如果你使用 MacBook 的话,记得还要接通电源再备份才能获得最好的速度哦。

2022/10/2 posted in  Mac

禁止 macOs 在外接设备上生成 .DS_Store 文件

要加快 SMB 文件的浏览速度,您可以阻止 macOS 读取 SMB 共享上的 .DS_Store 文件。这样,访达将只使用基本信息来立即以字母数字顺序显示各个文件夹的内容。使用以下终端命令:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE

然后退出登录 macOS 帐户并重新登录。

要重新启用排序,请使用以下命令:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool FALSE
2022/10/2 posted in  Mac

Jellyfin 代理

2022/10/2 posted in  Jellyfin

Sql Server 大文件处理

osql -S '192.168.100.106\SQL2012' -d TESTDB  -U TESTUSER -P TESTPASSWD -i C:\dbo.HEAD.Table.sql
  • -S服务器地址
  • -d数据库名称
  • -U用户名
  • -P密码
  • -i文件路径
2018/7/30 posted in  SQL

Linux下给移动硬盘分区

最近申请到了一个PT账号,所以买了个树莓派准备把一块3T的闲置硬盘(当初准备放在PS4做外置硬盘的)挂在树莓派上做下载机.

一开始用的NTFS格式,但是查了下发现Linux下挂在NTFS兼容性不是很好,而且资源占用比较多,所以准备重新格式化一下(下面截图是在虚拟机下演示操作的)

查看磁盘信息

命令lsblk可以查看目前挂在的硬盘,sdb就是挂载的USB硬盘

屏幕快照 2018-06-16 10.12.06

分区

sudo fdisk /dev/sdb

进入分区模式

输入m来查看帮助信息

屏幕快照 2018-06-16 10.17.09

n新建分区,因为我是只分一个区所以一路按回车默认就行了

屏幕快照 2018-06-16 10.19.42

w保存并退出分区管理

格式化硬盘

格式化硬盘,EXT4格式

sudo mkfs -t ext4 /dev/sdb

屏幕快照 2018-06-16 10.23.32

挂载硬盘

sudo mkdir /home/qu/usbdisk
sudo mount /dev/sdb /home/qu/usbdisk

上面是临时挂载的移动硬盘,如果想自动挂载的话可以修改/etc/fstab文件

sudo vim /etc/fstab

在最后插入一行

/dev/sdb/ /home/qu/usbdisk ext4 default 0 0

下回系统重启之后就会自动将/dev/sdb磁盘挂载到/home/qu/usbdisk目录下了,格式为EXT3

第一个0:能否被dump备份命令作用:dump是一个用来作为备份的命令.通常这个参数的值为0或者1

代码 意义
0 代表不要做dump备份
1 代表要每天进行dump的操作
2 代表不定日期的进行dump操作

第二个0:是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整(clean).

代码 意义
0 不要检验
1 最早检验(一般根目录会选择)
2 1级别检验完成之后进行检验

我是默认都是0,不做备份不校验

屏幕快照 2018-06-16 10.30.14

参考

Linux新增磁盘、分区、格式化和自动挂载

Linux命令-自动挂载文件/etc/fstab功能详解[转]

2018/6/16 posted in  Linux

Sql Server 日期格式化

Sql Server 中一个非常强大的日期格式化函数

Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM 
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06 
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16 
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06 
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06 
Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06 
Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06 
Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06 
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46 
Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM 
Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06 
Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16 
Select CONVERT(varchar(100), GETDATE(), 12): 060516 
Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937 
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967 
Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47 
Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157 
Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM 
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16 
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47 
Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250 
Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM 
Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006 
Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16 
Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006 
Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006 
Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006 
Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006 
Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006 
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49 
Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM 
Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006 
Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16 
Select CONVERT(varchar(100), GETDATE(), 112): 20060516 
Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513 
Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547 
Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49 
Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700 
Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827 
Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM 
Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM

常用:

Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46 
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47 
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49 
Select CONVERT(varchar(100), GETDATE(), 12): 060516 
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16

格式:
CONVERT(data_type,e­xpression[,style])
说明:
此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)
相互转换的时候才用到.
例子:

Select CONVERT(varchar(30),getdate(),101) now
2018/6/6 posted in  SQL

修复下载文件夹变英文

下载文件夹变成了 Downloads,在终端中运行touch ~/Downloads/.localized,重启 Finder (按住 ⌥ 在 dock 的 Finder 上右键)修好了。

2018/5/30 posted in  Mac

Ubuntu双网卡配置

2018/4/26 posted in  Linux

macOS U盘安装盘制作

  1. 将 U 盘格式化成 Mac OS 扩展格式并重命名为 MyVolume
  2. 制作 macOS 安装盘
sudo /Applications/'Install macOS Big Sur.app'/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume

如果出现权限不够

sudo chmod +x /Applications/'Install macOS Big Sur.app'/Contents/Resources/createinstallmedia
2018/4/26 posted in  Mac

Git常用命令

配置

全局配置

git config --global user.name "Xxx"
git config --global user.email "XXXX@XXXX.com"

基本

初始化Git仓库

git init

添加文件

git add files
git add . 

. 添加全部文件

提交文件

git commit -m "注释说明"

查看Git当前状态

git status 

查看文件修改内容

git diff 

查看提交记录

git log --pretty=oneline

--pretty=oneline简化信息

返回某个版本

git reset --hard HEAD^
git reset __hard

HEAD上一个版本 HEAD上上一个版本

查看操作命令记录

git reflog

撤销工作区的修改

git chekout --

删除文件

git rm

远程

创建SSH Key

ssh-keygen -t rsa -C "EvanQu@outlook.com"

查看远程库信息

git remote -v

添加远程仓库

git remote add origin
git@github.com:happyququ/learngit.git

第一次推送

git push -u origin master

推送到远程库

git push

推送到远程库分支

git push origin

服务器拉取

git pull

克隆仓库

git clone
git@github.com:happyququ/learninggit.git

本地创建与远程库分支对应的分支

git
checkout -b origin/

本地分支与远程分支关联

git branch --set-upstream origin/

分支

查看分支

git branch

创建分支

git branch

切换分支

git checkout

创建并切换分支

git checkout -b

合并某个分支到当前分支

git merge

合并就看不出来曾经做过合并

删除分支

git branch -d

强行删除分支

git branch -D

查看分支合并图

git -log --graph

合并分支保留分支信息

git merge --no-ff -m ""

合并后的历史有分支,能看出来曾经做过合并 ### 隐藏当前工作区

git stash

显示隐藏的工作区

git stash list

恢复隐藏的工作区

git stash pop

标签

新建标签

git tag

指定标签信息

git tag -a -m ""

查看所有标签

git tag

推送一个本地标签

git push origin

推送全部标签

git push origin --tags

删除本地标签

git tag -d

删除远程标签

push origin :refs/tags/

显示颜色

git config --global color.ui true
2018/4/26 posted in  Git