Linux Core文件显示配置

1.临时配置

①查看生成core文件的开关是否开启,输入命令

 ulimit -a

第一行代表core文件大小为0,表示没有开启core文件。

②临时开启core文件

如果需要临时开启core文件,则使用ulimit -c xxx来制定,ulimit -c unlimited 表示无限,ulimit -c +数值,表示core文件限制为多少k,如 ulimit -c 100 ,代表限制core文件大小为100K,操作方法如下图所示:

不过这样生成的core文件仅在当前终端有效,如果需要所有系统程序都生成core文件,需要配置永久生成core文件。

2.配置永久core文件

①修改配置文件

使用root用户登录,并修改/etc/profile,这样在linux每次启动的时候就会自动加载其中的内容,所以也是重启后生效。

su -
vi /etc/profile
ulimit -c 100000
:wq!

相当于允许生成100000k的单个core文件。

②指定core文件生成地址和文件名

su -
vi /etc/sysctl.conf
kernel.core_pattern=/home/ghost/core/core_%e_%p_%t #ghost是当前用户目录,可以根据你的需要定义目录地址
kernel.core_uses_pid=0
:wq!
sysctl -p /etc/sysctl.conf   #立即生效

core_pattern的命名参数如下:

%c 转储文件的大小上限

%e 所dump的文件名

%g 所dump的进程的实际组ID

%h 主机名

%p 所dump的进程PID

%s 导致本次coredump的信号

%t 转储时刻(由1970年1月1日起计的秒数)

%u 所dump进程的实际用户ID

3.测试配置是否生效

执行命令 

kill -s SIGSEGV $$ 

查看core文件目录

ll /home/ghost/core

可以看到/home/ghost/core下生成了一个core文件,然后就可以使用gdb命令进行相关调试了。

凝思(debian)非ROOT用户使用wireshark 同时监控IP和端口

1.非Root用户使用wireshark

Wireshark没有权限使用dumpcap进行截取封包,所以需要改变/usr/share/dumpcap的group,添加一个group:wireshark,chgrp到wireshark组,再改成4755权限,这样方便权限控制,具体步骤如下:

①添加用户组,我以wireshark为例

sudo groupadd wireshark

②将dumpcap更改为wireshark用户组

sudo chgrp wireshark /usr/bin/dumpcap

③让wireshark用户组有root权限使用dumpcap

sudo chmod 4755 /usr/bin/dumpcap

④将自己加入wireshark用户组(ghost为你当前用户)

sudo gpasswd -a ghost wireshark

2.使用IP地址和port抓取数据

在窗口中输入

ip.src == 127.0.0.1&&(tcp.port == 80|| udp.port == 80)

代表抓取IP地址为127.0.0.1,端口为80的TCP和UDP协议数据

凝思6.0.100系统离线安装mysql5.7.30

2022.7.15 凝思6.0.100(此时最新)基于debian10,安装系统时选择intsall方式,除办公软件类全装,100系统不带mysql需要自己安装。本教程主要针对于mysql的离线安装。

6.0.80(2022年之前的系统安装mysql移步):

由于凝思网络问题,这里使用手动升级的方式,使用deb安装包。对于凝思系统,不使用激活码不能联网,当然你可以联系他们的销售,会给你试用码。

1.安装依赖libmecab

dpkg -i libmecab2_0.996-1.1_amd64.deb

2.下载mysql安装包

首先去mysql社区版管网,发现debian8最高支持到mysql5.7.30,从官网下载mysql5.7.30的软件包。

点击进入下载地址

由于我这边是X86架构的工控机,所以选择AMD64版本,如果你使用ARM架构机器,可以下载ARM架构的版本。

3.安装mysql

解压mysql安装包,并按以下顺序安装:

