linux 相关
网络相关
ip相关
ping
ctrl+c
结束ping命令
ping -c 4 192.168.0.100
指定次数
ip addr add 10.60.197.35/20 dev eth0
新增ip
ip addr del 192.168.0.1 dev eth0
删除ip地址
ip route add default via 10.60.192.1 dev eth0
增加路由
lsof -i tcp:80
查看端口是否占用问题
ip r
查看IP地址信息
route -n
查看路由表
用于配置不同网段的通信,查看网关和掩码
原生linux改ip
1)修改配置文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0
(eth0,第一块网卡,如果是第二块则为eth1)
编译命令
service sshd start
启动ssh服务
docker ps
查看 运行中的 docker
docker run -dti --privileged=true -v /home/Code:/home/Code -v ~/.ssh:/root/.ssh registry.xxx.com/af/8040compiler:1.6 /bin/bash
运行docker
docker exec -ti 64794e5222cf /bin/bash
进入对应的docker
source env_make_all
加载各种环境变量
make
生成二进制文件
Ctrl+P Ctrl+Q
可以退出容器,让容器仍运行
命令Ctrl+C和exist
退出容器,不运行
从容器拷贝文件到后台服务器
通过scp拷贝文件
替换整个目录
scp -r -P 端口号 原地址 目的地址
scp -P 22 root@[ip]:源地址 目的地址
docker
ctrl + D
退出docker
docker ps
查看 运行中的 docker
docker exec -ti 64794e5222cf /bin/bash
进入对应的docker
环境命令
yum install mlocate安装locate
安装
yum -y install tree
yum install openssh-server
安装ssh服务
su username
切换用户
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
ps 查看当前运行的进程
ps -aux | less
ps -aux --sort -pcpu | less
cpu使用降序
ps -aux --sort -pmem | less
内存 使用降序
date
查看系统时间
echo
L
D
L
I
B
R
A
R
Y
P
A
T
H
共享库环境变量
e
x
p
o
r
t
L
D
L
I
B
R
A
R
Y
P
A
T
H
=
LD_LIBRARY_PATH 共享库环境变量 export LD_LIBRARY_PATH=
LDLIBRARYPATH共享库环境变量exportLDLIBRARYPATH=LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64
设置共享库环境变量
临时设置
shutdown -r now
系统重启
cat /proc/meminfo | grep MemTotal
查看内存大下
free -h
同上
cat /proc/cpuinfo | grep ‘model name’ |uniq
查看cpu型号
文件操作命令
chmod rwx 文件(rwx用数字代替)
ls -l 文件或文件夹
sfmount.sh --rw
解决修改文件只读的问题
find
按文件名搜索
-name
find /-name show_sys_res.cgi
find . -name ’ ’
模糊查找
find ./ -name log |xargs ls -lta
按数据排序
根据文件名模糊查询
find /opt/ -type f -name “*.log”
-type f表示文件
-type f表示文件
查找特定权限文件:
find /opt -type f -perm 755
查找大文件
find /opt/ -size +100M
根据时间查找
find /opt -mtime -10
sed是一种流编辑器,它一次处理一行内容
sed -i
原处编辑
stat -c %Y xxx
按指定格式输出时间
cd -
返回上一目录
tail -f
[file]
显示正在更新的日志
cat filename | tail -n 100 显示文件最后100行 cat filename | head -n 100
eval命令作用
用于重新运算求出参数的内容
dos2unix ./var_clean.sh
转换编码
磁盘相关
df -Th
查看系统分区
mount --bind
绑定挂载
du命令(Disk Usage)用于查看文件或目录的大小。df是用于查看磁盘或分区使用情况的命令
du /var -m -x -S
以M为单位
以一开始处理的文件系统为准
显示个别目录的大小时,并不含其子目录的大小。
lsof -n / |grep deleted查看已删除空间却没有释放的进程
gdb调试
调试
可使用断点
断点的设置
普通断点
i b --查看断点号
d 断点号–删除断点
c continue 运行到下一断点
条件断点
(gdb) b <断点> if <条件表达式>
b main.cpp:8 if x=10 && y=10
(gdb) condition <断点编号> <条件表达式>:修改断点条件
condition 1 x=10 && y=10
查看变量
watch
单步
n
查看函数调用堆栈
bt
查看内存
修改变量值
(gdb) set variable array[1] = 12
不可使用断点方式情况
打印log 信息方式
修改单个文件,增加打印信息
单独编译
编译后的文件放入af环境运行
多进程调试
gdb使用
启动进程
gdb <程序名>
>gdb -p
attach
退出
quit
detach
调试cgi
coredump
gdb 执行文件 core
/sfdata/log/core
通过帧编号来选择帧,帧编号可以通过 bt 命令来查看。
我们查看对应的第 17帧的堆栈信息
f 17
可能存在的问题
找不到gdb
/var/debug_tools/debug_tools.run
运行这个工具重新安装
打印不完整
(gdb) set print elements 0
(gdb) show print elements
Limit on string chars or array elements to print is unlimited.
(gdb)
进程
systemctl status sshd看下是不是服务异常
kill -9
进程号
p
s
a
u
x
∣
h
e
a
d
−
1
;
p
s
a
u
x
∣
s
o
r
t
−
r
n
−
k
+
3
∣
h
e
a
d
获取占用
C
P
U
资源最多的
10
个进程
p
s
a
u
x
∣
h
e
a
d
−
1
;
p
s
a
u
x
∣
s
o
r
t
−
r
n
−
k
+
4
∣
h
e
a
d
占用内存资源最多的
10
个进程
p
i
d
=
进程号 ps aux|head -1;ps aux|sort -rn -k +3|head 获取占用CPU资源最多的10个进程 ps aux|head -1;ps aux|sort -rn -k +4|head 占用内存资源最多的10个进程 pid=
进程号psaux∣head−1;psaux∣sort−rn−k+3∣head获取占用CPU资源最多的10个进程psaux∣head−1;psaux∣sort−rn−k+4∣head占用内存资源最多的10个进程pid=(pidof -x var_clean.sh)
显示由脚本开启的进程 -x
vim
命令模式 :set nu
显示行号
:.,
d
表示从当前行到末行全部删除
d
d
删除行
g
g
v
G
全选
y
复制跳转跳转行在正常模式下输入
n
g
g
或者
n
G
,
n
为指定的行数,如
12
g
g
或者
12
G
跳转到第
12
行用
g
g
表示移动到首行跳到文本的最后一行:按“
G
”
,
即“
s
h
i
f
t
+
g
”。跳到文本的第一行的第一个字符:按两次“
g
”。跳到当前行的最后一个字符:在当前行按“
d 表示从当前行到末行全部删除 dd 删除行 ggvG 全选 y 复制 跳转 跳转行 在正常模式下输入ngg 或者 nG,n为指定的行数,如12gg或者12G 跳转到第12行 用gg表示移动到首行 跳到文本的最后一行:按“G”,即“shift+g”。 跳到文本的第一行的第一个字符:按两次“g”。 跳到当前行的最后一个字符 :在当前行按“
d表示从当前行到末行全部删除dd删除行ggvG全选y复制跳转跳转行在正常模式下输入ngg或者nG,n为指定的行数,如12gg或者12G跳转到第12行用gg表示移动到首行跳到文本的最后一行:按“G”,即“shift+g”。跳到文本的第一行的第一个字符:按两次“g”。跳到当前行的最后一个字符:在当前行按“”键,即“shift+4”。
跳到当前行的第一个字符:在当前行按“0”。
shell
shell脚本
命令行批处理
变量含义
1、KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲:表示执行脚本传入参数的个数 …*:表示执行脚本传入参数的列表(不包括
0
)
3
、
0) 3、
0)3、
:表示进程的
i
d
;
S
h
e
l
l
本身的
P
I
D
(
P
r
o
c
e
s
s
I
D
,即脚本运行的当前进程
I
D
号)
4
、
:表示进程的id;Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号) 4、
:表示进程的id;Shell本身的PID(ProcessID,即脚本运行的当前进程ID号)4、!:Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)
5、$@:表示执行脚本传入参数的所有个数(不包括$0)
6、$0:表示执行的脚本名称
7、$1:表示第一个参数
8、
2
:表示第二个参数
9
、
2:表示第二个参数 9、
2:表示第二个参数9、?:表示脚本执行的状态,0表示正常,其他表示错误
运算符
逻辑
&&:用来执行条件成立后执行的命令
||:用来执行条件不成立后的执行命令
特殊
e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真
-w filename 如果 filename可写,则为真
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
filename1 -nt filename2 如果 filename1比 filename2新,则为真。
filename1 -ot filename2 如果 filename1比 filename2旧,则为真。
比较
eq
等于
-ne
不等于
-gt
大于
-ge
大于等于
-lt
小于
-le
小于等于
!
逻辑非
调试
set -e
命令作用是,如果一个命令返回一个非0退出状态值(失败),就退出.这个命令-e参数企业应用极少
set -x
输出运行的详细信息
set的“+” ,“-” 分别用于关闭或者打开某些特性
输出控制
/dev/null
特殊设备文件,文件接收的任务数据都会丢失
0 是标准输入,一般是从键盘获得输入
1 是标准输出,一般是输出到屏幕了
2 是标准错误,有时候屏幕上可以看到,但是重定向的文件中看不到的就是它了
为重定向符号
2>&1 &
标准错误2重定向到标准输出1,1前面的&为了让bash将1解释成标准输出1而不是文件1,最后一个&是让bash后台执行
工具安装 (源码编译)
配置
sh ./configure
make check
make
make install
git 命令
基本命令
git status -uno
不显示未跟踪文件的工作树状态
git checkout – filepathname
删除本地某一暂存的修改
git checkout .
删除本地所有暂存区更改
git reset .
删除所有工作区的更改
git clean -df
删除本地多余文件
git add 路径+filename
添加具体文件到仓库
撤销
git rm --cached file_name 从缓存区中移除,但不删除物理文件
git rm --f file_name 从缓存区中移除,并删除物理文件
git reset HEAD 用版本库内容恢复整个缓存区
git reset HEAD file_name 用版本库内容恢复缓存区中指定的文件
git commit -m “msg”
提交到本地仓库
git push
推送到远程关联仓库
git push -f
force 用本地覆盖远程仓库 ,,慎用
git stash
能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录
git撤销已提交的commit 使用命令: git reset --soft HEAD^ 1
git commit --amend 重新提交是在日志看不到操作记录的
git reflog
git reset HEAD^
git reset --hard 139dcfaa558e3276b30b
回退某一个版本
git reset --hard head^
回退上一个版本
git branch -m “原分支名” “新分支名”
git restore --staged …" to unstage)
退回add
查看 差异
Git命令查看尚未提交(commit)的已修改文件的具体修改内容
1)默认显示尚未通过git add的文件版本与已经通过git add的但尚未提交的文件版本之间的差别
git diff [filename]
2)显示已经通过git add的但尚未提交的文件版本与最近一次提交的差别; --staged是–cached的别名,是同样的功能。
git diff --cached [filename]
git diff --staged [filename]
3)显示尚未通过git add的文件版本与最近一次提交的差别
git diff HEAD [filename]
配置相关
git difftool
git config --global diff.tool bc
git config --system --unset credential.helper
git config --global user.name xxx
git config --global user.email xxx
查看用户名和邮箱地址 $ git config user.name $ git config user.email
git clean -n
列出将要删除的文件
.gitignore
忽略某些文件
拉取仓库
git init
初始化本地文件夹
git remote add origin xxxxx.git
与远程建立连接
git fetch origin branch_name
把远程分支拉到本地
git checkout -b master origin/master
本地创建分支切到远程该分支
git pull origin master
拉取远程分支上的内容
分支
git branch
-a
查看所有分支
-v
查看分析信息
-vv
查看本地分支与远程分支的关系
修改本地库分支名称:
git branch -m oldName newName
git config --list
查看本地与远程分支的关联关系
git remote
查看远程仓库
git fetch
取消特定分支的更新
git checkout --force target-branch-name
强行切分支,会丢弃修改
git push --set-upstream origin dev //dev为创建分支的名字
git merge-base branch2 branch3
查看共同基点
跟踪主分支的修改
git branch -u origin/remote_main_branch
跟踪目标分支
git status
查看主分支修改
git pull -r
更新主分支修改的本地 仓库
假如存在冲突
解决完冲突运行以下命令
git rebase --continue
git status
查看跟踪后的状态
git branch -u origin/remote_local_branch
反跟踪本地分支
git status
查看跟踪后的状态
git commit --amend
git push -f
远程分支使用当前最新
解决冲突
保留本地
$:git merge --abort
$:git reset --merge
$:git pull
丢弃本地
$:git fetch --all //重新拉取
$:git reset --hard origin/master //git reset --hard将master回退至origin/master,并忽略所有新提交
$:git fetch
撤销操作
git relog
查看操作记录的日志
git reset + 操作id
回退到撤销操作前的操作
删除操作
删除或重命名文件
1、git rm pathfile
删除本地库文件
2、git rm -r path
删除本地库文件夹
3、git commit -m “msg”
保存到本地仓库
4、git checkout
删除的文件恢复到最新版本
5、git push
推送远程仓库
分支
删除本地分支 git branch -d 本地分支名
删除远程分支 git push origin --delete 远程分支名
回退操作
回滚某个文件到指定版本
git reset 版本号 Content\BP_Character.uasset
合并流程
基本流程
git fetch origin
更新远程仓库数据到本地
git remote update origin --prune
这个命令会更新远程的分支到本地
1.本地创建一个与新分支并且关联远程分支
git checkout -b dev lo/dev
这时 dev 已经和远程的 lo/dev 一致了。
最好使用git pull先更新一下
- 切换回本地的 master 版本
git checkout master - 将本地的 dev 合并到 master
git merge dev - 将本地的 master 推到远程
git push lo master - 将远程的 dev 版本删除
选择合并
git cherry-pick
基本命令
git cherry-pick
一次转移多个
git cherry-pick A…B
转移a-b的
git cherry-pick A^…B
转移a-b的
包含a的
冲突解决
–continue
解决完后,添加暂存区,继续
–abort
冲突后,放弃合并,回到操作前的样子
–quit
退出git cherry-pick ,不回到操作前的样子
git checkout branch-B-tmp path_to_given_file
合其他分支部分代码
组管理
多个用户共用一个,形成用户组
在共用的用户主目录下建立.ssh文件夹
mkdir .ssh
cd .ssh
ssh-keygen -t rsa
新建authorized_keys文件保存公钥(多个公钥换行处理)
touch authorized_keys
保护分支
普通用户无法提交
lua语法
基本语法
– 单行注释
–[[
]]–
多行注释
标识符
可使用字母、下划线、数字0-9
保留关键字
and break do else
elseif end false for
function if in local
nil not or repeat
return then true until
while goto
变量默认为全局变量,不需要声明
git diff branch1 branch2 --stat
比较两个分支的差异
数据类型
变量不要类型定义,值可以存储在变量中,作为参数传递或结果返回
基本类型
nil
无效值
boolean
相当于bool
number
表示双精度的浮点数
string
字符串
function
c 或 lua 编写的函数
userdata
表示任意存储在变量中的c数据结构
thread
表示执行的独立线路,用于执行协同程序
table
表,关联数组。索引可以是数字、字符串或表类型。
{} 用来创建空表
“#table” = table 的长度
变量
作用域
全局
默认
局部
local 声明
表中的域
默认值
nil
可以对多变量同时赋值
a,b = 10, 2x
a, b = b,a
两边个数不一致时
a. 变量个数 > 值的个数 按变量个数补足nil
b. 变量个数 < 值的个数 多余的值会被忽略
运算符
==
等于
~=
不等于
循环
while
条件为true时,重复执行
for
重复次数在for中控制
repeat…until
重复直到指定条件为真
break
退出循环
goto
跳转另一个标签点
Lua 编程语言中 repeat…until 循环语句不同于 for 和 while循环,for 和 while 循环的条件语句在当前循环执行开始时判断,而 repeat…until 循环的条件语句在当前循环结束后判断。
调试
debug():
进入用户交互模式,运行用户输入的字符串
getfenv(object)
返回对象的环境变量
gethook(optional thread)
返回三个表示现场的钩子设置值
当前的钩子函数
当前的钩子掩码
当前的钩子计数
getinfo ([thread,] f [, what]):
返回关于一个函数信息的表
数字 f 表示运行在指定线程的调用栈对应层次上的函数: 0 层表示当前函数(getinfo 自身); 1 层表示调用 getinfo 的函数 (除非是尾调用,这种情况不计入栈);等等。 如果 f 是一个比活动函数数量还大的数字, getinfo 返回 nil。
debug.getlocal ([thread,] f, local):
此函数返回在栈的 f 层处函数的索引为 local 的局部变量 的名字和值。
getmetatable(value):
把给定索引指向的值的元表压入堆栈。
getregistry():
返回注册表表,这是一个预定义出来的表, 可以用来保存任何 C 代码想保存的 Lua 值。
getupvalue (f, up)
此函数返回函数 f 的第 up 个上值的名字和值。
sethook ([thread,] hook, mask [, count]):
将一个函数作为钩子函数设入。 字符串 mask 以及数字 count 决定了钩子将在何时调用
setlocal ([thread,] level, local, value):
函数将 value 赋给 栈上第 level 层函数的第 local 个局部变量。
setmetatable (value, table):
将 value 的元表设为 table (可以是 nil)。 返回 value
setupvalue (f, up, value):
这个函数将 value 设为函数 f 的第 up 个上值。
traceback ([thread,] [message [, level]]):
如果 message 有,且不是字符串或 nil, 函数不做任何处理直接返回 message。
正则表达式
例子
([\u4e00-\u9fa5]{4,})\1{2,}
重复汉字>=4个
[\w!# %&'*+/=?^_`{|}~-]+(?:\.[\w!# %&'+/=?^_`{|}~-]+)*@(?:\w?.)+\w?
语法
.
匹配任何单字符
[ ]
匹配括号中的任何一个字符
正则表达式“b[aui]g”匹配bug、big和bag,但是不匹配beg
“-”
指定字符的区间来简化表示
( )
将() 之间括起来的表达式定义为“组”(group),
|
将两个匹配条件进行逻辑“或”运算
‘z|food’ 能匹配"z" 或"food"。‘(z|f)ood’ 则匹配"zood" 或"food"
匹配前面的子表达式一次或多次
?
匹配前面的子表达式零次或一次
“do(es)?” 可以匹配"do" 或"does"
{n}
匹配确定的n 次
"zo{2}"→zoo。例如,“e{2}”不能匹配“bed”中的“e”,但是能匹配“seed”中的两个“e”。
^
非
$
匹配行结束符。
例如正则表达式“浮云$”能够匹配字符串“一切都是浮云”的末尾
d
代表一个数字,等同于[0-9]
\D
代表非数字,等同于0-9
\s
代表换行符、Tab制表符等空白字符
\S
代表非空白字符
\w
匹配字母或数字或下划线或汉字,即能组成单词的字符