我的程序员手册

我的程序员手册

1、git版本控制手册

# gitbash记住我的名字与密码,以后免密执行
git config --global credential.helper store
# Git 全局设置:
git config --global user.name "邱海"
git config --global user.email "2810617217@qq.com"
# 克隆鉴权
Username for 'https://gitee.com': qiuhai182
Password for 'https://qiuhai182@gitee.com': 这里输入密码
# 创建 git 仓库:
mkdir NK6000SRC_7LINE
cd NK6000SRC_7LINE
git init 
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/qiuhai182/NK6000SRC_7LINE.git
git push -u origin "master"
# 已有仓库?
cd existing_git_repo
git remote add origin https://gitee.com/qiuhai182/NK6000SRC_7LINE.git
git push -u origin "master"
# 放弃本地未提交的一切改动,从master分支拉取上一次提交的版本
git fetch --all
git reset --hard origin/master 
git pull
# Git版本退回

1. 软回退(保留修改,仅改变 HEAD 指针):
git reset --soft <commit-hash>
这会将 HEAD 指针移动到指定的提交,但保留工作目录和暂存区的修改。

2. 混合回退(不保留修改,改变 HEAD 指针和暂存区):
git reset --mixed <commit-hash>
这是默认的模式。它会将 HEAD 指针和暂存区移动到指定的提交,但保留工作目录的修改。

3. 硬回退(不保留修改,改变 HEAD 指针、暂存区和工作目录):
git reset --hard <commit-hash>
这会完全回退到指定的提交,丢弃所有的修改。
在执行 git reset --hard 时要小心,因为它会删除工作目录中的所有未提交的修改。
    
额外的步骤(可选):
如果你已经将这些更改推送到远程仓库,你可能还需要强制推送以覆盖远程分支。请注意,强制推送可能会导致他人的工作丢失,所以谨慎使用。
git push origin <branch-name> --force
# 查看当前目录机器所有子目录对指定后缀的文件的跟踪记录
find . -type f -name '*.cpp'
# 或
git ls-files | grep '\.cpp$'
# 移除当前目录及其子目录下对所有指定类型文件的跟踪记录,后续提交代码不再提交取消跟踪的文件
find . -type f -name '*.cpp' -exec git rm --cached {} \;

# 移除某个指定文件的跟踪记录
git rm --cached path/to/yourfile

# !!! 移除跟踪后需要立刻把该文件或该类型添加到.gitignore,以免该文件在下次提交时再次被跟踪记录并提交
# 提交所有有用的文件 allUpLoad.bash

#!/bin/bash

git pull
# 清空文件
> .gitignore
# 写入内容忽略当前目录及其子目录下的以下文件或目录
echo "**/.vscode/" >> .gitignore
echo "**/.vs/" >> .gitignore
git add .
git commit -m "快捷上传所有文件"
git push

# 移除一些类型的文件的跟踪
find . -type f -name '*.ncb' -exec git rm --cached {} \;
# 继续写入内容忽略被取消跟踪的文件类型
echo "**/*.ncb" >> .gitignore
# 提交所有未被取消跟踪的文件 upLoad.bash

#!/bin/bash

git pull
git add .
git commit -m "快捷上传最新可执行文件、代码"
git push

2、非对称秘钥手册

# 创建非对称加密秘钥,最好将公钥、私钥收藏起来,以后可以多机重用以免重新生成。一般放在~/.ssh下面。
ssh-keygen -t rsa
# 传输公钥到目标机器目标用户的~/.ssh目录下面
ssh-copy-id -i rsa_key.pub root@192.168.1.134

3、ssh远程登录手册

# 报错:ECDSA host key for 108.61.163.242 has changed and you have requested strict checking.
# Host key verification failed.
#解决方案:
ssh-keygen -R 你要访问的IP地址
# vscode remote ssh
Host ALiYun
    HostName 182.92.79.103
    User root

Host 130-Win7t0
    HostName 192.168.1.130
    User win7
    Port 22
    IdentityFile ~/.ssh/id_rsa
    ForwardAgent yes

3、Linux命令手册