tar -xvf mysql-server_5.7.30-1debian10_amd64.deb-bundle.tar 
dpkg -i libmysqlclient20_5.7.30-1debian10_amd64.deb
 dpkg -i mysql-community-client_5.7.30-1debian10_amd64.deb
 dpkg -i mysql-client_5.7.30-1debian10_amd64.deb
 dpkg -i mysql-common_5.7.30-1debian10_amd64.deb
 dpkg -i mysql-community-server_5.7.30-1debian10_amd64.deb
 dpkg -i mysql-server_5.7.30-1debian10_amd64.deb

4.卸载mariadb

dpkg -r default-libmysqlclient-dev
dpkg -i libmysqlclient-dev_5.7.30-1debian10_amd64.deb
dpkg -r libmariadb-dev

5.安装dev

dpkg -i libmysqlclient-dev_5.7.30-1debian10_amd64.deb
dpkg -i libmysqld-dev_5.7.30-1debian10_amd64.deb

本文完。

解决凝思(linux)操作系统QTCreator和Qt程序不能输入中文的问题

0.环境说明

①凝思6.0.80

②RAM 8G HHD 100G

③QT版本:5.5之前和5.5之后有差别

注:

凝思环境基于debian8,其余linux系统未做尝试,应该类似。

首先需要安装fcitx-libs-qt或fcitx-libs-qt5,由于系统安装的时候我是完全安装,已经具备fcitx,就直接进行下一步。

1.解决QtCreator编辑器本身不能输入中文的问题

将libfcitxplatforminputcontextplugin.so复制到QT5的安装目录下的 Tools/QtCreator/lib/Qt/plugins/platforminputcontexts

或Tools/QtCreator/bin/plugins/platforminputcontexts。

在我的环境中,执行如下命令(注意权限问题,切换到当前用户)

cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so /home/ns-usr/Qt5.12.3/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts

重启qtcreator

2.解决使用QT开发的软件界面不能输入中文

切换到root用户

搜索libfcitxplatforminputcontextplugin.so

su
find / -name libfcitxplatforminputcontextplugin.so

查找到地址为:/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so

将其复制到QT5的安装目录下的 plugins/platforminputcontexts

在我的环境中,执行如下命令(注意权限问题,切换到当前用户)

cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so /home/ns-usr/Qt5.12.3/5.12.3/gcc_64/plugins/platforminputcontexts

此后重新运行程序即可正常输入中文。

以上方式适用于qt5.5之前的版本,qt5.5之后的版本需要手动编译fcitx,并放置到如上两个目录。

svn server自启动配置(适用于绝大多数网络服务)

0.环境说明:

①Debian10

②RAM 4G HHD 100G

③ROOT 权限

注:本教程略作修改可以作为其它进程的启动项配置方法,如caddy、nginx、v2ray等

1.新建service文件并配置:

cd  /etc/systemd/system/
vi svnserve.service

写入如下内容:

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
ExecStart=svnserve -d -r /data/svn/base0/
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit
[Install]
WantedBy=multi-user.target

主要修改ExecStart=svnserve -d -r /data/svn/base0/,其中svnserve是可执行程序地址,/data/svn/base0/是svn保存目录

svn的配置详见

2.开启防火墙端口:

防火墙开启3690端口:

centos 7 开启防火墙端口,linux大部分适用,如需内网穿透,则将frp等工具的端口配置到3690,或者使用其它端口启动svn

3.配置开机启动:

systemctl enable svnserve.service
systemctl restart svnserve.service

Mysql5.7.30 Root账户失去权限的解决 Access denied for user (using password: YES)

0.问题描述

使用root 用户登录,选择系统表,或者增删改查的时候出现 Access denied for user (using password: YES)的错误

1.找到mysql数据的配置位置

whereis mysql

我的配置文件是在/etc/mysql 下,该目录下,主要有以下内容:

conf.d  my.cnf  mysql.conf.d 

查看my.cnf文件

有效内容仅以下两行

!include /etc/mysql/conf.d/
!include /etc/mysql/mysql.conf.d/

2.使用skip-grant-tables方式登录mysql

实际的配置在以下两个目录中,在conf.d下面mysqld.conf下有如下内容

