linux使用及常用命令总结/shell命令/容器相关命令

1.linux下执行shell文件报错:

 /bin/bash^M: bad interpreter: No such file or directory

解决方案:
执行命令 :set ff?
如果是windows下的doc格式 设置:set ff=unix 保存 重新执行

  1. 编译不同操作系统下的go 可执行文件
GOARCH=amd64 go build -o amd_main main.go
GOARCH=arch go build -o arch_main main.go
  1. linux开发环境下常用的命令:
上传文件 rz -be
下载文件 sz
删除文件 rm 
进入目录 cd

ps -elf | grep "服务名"    查询进程号
kill -9 进程号

解压tgz格式文件
tar zxvf  文件名.tgz -C ./ 

cannot remove is a directory 表示这是个目录不能删除,但是我们可以采用强制删除的办法,cb文件夹是一个目录,
可用rm -rf cb删除:-r是递归处理  -f是强制删除。
执行命令: rm –rf cb

查看当前使用的python路径   which python
sudo su root   获取root权限
conda activate bert-srv 创建虚拟坏境
编辑文件     vim 文件名   进入文件   a 编辑文件
退出编辑模式    shift :   q   enter

nohup      加在一个命令的最前面,表示不挂断的运行命令
&      加载一个命令的最后面,表示这个命令放在后台执行
  1. 统计目录下的文件个数
统计当前目录下文件的个数(不包含目录或子文件夹) ls -l | grep "^-" | wc -l
统计当前目录下文件的个数(包含子目录中的文件) ls -lR | grep "^-"  | wc -l 
  1. 遇到问题: 日志系统 记录不到useradd命令信息
1.修改配置文件 cat /etc/rsyslog.conf
2.重启日志服务 service rsyslog restart
3.测试 useradd test1
           grep -a useradd /var/log/secure

宿主机记录攻击机sftp链接操作
通过执行shell命令修改配置文件
原日志样式

Subsystem       sftp    /usr/libexec/openssh/sftp-server -l VERBOSE
Subsystem       sftp    internal-sftp -l VERBOSE

可用修改脚本命令

sudo sed -i 's#/usr/libexec/openssh/sftp-server#/usr/libexec/openssh/sftp-server -l VERBOSE#g' /etc/ssh/sshd_config
sudo sed -i 's#internal-sftp#internal-sftp -l VERBOSE#g' /etc/ssh/sshd_config
systemctl restart sshd.service
  1. /var/log/messages 日志不记录chmod操作信息
    修改/etc/rsyslog.conf配置文件 一般是文件最后多了行描述语句
    把 /etc/bashrc 后面 加如下代码
PATH="$PATH:/usr/local/sbin:/usr/sbin"
export PATH
export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $x $y | grep -v -E "password|passwd|\-\-email|\-\-description"; });logger -p local6.notice "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }'
export HISTIGNORE="*adduser*--user=*-p=*:*openssl*passwd *"
export HISTTIMEFORMAT="%F %T `whoami` "
export GJGBIN=/usr/local/bin/GJG10241908BIN
export PATH=/usr/local/bin/GJG10241908BIN:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/sbin:/root/bin
export PROMPT_COMMAND='{ msg=$(history 1 | { read x cmd; echo "$cmd" | grep -i -v -E "password|passwd|\-\-email|\-\-description|\-P "; });logger -p local6.notice [euid=$(whoami)]#####$(who am i)#####[cwd=$(pwd)]#####"$msg"; }'
export HISTTIMEFORMAT="%F %T "
  1. 操作命令带时间
    通过设置export HISTTIMEFORMAT=’%F %T ‘,让历史记录中带上命令执行时间。
    这个配置可以写在/etc/profile中,当然如果要对指定用户做配置,这个配置可以在/home/$USER/.bash_profile中。
export HISTTIMEFORMAT='%F %T'

如果想要实现更细化的记录,比如登陆过系统的用户、IP地址、操作命令以及操作时间一一对应,可以通过在/etc/profile里面加入以下代码实现。

export HISTTIMEFORMAT="%F %T `who -u 2>/dev/null | awk '{print $NF}'|sed 's/[()]//g'` `whoami` "

使配置立即生效请执行source /etc/profile

常用关键命令

1.grep     使用正则表达式搜索文本,并把匹配的行打印出来
grep -v 是反向查找的意思,比如 grep -v "grep" 就是查找不含有 grep 字段的行;

2.awk命令       文本分析工具,处理每行都是相同格式的文本  可以进行样式装入,流控制,数学运算
awk '{pattern + action}' <file>    pattern表示数据中要查找的内容,action表示要执行的一系列命令
awk的默认分隔符是空格和制表符    例子:  awk -F ':|,' '{print $2, $4, $6}' log
-内置变量 FILENAME:当前文件的名称   NR:当前已读的行数    NF:当前行被分割的列数
-条件判断  awk '$2 < 5 {print $0}' log   只打印第二列小于5的行
-统计值计算 
-文本去重 awk '!x[$0]++' filename

3.curl命令
curl主要用来与web服务器交互数据;常用功能包括下载文件、访问服务器页面
常用参数
-H 设置header              -u 设置用户名密码
-X 设置请求的方式           -O 源文件名保存文件
-o 指定文件名保存文件       -d post请求体
-I   仅测试http头          -m 10    最多查询10秒
-o /dev/null    屏蔽原有输出信息        -w "http_code:%{http_code} "

4.wget命令 
是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理