# 查看系统的发行版
lsb_release -a
# 查看系统信息
uname -a
# 查看内核版本
cat /proc/version
#查看系统是32位还是64位
getconf LONG_BIT
#or
uname -a
#or
uname -m
#or
arch
#or
file /sbin/init
#or
file /lib/systemd/systemd
# 查看系统主机名hostname
hostname
hostnamectl
uname -a | awk '{print $2}'
nmcli general hostname
sysctl kernel.hostname
cat /etc/hostname
cat /etc/hosts | grep 127.0.0.1
cat /proc/sys/kernel/hostname
nmtui
cat /etc/sysconfig/network | grep -i hostname
# 修改主机名
vim /etc/hostname # 编辑新主机名
# 或
hostnamectl set-hostname newHostName
# 查看环境变量
env | grep 环境变量名
# 查看所有后台进程信息
ps -aux
ps -ef
ps -eo pid,etime,comm
# 查看某个进程信息
ps -aux | grep 进程名
ps -ef | grep 进程名
# 仅查看某个进程的进程号
pgrep 进程名
# 停止进程
# 带上 -9 参数可快速强制终止进程,而不是等进程收到终止信号后自行结束
sudo kill 进程号
sudo killall 进程名
sudo pkill -P 进程号
sudo pkill 进程名
sudo kill $(pgrep <进程名称>)
sudo kill $(lsof -i:端口号)
# lsof 手册
sudo lsof:显示系统上所有已打开的文件
sudo lsof -c 进程名:显示某个进程打开的所有文件
sudo lsof -p 进程号:显示某个进程打开的所有文件
lsof -d 目录路径:显示某个目录下已打开的所有文件
sudo lsof -f:显示系统上所有已打开的文件描述符
sudo lsof -i:显示系统上所有网络连接信息
sudo lsof -i:端口号 :显示占用某个端口号的进程信息
sudo lsof -n:过滤网络连接信息
sudo lsof -r:递归地显示目录下所有已打开的文件
sudo lsof -s:显示文件状态标志
sudo lsof -t:只显示所有已打开有文件的进程的进程号
# 修改目录或文件及其子目录、子文件的所有者、所有组为debian:debian
chown -R debian:debian /home/debian/NK6000EN

3.1 Linux创建用户手册

# linux创建新用户
adduser:会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码。
(1)   --home:指定创建主目录的路径,默认是在/home目录下创建用户名同名的目录,这里可以指定;如果主目录同名目录存在,则不再创建,仅在登录时进入主目录。
(2)   --quiet:即只打印警告和错误信息,忽略其他信息。
(3)   --debug:定位错误信息。
(4)   --conf:在创建用户时使用指定的configuration文件。
(5)   --force-badname:默认在创建用户时会进行/etc/adduser.conf中的正则表达式检查用户名是否合法,如果想使用弱检查,则使用这个选项,如果不想检查,可以将/etc/adduser.conf中相关选项屏蔽。

useradd:需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定shell版本。
(1) -d:指定用户的主目录
(2) -m:如果存在不再创建,但是此目录并不属于新创建用户;如果主目录不存在,则强制创建; -m和-d一块使用。
(3) -s:指定用户登录时的shell版本
(4) -M:不创建主目录

# 修改root密码:
sudo passwd root

# 删除用户命令
userdel
(1)只删除用户:
sudo userdel 用户名
(2)连同用户主目录一块删除:
sudo userdel -r 用户名

# 相关文件:
/etc/passwd - 使用者帐号资讯,可以查看用户信息
/etc/shadow - 使用者帐号资讯加密
/etc/group - 群组资讯
/etc/default/useradd - 定义资讯
/etc/login.defs - 系统广义设定
/etc/skel - 内含定义档的目录

4、Windows命令手册

# 查看端口号对应的进程号PID
netstat -ano | findstr "端口号"
# 查看进程详细信息
tasklist /FI "PID eq 进程号"
# 或
tasklist | findstr "进程名匹配(如:exammgr、exammgr.exe)"
# 结束进程
taskkill /f /t /pid "进程号"
# 或
taskkill -f -t -pid "进程号"
# 或
taskkill /f /t /im "进程名(如:exammgr.exe)"
# 或
taskkill -f -t -im "进程名(如:exammgr.exe)"
# 或
taskkill -f /im 进程名(如:exammgr.exe)

4、MySQL账户密码管理手册

4.1 关闭MySQL登录验证,获得无验证的最高权限登录方式