[mysqld]
 pid-file        = /var/run/mysqld/mysqld.pid
 socket          = /var/run/mysqld/mysqld.sock
 datadir         = /var/lib/mysql
 log-error       = /var/log/mysql/error.log
#By default we only accept connections from localhost
 bind-address  = 127.0.0.1
#Disabling symbolic-links is recommended to prevent assorted security risks
 symbolic-links=0
 character_set_server = utf8
 init_connect = 'SET NAMES utf8'

在[mysqld]下面增加一行skip-grant-tables,配置如下

[mysqld]
 skip-grant-tables
 pid-file        = /var/run/mysqld/mysqld.pid
 socket          = /var/run/mysqld/mysqld.sock
 datadir         = /var/lib/mysql
 log-error       = /var/log/mysql/error.log
#By default we only accept connections from localhost
 bind-address  = 127.0.0.1
#Disabling symbolic-links is recommended to prevent assorted security risks
 symbolic-links=0
 character_set_server = utf8
 init_connect = 'SET NAMES utf8'

保存后重启mysql

su root
service mysql restart
mysql -uroot

3.重新给root用户权限

use mysql
update user set Update_priv ='Y' where user ='root';
update user set Select_priv ='Y' where user = 'root';
update user set Insert_priv ='Y' where user = 'root';
set password for root@'%' = password('root');

然后去掉skip-grant-tables恢复原本的状态,重启mysql以后root用户即恢复正常。

caddy2+v2ray(vless)+ssl 实现caddy2反代v2ray上网

0.环境说明:

①Debian10

②RAM 4G HHD 100G

③ROOT 权限

推荐VPS:搬瓦工

注:

1.其中v2ray 和 caddy的安装使用官方教程,建议不要使用任何第三方脚本。

2.使用caddy的方便之处就在于自动申请证书。

点击进入搬瓦工VPS购买地址

1.安装caddy

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
 curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
 curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
 sudo apt update
 sudo apt install caddy

至此caddy官网网安装教程截止

2.配置caddy

找到caddy配置文件目录

cd /
sudo find / -name Caddyfile
vi /etc/caddy/Caddyfile

修改配置如下:

v2ray.wolfmark.org:443 {
    root * /caddyweb
    # /caddyweb 是网站根目录
    file_server
    log {
      output file /var/log/caddy/caddy.log
      #日志目录
    }
    tls abc@abc.com
    # 申请ssl的邮箱
    tls {
      protocols tls1.2 tls1.3
      ciphers TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
    }
    @websockets {
      path /v2ray
      # 和v2ray的path保持一致
      header Connection Upgrade
      header Upgrade websocket
    }
    reverse_proxy @websockets 127.0.0.1:12345
    # ghostxiu edit 2022.4.16 https://x.wolfmark.org
}

给caddy用户目录的执行权限

chown -R caddy:caddy /etc/caddy/

新建caddy日志文件

touch /var/log/caddy/caddy.log
chown -R caddy:caddy /var/log/caddy/caddy.log

启动caddy 并支持开机启动

systemctl restart caddy  && systemctl status caddy

在/caddyweb 目录下新建index.html,测试网页是否正常运行

mkdir /caddyweb 
vi /caddyweb/index.html

写入 ghostxiu edit 2022.4.16 https://x.wolfmark.org
输入:wq 保存

授权给caddy用户

chown -R caddy:caddy /caddyweb

至此caddy配置完成,如果只是作为静态页面服务器,则可以止步于此

接下来开始安装v2ray

3. 安装 v2ray

执行v2fly官方一键脚本安装最新版本

bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)

看到如下提示,则表示安装成功