5.tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
-n<行数> 显示文件的尾部 n 行内容

6. ps 作用:主要是查看服务器的进程信息
ps aux  查看系统中所有的进程,使用 BS 操作系统格式
ps -le   查看系统中所有的进程,使用 Linux 标准命令格式
选项:
a:显示一个终端的所有进程,除会话引线外;
u:显示进程的归属用户及内存的使用情况;
x:显示没有控制终端的进程;
-l:长格式显示更加详细的信息;
-e:显示所有进程;

7.  shell脚本中$?是指上一次命令执行的成功或者失败的状态。如果成功就是0,失败为1.。
语句if [ $? -eq 0 ] 是判断if语句的上一个命令执行如果成功就执行if中的语句,否则就执行else中的内容。

8. source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
source filename		    # filename必须是可执行的脚本文件
或者 . filename			# 注意 . 号后面还有一个空格

9. 把指定目录下a移动到指定目录b文件下并重命名为c
mv PATH_a PATH_b/c

10. 复制主机文件到容器
docker cp 主机文件目录 容器:容器目录
进入容器   docker attach 44fc0f0582d9

11. 端口号查询进程 
netstat -ano|findstr “查询的端口号”

12. sed命令使用
流编辑器,可以对 stdin 或文件进行处理。
在文件尾部加入内容      sed -i '$a fileContent' fileName 
删除文件最后一行         sed -i  '$d' fileName

14. chmod命令      命令是用于改变文件或目录的访问权限。
Linux系统中的每个文件和目录都有访问许可权限,
用它来确定谁可以通过何种方式对文件和目录进行访问和操作。
文件或目录的访问权 限分为只读,只写和可执行三种。
 
这里显示的权限是依次排列的,分别为:[用户][同组][其他]
用户权限,就是你自己的权限。英文:user,简写:u(覆盖标号123)
用户组权限,就是和你同组的人的权限。英文:group,简写:g(覆盖标号456)
其他权限,就是不和你同组的人的权限。英文:others,简写:o(覆盖标号789)
所有人的权限,英文:all,简写:a
 
r, 即Read,读,权限值为4
w,即Write,写,权限值为2
x,即eXecute,执行,权限值为1
-,在标号0位置,表示普通的文件
-,其他位置,表示对应权限未开启,不具备权限
d,即directory,表示目录文件

+ 表示增加权限,如u+x, u+r, u+w, g+w, g+r, o+r, a+r等
- 表示取消权限,如u-x, u-r, u-w, g-w, g-r, o-r, a-r等
= 表示赋予给定权限,并取消其他所有权限(如果有的话,如原来u是rwx,设置u=r,u就剩r)

History的保存
那么命令记录在哪里呢?在home目录内的 .bash_history 里! 不过,需要留意的是,~/.bash_history 记录的是前一次登陆以前所运行过的命令,而至于这一次登陆所运行的命令都被缓存在内存中,当你成功的注销系统后,该命令记忆才会记录到 .bash_history 当中!

进程相关
ps -a   查看所有进程
top -p  pid   查看pid的cpu  内存占用情况
文件相关
find 文件目录 -type d     //查看文件下的所有子文件

内核态(Kernel Mode):运行操作系统程序,操作硬件
用户态(User Mode):运行用户程序

windows 下 切换盘
C:>D:

1.进入文件:vi 文件名(例如 vi server.xml)
2.查找待修改内容的位置:
a.先输入shift + :,进入可查询状态;
b.再输入/ + 要查询的内容,点击回车,使用N键上下搜索,找到要修改的具体位置(例如 /hello)
3.按I键进入可编辑模式,修改内容;
4.修改完成,按Esc键进入命令模式;
5.保存并退出:
a.保存并退出:":" + wq!
b.强制退出(不保存):“:” + q!

容器相关:
1.使用images命令列出本地镜像 docker images
REPOSITORY:表示来自于哪个仓库。
TAG:表示镜像的标签信息,标签只是标记,并不能标识镜像内容。
IMAGE ID:镜像ID,镜像的唯一标识,如果两个镜像ID相同,则说明它们实际上指向了同一个镜像,只是具有不同标签名而已。
CREATED:表示镜像最后的更新时间。
VIRTUAL SIZE:表示镜像大小,好的镜像往往体积会较小。

2.使用tag命令为镜像添加标签 docker tag

3.使用inspect命令查看镜像详细信息
docker insepect -f {{“.项名”}} 镜像名

4.进入容器

docker exec -it xxxxxxxx /bin/bash

拷贝文件进容器

docker cp /home/xxx/main  xxxaaabbb:/root

容器逃逸

不安全的配置与挂载
如果为容器设定了不安全的配置,会导致容器本身的隔离机制失效,容器的两大隔离机制如下:

Linux 命名空间(NameSpace):实现文件系统、网络、进程、主机名等方面的隔离
Linux 控制组(cgroups):实现 CPU、内存、硬盘等方面的隔离
如果设定了以下配置就会导致相应的隔离机制失效:

--privileged:使容器内的 root 权限和宿主机上的 root 权限一致,权限隔离被打破
--net=host:使容器与宿主机处于同一网络命名空间,网络隔离被打破
--pid=host:使容器与宿主机处于同一进程命令空间,进程隔离被打破
--volume /:/host:宿主机根目录被挂载到容器内部,文件系统隔离被打破

拷贝strings命令进主机

strings 可执行二进制文件  拷进       /usr/bin
关联的.so      文件拷进   /usr/lib64
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值