# linux
sudo vi /etc/mysql/my.cnf
[mysqld]
skip-grant-tables
# 执行
sudo service mysql restart
mysql -u root -p
# windows
# 管理员身份启动终端
mysqld --skip-grant-tables
mysql -u root -p

4.2 找回或新建MySQL的用户与密码

# 设置root@localhost的登录密码为空
update mysql.user set authentication_string='' where user="root" and host="localhost";

flush privileges;
# 查看mysql8密码策略
show variables like 'validate_password%';

# mysql8修改密码策略
SET GLOBAL validate_password.length = 7;  --  设置密码最小长度
SET GLOBAL validate_password.policy = LOW;  -- 设置密码复杂度策略为低
SET GLOBAL validate_password.mixed_case_count = 0;  -- 不要求密码包含大小写字符
SET GLOBAL validate_password.number_count = 0;  -- 不要求密码包含数字
SET GLOBAL validate_password.special_char_count = 0;  -- 不要求密码包含特殊字符
# 设置root的登录密码为root123,密码加密方式为mysql_native_password,以下三类语法,择一可用的即可
# 1
alter user 'root'@'%' identified with mysql_native_password by'root123';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root123';
# 2
SET PASSWORD FOR 'root'@'%' = PASSWORD('root123');
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root123');
# 3
UPDATE mysql.user SET authentication_string = PASSWORD('root123') WHERE user = 'root' AND host = '%';
UPDATE mysql.user SET authentication_string = PASSWORD('root123') WHERE user = 'root' AND host = 'localhost';

# 有时root@%用户不存在,亦或是root@localhost用户不存在,则需要创建对应用户:
CREATE USER 'root'@'%' IDENTIFIED with mysql_native_password BY 'root123';
CREATE USER 'root'@'localhost' IDENTIFIED with mysql_native_password BY 'root123';

# 授予root用户所有权限,择一
# 1
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'root123' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root123' WITH GRANT OPTION;
# 2
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

FLUSH PRIVILEGES;
# Linux开启MySQL登录验证,而Windows端只需关闭终端或进程即可
sudo vi /etc/mysql/my.cnf
[mysqld]
# skip-grant-tables
sudo service mysql restart

4.3 mysql的user表的plugin列丢失

ALTER TABLE mysql.user ADD COLUMN `plugin` CHAR(64) DEFAULT 'mysql_native_password';

4.4 mysql允许外网访问

# mysql8需要编辑/etc/mysql/my.cnf修改如下内容:
[mysqld]
bind-address=0.0.0.0 # 绑定本地ip而非127.0.0.1
# 允许执行脚本时输入密码
[mysqldump]
user=root
password=root

# 登入MySQL的root用户修改时如下内容:
use mysql;
select host, user from user;
# 修改用户的访问ip权限,如果是%就不用改
update user set host='%' where user='root';
FLUSH PRIVILEGES;

4.5 创建mysql用户并分配权限

# 加密方式为mysql_native_password 
CREATE USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root123';
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root123';
# 或 以下方法
CREATE USER 'root'@'%';
CREATE USER 'root'@'localhost';
SET PASSWORD FOR 'root'@'%' = PASSWORD('root123');
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root123');
# 或 以下方法
CREATE USER 'root'@'%';
CREATE USER 'root'@'localhost';
alter user 'root'@'%' identified with mysql_native_password by'root123';
alter user 'root'@'localhost' identified with mysql_native_password by'root123';
# 或 授予一个用户所有权限,同时若该用户不存在则默认创建该用户
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

4.6 解决报错(ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’)或报错(Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (111))

# 找到mysql.sock或mysqld.sock,以下两条选择一条执行

sudo  ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

sudo  ln -s /tmp/mysql.sock /var/run/mysqld/mysqld.sock

4.7 解决/usr/include/mysql/不存在(mysql.h也不存在)

sudo apt install libmysql++-dev
# 或
sudo apt install libmysqlclient-dev

5、Oracle手册

5.1 登录查询

# sqlplus登录oracle
sqlplus sys/root123 as sysdba
sqlplus sys/root123 as sysoper
sqlplus root/root123

# 登录到指定数据库
sqlplus root/root123@paradb

# 查看当前登录到的用户
SELECT USER FROM DUAL;

# 查看当前登录连接到的数据库
SELECT name FROM v$database;
SELECT instance_name FROM v$instance;
SELECT value FROM v$parameter WHERE name = 'service_names';
SELECT sys_context('USERENV', 'DB_NAME') AS database_name FROM dual;