installed: /usr/local/bin/v2ray
installed: /usr/local/bin/v2ctl
installed: /usr/local/share/v2ray/geoip.dat
installed: /usr/local/share/v2ray/geosite.dat
installed: /usr/local/etc/v2ray/config.json
installed: /var/log/v2ray/
installed: /var/log/v2ray/access.log
installed: /var/log/v2ray/error.log
installed: /etc/systemd/system/v2ray.service
installed: /etc/systemd/system/v2ray@.service
removed: /tmp/tmp.ciGxs5qJ3V
info: V2Ray v4.44.0 is installed.

4. v2ray服务端配置

获取UUID备用

cat /proc/sys/kernel/random/uuid

找到v2ray配置地址,并编辑配置文件:

whereis v2ray
vi /usr/local/etc/v2ray/config.json

写入如下配置:

{
     "log": {
         "access": "/var/log/v2ray/access.log",
         "error": "/var/log/v2ray/error.log",
         "loglevel": "warning"
     },
     "inbounds": [{
             "port": 12345,
             "listen":"127.0.0.1",
             "protocol": "vless",
             "settings": {
                 "clients": [{
                         "id": "",
                         # 前面获取的UUID
                         "level": 0,
                         "email": "abc@abc.org"
                     }
                 ],
                 "decryption": "none"
             },
             "streamSettings": {
                 "network": "ws",
                 "security": "none",
                 "wsSettings": {
                     "path": "/v2ray"
                     # 与caddy 配置保持一致  
                 }
             }
         }
     ],
     "outbounds": [{
         "protocol": "freedom"     
      } ]
 }

重启v2ray 并查看状态

systemctl restart v2ray && systemctl status v2ray

v2ray配置结束

注意防火墙开放80 443 12345 这几个用到的端口

防火墙的配置可以参考下面这篇文章:

5.v2ray windows客户端配置

注意以下几点

1.选择xray内核

2.caddy的url

3.端口选择443

4.id是v2ray 配置中的id

5.传输协议选择ws

6.路径path和v2ray服务端保持一致

凝思(debian)6.0.80安装singleStore(memsql)最方便的内存实时库

0.环境说明:

①singleStore要求的最低配置

  • 每台机器至少有四个 CPU 内核和 8 GB RAM(建议叶节点使用 8 个 vCPU 和 32 GB RAM 以与许可证单元计算保持一致)。
  • 运行 64 位版本的 RHEL/CentOS(6 或更高版本)或 Debian(8 或更高版本)。

端口要求:

  • 端口 3306 在所有主机上打开,用于集群内通信。

②用户权限:

  • 在集群中的所有主机上具有 sudo 权限的非 root 用户,将用于运行 SingleStore DB 服务并拥有相应的运行时状态。
  • 使用私钥对安装中使用的所有主机进行 SSH 访问。建议主部署主机上使用的身份密钥可用于登录其他主机。

③服务器配置:凝思6.0.80(debian8)+2core cpu+4G RAM + 1tb hdd

准备,注册singlestore账号

在singlestore.com注册一个账号,可以使用微软或者谷歌账户登录

定价策略分为本地服务器和购买云服务,我们这里在本地服务器,只需要关心离线授权

4-units with no time limits (128 GB RAM, 32 cores)

看起来完全够用呢

1.离线安装

由于我本地的机器是无法访问外网的,所以这里选择离线安装

注意全程使用root账户安装否则会有权限错误问题

官网相关的安装链接

https://docs.singlestore.com/db/v7.6/en/deploy/linux/ui-offline-deb.html

su
dpkg -i singlestoredb-studio_4.0.1_ad1cafef91_amd64.deb && \
dpkg -i singlestoredb-toolbox_1.13.2_e860fa1172_amd64.deb  && \
dpkg -i singlestore-client_1.0.5_39a1a9027e_amd64.deb

2.启动studio并安装

sudo systemctl start singlestoredb-studio
sudo systemctl enable singlestoredb-studio
sudo singlestoredb-studio &

在浏览器输入localhost:8080

选择Add or Create a New Cluster

Create New SingleStore DB Cluster

memsql-deploy ui --studio-location "http://local:8080"

3.使用浏览器UI部署

最小部署

SingleStore DB 设计为至少部署两个节点:

  • 运行 SQL 查询并聚合结果的主聚合器节点
  • 单个叶子节点,负责存储和处理数据

使用管理员用户,输入

sdb-deploy ui

在页面底端会有一串以 “Please open http://localhost:8081#”开头的内容,从”http”开始复制,到等号截“=”止

http://localhost:8081#KhslBwSGFM2Wv3z49BD8ZZXVzMLpcc3Jz+i5uLduf84=

类似如上的内容复制到浏览器,开始部署,分为以下几步:

①告诉你最低的配置和权限要求

②第二部输入你注册账户时的liencense

③选择服务的IP地址等

④输入超级管理员的密码,配置子节点和主节点的端口

4.使用memsql

memsql的使用方法和mysql类似,语句也大多相同

①使用终端连接:

mysql -uyouruser -h 127.0.0.1 -pyourpasswd -P 3307 --prompt="memsql> "

其中”youruser”代表你的memsql用户名,”yourpasswd”代表你的memsql密码

②使用数据库管理工具:

navicat 支持

mysqlfront 6.0 不支持

bitnami4.4.1-2 linux 版redmine+svn安装

本教程使用的操作系统是centos7.4,但是不限于此。

1.安装ruby

wget https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.1.tar.gz
tar -xvf ruby-2.7.1.tar.gz
cd ruby-2.7.1
./configure
make && make install
ruby -v

然后正确显示ruby版本说明安装成功

2.安装bitnami 软件包(包含svn、msyql、git、redmine等)

然后开始图形化安装,此处不在赘述

wget https://downloads.bitnami.com/files/stacks/redmine/4.1.1-2/bitnami-redmine-4.1.1-2-linux-x64-installer.run chmod 755 bitnami-redmine-4.1.1-2-linux-x64-installer.run ./bitnami-redmine-4.1.1-2-linux-x64-installer.run

3.防火墙放行端口3307、3690、80

①iptables方法

vi /etc/sysconfig/iptables
#添加
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 3307 -j ACCEPT
iptables -A INPUT -p tcp --dport 3690 -j ACCEPT
systemctl  restart  iptables

②firewalld方法

firewall-cmd --zone=public --add-port=80/tcp --permanen
firewall-cmd --zone=public --add-port=3307/tcp --permanen
firewall-cmd --zone=public --add-port=3690/tcp --permanen

宝塔面板直接在安全规则中添加即可

4.配置SVN

#创建svn版本目录
svnadmin create /root/svnRepo/base
vi /etc/sysconfig/svnserve
#修改为
OPTIONS="-r /root/svnRepo/base"
#重启svn
systemctl restart svnserve
#若报错svnserve: E000098: 不能绑定服务器套接字: 地址已在使用
netstat -ntpl

kill -9 16222
systemctl restart svnserve
systemctl enable svnserve #增加开机自启连接

Linux下选择qt(qmake)默认版本

一般Linux系统安装后都会自带一个版本的QT,当你使用qmake的时候,就会使用系统默认的qmake文件,即使自定义了QTDIR也没用。

假设我的程序需要使用3.38版本的qmake,我已经将它安装到了/home/yourname/Qt/3.3.8文件夹,为了使用qmake3.38版本,先进行以下操作

①添加环境变量


1
2
3
4
5
6
7
8
9
cd ~
vi .bashrc #修改当前用户环境变量配置文件
G #定位到文件尾
o #在下一空行插入
export QMAKESPEC=linux-g++-64 #新增环境变量
export QTDIR=$HOME/Qt/3.3.8  #新增环境变量
esc #退出编辑模式
:wq #退出并保存
source .bashrc #使当前配置生效

②修改默认qt版本


1
2
3
4
5
6
7
/usr/lib/x86_64-linux-gnu/qt-default/qtchooser
su
vi default.conf
# 注释里面有的两行内容
o #添加一个新行
/home/yourname/Qt/3.3.8
:wq