# 查看当前用户拥有的所有表
SELECT table_name FROM USER_TABLES;
SELECT table_name FROM TABS;
SELECT table_name FROM ALL_TABLES WHERE owner = 'ROOT';
SELECT table_name FROM DBA_TABLES WHERE owner = 'ROOT';

# 查看数据库所有表
SELECT table_name FROM ALL_TABLES;
SELECT table_name FROM DBA_TABLES;

# 查看所有的数据库
SELECT name FROM v$services;

# 查看所有用户(一个用户绑定一个模式)
SELECT username FROM ALL_USERS;
SELECT username FROM DBA_USERS;

# 查看拥有表的所有用户
SELECT DISTINCT OWNER FROM ALL_TABLES;
SELECT DISTINCT OWNER FROM DBA_TABLES;

# 查看某个用户的系统权限
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'ROOT';

# 查看某个用户的角色权限
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'ROOT';

# 查看某个用户直接拥有的对于哪些表的权限
SELECT * FROM ALL_TAB_PRIVS_RECD WHERE GRANTEE = 'ROOT';
SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'ROOT';

# 查看某个用户直接拥有的对于哪些表的某些列的权限
SELECT * FROM DBA_COL_PRIVS WHERE GRANTEE = '你的用户名';

# 查看TNS解析数据库ORCL服务
tnsping orcl

# 停止oracle监听器
lsnrctl stop

# 启动oracle监听器
lsnrctl start

# 查看oracle监听器状态(服务名、ip、端口)
lsnrctl status
# 导入dmp数据
imp root/root123 -file=./PW_para.dmp fromuser=paradb touser=root

# 导入dmp数据,指定编码
imp root/root123 -file=./PW_para.dmp fromuser=paradb touser=root charset=ZHS16GBK

# 查看当前默认字符编码
select userenv('language') from dual;
SELECT * FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET';

# 修改字符集
ALTER DATABASE CHARACTER SET ZHS16GBK;

# 设置编码环境变量,不需在导入命令中使用charset参数指定编码
NLS_LANG
AMERICAN_AMERICA.ZHS16GBK
# 表空间'USER_DATA'不存在,创建
CREATE TABLESPACE USER_DATA DATAFILE 'user_data.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M;
# 检查表空间USER_DATA是否已存在
SELECT tablespace_name FROM dba_tablespaces WHERE tablespace_name = 'USER_DATA';

5.2 常见视图类别

用户视图:
ALL_TABLES: 包含有关用户有访问权限的所有表的信息。
ALL_VIEWS: 提供用户有访问权限的所有视图的信息。
ALL_INDEXES: 包含用户有访问权限的所有索引的信息。

DBA 视图:
DBA_TABLES: 提供数据库中所有表的信息,对 DBA 用户可见。
DBA_VIEWS: 提供数据库中所有视图的信息,对 DBA 用户可见。
DBA_INDEXES: 提供数据库中所有索引的信息,对 DBA 用户可见。

动态性能视图:
V$DATABASE: 提供有关数据库实例的基本信息。
V$SESSION: 包含有关当前会话的信息。
V$SQL: 提供关于 SQL 语句的信息,如执行计划等。

数据字典视图:
DICTIONARY: 包含有关数据字典视图的信息,这些视图描述了数据库对象和其属性的结构。

存储视图:
V$DATAFILE: 提供有关数据文件的信息。
V$TEMPFILE: 提供有关临时文件的信息。
V$TABLESPACE: 提供有关表空间的信息。

5、Docker手册

#docker查看所有容器
docker ps -a

#docker查看运行中的容器
docker container ls

#docker查看所有镜像
docker images

#docker通过image启动新容器
docker run -itd --name 容器名 镜像名

# docker安装启动pandora
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

docker pull pengzhile/pandora

#docker启动容器
docker start id/name
docker exec -it id/name /bin/bash

#docker命令行启动新容器
docker run -itd --name 容器名 镜像名 /bin/bash

#命令行启动pandora
docker run -it --rm pengzhile/pandora
#or
docker run -e PANDORA_CLOUD=cloud -e PANDORA_SERVER=0.0.0.0:8899 -p 8899:8899 -d pengzhile/pandora
# pandora-docker获取chatgpt的access token链接:http://chat.openai.com/api/auth/session

#docker删除容器
docker rm -f id/name

#docker重命名
docker rename name_old name_new

#docker打包容器为新镜像
docker commit 容器的id/name image_name

#docker打包镜像为本地文件
docker save -o 待生成的name.tar image_name

#docker导出容器为本地文件
docker export id/name > name.tar

#docker导入本地文件为新镜像
cat name.tar | docker import - test/name:v1
#or
docker import url
#or
docker load -i name.tar
#查看wsl的名称、状态、版本号
wsl --list --verbose

#根据wsl名称将指定wsl的版本号切换为2
wsl --set-version Ubuntu 2

#查看wsl状态
wsl -l -v

#将WSL默认版本设置为2
wsl --set-default-version 2
wsl.exe --set-version (某个环境明名) 2

6、压缩解压命令手册

tar 
    c 表示创建一个新的压缩文件。
    x 表示提取压缩文件内容。
    z 表示使用gzip进行压缩。
    j 表示使用bzip2进行压缩。
    J 表示使用xz进行压缩。
    v 表示在压缩或解压时显示详细信息。
    f 表示指定压缩文件的名称。
    t 表示输出压缩文件的内容列表。
 
7z、xz、bz、gz:
    -1:最快压缩速度,压缩率最低。
    -2 ~ -8:提供了压缩速度和压缩率之间的不同权衡。随着数字的增加,压缩率提高,但压缩速度变慢。
    -9:最慢压缩速度,但压缩率最高。

压缩率比较:
7z > xz(txz)、rar(不稳定) > bz2(tgz2) > gz(tgz) > zip > zipx > tar > iso > exe > lzh > zpad

.7z
安装:sudo apt-get p7zip 
安装:sudo apt-get install p7zip-full
解压:7z x FileName.7z
解压到指定目录:7z x FileName.7z -o紧跟输出目录
压缩目录:7z a -mx9 Filename.7z DirName
最高压缩级别(9)压缩目录:7z a Filename.7z DirName
压缩指定密码:7z a -p紧跟解压密码 Filename.7z DirName

.tar
原地解压:tar xvf FileName.tar
解压到指定位置:tar xvf FileName.tar -C /……目标目录
压缩一个目录或文件:tar cvf FileName.tar SrcDir
压缩多个文件或目录:tar cvf FileName.tar dir1 dir2 file1 file2 ……

.gz
解压(保留原压缩文件):gunzip FileName.gz
解压(删除原压缩文件):gzip -d FileName.gz
压缩一个文件:gzip FileName
压缩一个目录下的每层级每个文件为单独的压缩包:gzip -r DirName

.tgz
解压:tar xvf FileName.tar.gz
解压:tar xvf FileName.tgz
解压:tar xzvf FileName.tar.gz
解压:tar xzvf FileName.tgz
压缩:tar czvf FileName.tar.gz SrcDir
压缩:tar czvf FileName.tgz SrcDir
压缩:tar czvf FileName.tar.gz DirName

.bz2
解压(保留原压缩文件):bunzip2 -k FileName.bz
解压(保留原压缩文件):bunzip2 --keep FileName.bz
解压(删除原压缩文件):bunzip2 FileName.bz
解压(删除原压缩文件):bunzip2 -d FileName.bz
解压(删除原压缩文件):bunzip2 FileName.bz2
解压(删除原压缩文件):bunzip2 -d FileName.bz2
压缩: bzip2 -z FileName 可选:--fast(快速压缩)、--best(极限压缩)

.tbz2
解压:tar xvf FileName.tar.bz
解压:tar xvf FileName.tbz
解压:tar xvf FileName.tar.bz2
解压:tar xvf FileName.tbz2
解压:tar xjvf FileName.tar.bz
解压:tar xjvf FileName.tbz
解压:tar xjvf FileName.tar.bz2
解压:tar xjvf FileName.tbz2
压缩:tar cjvf FileName.tar.bz2 SrcDir
压缩:tar cjvf FileName.tbz2 SrcDir
压缩:tar cjvf FileName.tbz SrcDir

.xz
解压:unxz FileName.xz
解压:xz -d FileName.xz
压缩:xz FileName
压缩:xz -9 FileName

.txz
压缩:tar cJvf FileName.tar.xz SrcDir
压缩:tar cJvf FileName.txz SrcDir
压缩(不保留原文件):xz -z FileName.tar
压缩(保留原文件):xz -zk FileName.tar

.Z
解压:uncompress FileName.Z
压缩:compress FileName

.tar.Z
解压:tar xZvf FileName.tar.Z
压缩:tar cZvf FileName.tar.Z DirName

.zip
解压:unzip FileName.zip
压缩一个文件:zip FileName.zip FileName
压缩一个目录:zip -r FileName.zip DirName

.rar
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName 

7、环境变量与开机自启手册

# Linux开机自启

# 开机启动与/etc/rc.d/rc.local、/etc/profile、/etc/environment、.bashrc、.bash_profile等有关
# 在~/.bashrc里如下添加:
. .setpsenv.ksh
# or
. $HOME/setpsenv.ksh
# source ~/.bashrc 即可让该脚本内的内容作为自动执行,我这里的这个文件里主要是配置了一些环境变量
# 如果仍然失效,可以使用临时添加环境变量
source setpsenv.ksh
# linux环境变量(~/.bashrc、~/.bash_profile、/etc/profile、/etc/environment)

# 以/home/username/.bashrc 和 /home/username/程序目录/ 为例:

# 将指定目录添加到环境变量PATH货LD_LIBRARY_PATH中:
export PATH=$PATH:$HOME/程序根目录/bin
export PATH=$HOME/程序根目录/bin:$PATH
export LD_LIBRARY_PATH=$HOME/程序根目录/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/程序根目录/lib
# PATH=$PATH:$HOME/程序根目录/bin 会使 HOME/程序根目录/bin 目录中的可执行文件更容易被找到
# export LD_LIBRARY_PATH=$HOME/程序根目录/lib:$LD_LIBRARY_PATH 会使 HOME/程序根目录/lib 目录中的动态库更容易被找到

# 添加指定目录为新环境变量,并为之取名,如:FWPATH、FWCCPATH
export FWPATH=$HOME/程序根目录
export FWCCPATH=$HOME/程序根目录

# 查看环境变量
env | grep 环境变量名
# solaris sparc 开机自启
# timeout_seconds='-1' 表示 无限等待服务启动并不关闭超时的该服务,因为我实测mysql服务的状态只有offline,不会变为online

vim /var/svc/manifest/site/mysql.xml
输入内容:<?xml version='1.0'?>  
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>  
<service_bundle type='manifest' name='mysql'>  
  <service name='site/mysql' type='service' version='1'>  
    <create_default_instance enabled='true'/>  
    <single_instance/>  
    <dependency name='network' grouping='require_all' restart_on='none' type='service'>  
      <service_fmri value='svc:/milestone/network:default'/>  
    </dependency>  
    <exec_method name='start' type='method' exec='/opt/mysql/mysql/bin/mysqld_safe --user=mysql' timeout_seconds='-1'>  
      <method_context working_directory='/var/lib/mysql'/>  
    </exec_method>  
    <exec_method name='stop' type='method' exec=':kill' timeout_seconds='30'/>  
  </service>  
</service_bundle>

svccfg import /var/svc/manifest/site/mysql.xml
svcadm enable site/mysql:default
svcadm restart svc:/system/manifest-import
# Windows开机自启

# win+r后运行命令:shell: startup  ,即可打开开机自启目录,该目录下的脚本将会在开机时自动加载运行
# windows脚本一般是.bat文件,下面给一个例子:
@echo off
title 我的程序启动工具
echo 正在启动我的平台软件,请勿关闭!
echo *******************************
echo *******************************
start C:\XX\myXX.exe
rem 注释一:下一句的作用是“使用 ping 命令向本地回环地址 (127.0.0.1) 发送 ICMP Echo Request 消息,发送次数为 120> nul 的部分将命令的输出重定向到空设备;”
:: 注释二:两种注释均可,下一句的目的是通过ping回环地址简单进行脚本延迟,类似于sleep函数
ping -n 120 127.0.0.1 > nul
echo 正在启动第二个程序:hmi(传入参数为:无边框启动该程序)
echo *******************************
start hmi -noborder

8、VSCode的workspace.json配置例子

# vscode调试相关workspace.json配置如下:
{
	"folders": [
		{ "path": "C:/mingw64/bin" }
	],
	"launch": {
		"version": "0.2.0",
		"configurations": []
	},
	"settings": {}
}
# 仅仅是folders里添加g++等的路径
# 有关tasks.json的配置如下:
{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "C:\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}
# 以上是系统自动生成的

9、ubuntu20amd64配置32位程序手册

# ubuntu20.04amd64安装并配置NK6000
# 换源(/etc/apt/sources.list):

#添加阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
#添加清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# 这些源特别是清华的源或许有问题

#ubuntu32位源
deb http://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse

# ubuntu20.04 WSL
deb http://archive.ubuntu.com/ubuntu/ focal main restricted
deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted
deb http://archive.ubuntu.com/ubuntu/ focal universe
deb http://archive.ubuntu.com/ubuntu/ focal-updates universe
deb http://archive.ubuntu.com/ubuntu/ focal multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-updates multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ focal-security main restricted
deb http://security.ubuntu.com/ubuntu/ focal-security universe
deb http://security.ubuntu.com/ubuntu/ focal-security multiverse

# ubuntu gnome 32位
deb http://archive.ubuntu.com/ubuntu/ focal main restricted
deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted
deb http://archive.ubuntu.com/ubuntu/ focal universe
deb http://archive.ubuntu.com/ubuntu/ focal-updates universe

# debian32位源
deb http://mirrors.aliyun.com/debian/ buster main contrib non-free
deb http://mirrors.aliyun.com/debian-security buster/updates main contrib non-free
deb http://mirrors.aliyun.com/debian/ buster-updates main contrib non-free

# 下载公钥验证软件源
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 648ACFD622F3D138 0E98404D386FA1D9 DCC9EFBF77E11517 112695A0E562B32A 54404762BBB6E853

# 暂时忽略安全性
sudo apt-get install --reinstall ca-certificates
# 除了命令,还可以把https改为http忽略安全性要求

# 若报错如下:
# W: GPG 错误:http://repo.mysql.com/apt/ubuntu trusty InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY 467B942D3A79BD29
# E: 仓库 “http://repo.mysql.com/apt/ubuntu trusty InRelease” 没有数字签名。
# N: 无法安全地用该源进行更新,所以默认禁用该源。
# N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。
# 则可按照如下方式导入公钥
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29
# 或
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29 2>/dev/null | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/mysql.gpg > /dev/null

# 运行32位的程序,报错“找不到文件”
sudo apt-get install lib32stdc++6 lib32z1 lib32ncurses5 # lib32ncurses5可能有误
# 以下是因为缺库而开启的下载32位库环境之旅
sudo apt install libxi6:i386 libxtst6:i386
sudo dpkg --add-architecture i386 && sudo apt update
sudo apt install libxrender1:i386
sudo apt install libxrandr2:i386
sudo apt install libxcursor1:i386
sudo apt install libxinerama1:i386
sudo apt install libsm6:i386
sudo apt install libaio1:i386
# 终于大功告成,amd64的ubuntu20成功运行32位的程序
# 查看某个程序的库依赖
ldd pathToProgram
# Warning: Qt: Locales not supported on X server
sudo apt update
sudo apt install locales
sudo dpkg-reconfigure locales
# 具体选项看国家和地区,然后确保没有警告和报错,最后重启系统
# 安装32位版本的gcc和g++
sudo apt-get install gcc-multilib g++-multilib

#确定系统是否支持32位程序
dpkg --print-foreign-architectures
#出现i386等即可
# 开启系统对32位的支持
sudo dpkg --add-architecture i386
sudo apt update
# 安装软件时指定32位
sudo apt install <database-package>:i386
# 字符编码下载管理
sudo dpkg-reconfigure locales
# 仅临时修改dns服务器地址
sudo vim /etc/resolv.conf
# 修改完退出即刻生效

# 永久修改wsl ubuntu的dns服务器
sudo vim /etc/wsl.conf
# 内容如下:
# [network]
# generateResolvConf = false
# 然后在powershell关闭wsl
wsl --shutdown
# 删除并重建/etc/resolv.conf,内容如下:
nameserver 8.8.8.8

10、固定IP地址配置手册

# 固定ip设置
sudo vim /etc/network/interfaces

# 内容大致如下
source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

# ens33、eth0等,看ip addr的输出而定
auto ens33
iface ens33 inet static
address 192.168.1.130
netmask 255.255.255.0
gateway 192.168.1.2
dns-nameserver(s) 8.8.8.8 8.8.4.4 114.114.114.114
# 有的系统不需要s,有的需要,不一而定,可以查看/etc/resolv.conf里面有没有

# :wq! 或者 esc+ZZ
sudo /etc/init.d/networking restart

11、文件查找命令手册

# 查找相关
locate filename
whereis filename
find 查找目录 -name filename

ps -ef | grep programName
ps -ef|grep programname
dpkg -l | grep programname
pgrp programname

12、文件删除

# 删除当前目录及其所有子目录下的指定类型文件
find . -type f -name '*.ncb' -exec rm {} \;
# 删除每个文件前向我询问
find . -type f -name '*.ncb' -exec rm -i {} \;

12、宝塔报错“没有openssl模块”

# 没有pip可以执行pip的安装文件(python脚本)
# 宝塔bt报错没有openssl模块
python2.7 -m pip install --upgrade pip setuptools
sudo apt-get install build-essential libssl-dev libffi-dev python-dev
python2.7 -m pip install cryptography
python2.7 -m pip install pyOpenSSL

14、ftp命令手册

# ftp连接服务器
ftp hostname或ip

# 可以用
ls
# 和
cd

# 下载
get pathtofile local_pathtofile
get pathtofile
# 下载大量文件
mget *.*

# 显示下载进度
hash

# 上传文件
put local_pathtofile pathtofile
put local_pathtofile
# 上传大量文件
mput *.*

# 断开
quit
# 或
bye
# 或
ctrl+z

# 改变传输格式
ascii 或 binary
# 按需要 修改ftp配置文件,修改完重启ftp服务
sudo vim /etc/vsftpd.conf

# 设置是否允许本地用户登录  
local_enable=YES
# 是否限制用户仅能访问各自的主目录
chroot_local_user=NO
# 是否允许用户有创建文件权限,不会导致allow_writeable_chroot失效
write_enable=YES
# 在chroot_local_user=YES时,允许用户在自己的主目录创建文件,不会导致write_enable失效
allow_writeable_chroot=YES
# 设置用户创建文件时的umask值,表示755(022的反码)
local_umask=022 

# 设置是否允许匿名用户登录 
anonymous_enable=no
# 允许为目录配置显示信息,显示每个目录下面的message_file文件的内容
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
# 日志文件位置
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
# 端口号自己定义
listen_port=2123
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
# 用户路径
local_root=/data
# 用户配至文件
user_config_dir=/etc/vsftpd/userconfig
ftp [-v] [-d] [–i] [-n] [-g] [-k realm] [-x] [-u] [host]

ftp命令主要选项说明
 选项	 说明
 -d	 启动调试模式
 -u	 关闭自动认证
 -e	 不记录历史指令
 -i	 关闭交互模式
 -x	 在成功认证之后,协商密钥
 -n	 关闭自动登录功能
 -p	 传输文件模式为被动模式
 -v	 程序运行时,显示详细的处理信息
 -k realm	使用Kerberos v4认证时,从realm中得到信息
 host	 	FTP服务器的主机名/IP地址

 ftp内部命令	 	说明
 ls				显示服务器上的目录
 get			从服务器下载指定文件到客户端
 put			从客户端传送指定文件到服务器
 open			连接ftp服务器
 quit			断开连接并退出ftp服务器
 cd directory	改变服务器的当前目录为directory
 lcd directory	改变本地的当前目录为directory
 bye			退出ftp命令状态
 ascii			设置文件传输方式为ASCII模式
 binary			设置文件传输方式为二进制模式
 !	 			执行本地主机命令
 cd	 			切换远端ftp服务器上的目录
 cdup	 		上一层目录
 close	 		在不结束ftp进程的情况下,关闭与ftp服务器的连接
 delete	 		删除远端ftp服务器上的文件
 get	 		下载
 hash	 		显示#表示下载进度
 mdelete		删除文件,模糊匹配
 mget	 		下载文件,模糊匹配
 mput	 		上传文件,模糊匹配
 mkdir	 		在远端ftp服务器上,建立文件夹
 newer	 		下载时,检测是不是新文件
 prompt	 		关闭交互模式
 put	 		上传
 pwd	 		显示当前目录
# ftp配置拥有root权限的用户
sudo vim /etc/vsftpd.conf

root
linux
debian
ubuntu
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邱邱玩编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值