Linux基础命令

在安全方面,掌握Linux系统对安全研究是非常重要的。首先我们就需要对一些常用的命令和参数熟连掌握,然后一步一步的进行深入的学习。这篇文章,主要分享一些我常用的Linux命令,也是做一个笔记,为以后复习做准备。

帮助命令

解析命令的意思(whatis、info)

1
2
whatis 解析命令的意思
info 详细解析命令的意思

寻找命令的安装路径(which、whereis)

1
2
which 寻找命令的位置
whereis 寻找程序的位置

目录管理

文件管理不外乎文件或目录的创建、删除、查询、移动,有mkdir/rm/mv

创建和删除

创建:mkdir
删除:rm
删除非空目录:rm -rf file目录
移动:mv
复制:cp (复制目录:cp -r )

查看当前目录下文件个数:

1
$find ./ | wc -l

复制目录:

1
$cp -r source_dir dest_dir

列出目录项(ls、tree)

显示当前目录下的文件

1
ls

查看目录结构

1
tree

按时间排序,以列表的方式显示目录项

1
ls -lrt

以上这个命令用到的频率如此之高,以至于我们需要为它建立一个快捷命令方式:
在.bashrc 中设置命令别名:

1
2
alias lsl='ls -lrt'
alias lm='ls -al|more'

给每项文件前面增加一个id编号

1
ls | cat -n

显示可阅读的文件大小

1
ll -h

文件和目录权限(chmod、chown)

1
2
3
4
改变文件的拥有者 chown
改变文件读、写、执行等属性 chmod
递归子目录修改: chown -R tuxapp source/
增加脚本可执行权限: chmod a+x myscript

文件管理

文件创建删除(touch、echo、rm -f)

删除日志文件

1
rm *log (等价: $find ./ -name “*log” -exec rm {} ;)

文件查看(du -sh)

1
du -sh 文件名

统计文件行数

1
wc -l test.txt

文件内容查看(cat,head,tail)

显示时同时显示行号

1
cat -n (如:cat test.txt | cat -n)

动态查看文件内容

1
tail -f filename #当有内容写入文件中再输出

正向逆向查看文件内容

1
2
head -1 filename # 第1行内容
tail -5 filename # 倒数5行内容

文件搜索(find)

查找txt和pdf文件

1
find . \( -name "*.txt" -o -name "*.pdf" \) -print

否定参数 ,查找所有非txt文本

1
find . ! -name "*.txt" -print

指定搜索深度,打印出当前目录的文件(深度为1)

1
find . -maxdepth 1 -type f

说明:-type f为文件,d为目录

按时间搜索

-atime 访问时间 (单位是天,分钟单位则是-amin,以下类似)
-mtime 修改时间 (内容被修改)
-ctime 变化时间 (元数据或权限变化)
最近第7天被访问过的所有文件

1
find . -atime 7 -type f -print

最近7天内被访问过的所有文件

1
find . -atime -7 -type f -print

查询7天前被访问过的所有文件

1
find . -atime +7 type f -print

按权限查找

1
find . -type f -perm 644 -print //找具有可执行权限的所有文件

按用户查找

1
find . -type f -user weber -print// 找用户weber所拥有的文件

找到后的后续动作(exec)

执行动作(强大的exec)
将当前目录下的所有权变更为weber:

1
find . -type f -user root -exec chown weber {} \;

注:{}是一个特殊的字符串,对于每一个匹配的文件,{}会被替换成相应的文件名;
将找到的文件全都copy到另一个目录:

1
find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD \;

文件内容搜索(grep)

查看成功登陆ssh的IP地址:

1
2
3
4
centos
for i in `grep 'sshd' /var/log/secure* | grep -oE '\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3])\>(\.\<([0-9]|[0-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>){2}\.\<([1-9]|[0-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-4])\>' | sort | uniq`; do curl -s --header "X-Forwarded-For: $i" http://1212.ip138.com/ic.asp |iconv -c -f GB2312 -t utf-8 | grep -o -P '(?<=\<center\>您的IP是:).*(?=<\/center)' ; done
ubuntu:
for i in `grep 'sshd' /var/log/auth.log* |grep 'Accepted' |grep ftp| grep -oE '\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3])\>(\.\<([0-9]|[0-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>){2}\.\<([1-9]|[0-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-4])\>' | sort | uniq`; do curl -s --header "X-Forwarded-For: $i" http://1212.ip138.com/ic.asp |iconv -c -f GB2312 -t utf-8 | grep -o -P '(?<=\<center\>您的IP是:).*(?=<\/center)' ; done

文件内容排序(sort)

-n 按数字进行排序 VS -d 按字典序进行排序
-r 逆序排序
-k N 指定按第N列排序

1
2
sort -nrk 1 data.txt
sort -bd data // 忽略像空格之类的前导空白字符

用户管理

添加用户

1
useradd -m username

该命令为用户创建相应的帐号和用户目录/home/username
设置密码

1
passwd username

删除用户

1
userdel -r username

注意:不带选项使用 userdel,只会删除用户。用户的家目录将仍会在/home目录下。要完全的删除用户信息,使用-r选项

帐号切换 登录帐号为userA用户状态下,切换到userB用户帐号工作

1
su userB

用户的组

将用户加入到组

默认情况下,添加用户操作也会相应的增加一个同名的组,用户属于同名组; 查看当前用户所属的组:

1
groups

一个用户可以属于多个组,将用户加入到组:

1
usermod -G groupNmame username

变更用户所属的根组(将用加入到新的组,并从原有的组中除去):

1
usermod -g groupName username

查看系统所有组

系统的所有用户及所有组信息分别记录在两个文件中:/etc/passwd , /etc/group 默认情况下这两个文件对所有用户可读:

查看所有用户及权限:

1
more /etc/passwd

查看所有的用户组及权限:

1
more /etc/group

用户权限

chown 更改读写权限
chmod 更改用户的拥有者

进程管理

杀死python相关的进程

1
2
3
ps -ef | grep python | cut -d ' ' -f 2 | xargs kill
或者
pkill -9 python #-9表示强制删除,pkill以进程名字匹配

查看进程

1
ps -ef | less

查看端口占用的进程状态:

1
lsof -i:3306

显示进程信息,并实时更新

1
top

杀死指定PID的进程 (PID为Process ID)

1
kill PID

查询7902端口现在运行什么程序:

1
2
3
4
5
6
7
8
9
10
11
#分为两步
#第一步,查询使用该端口的进程的PID;
$lsof -i:7902
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
WSL 30294 tuapp 4u IPv4 447684086 TCP 10.6.50.37:tnos-dp (LISTEN)
#查到30294
#使用ps工具查询进程详情:
$ps -fe | grep 30294
tdev5 30294 26160 0 Sep10 ? 01:10:50 tdesl -k 43476
root 22781 22698 0 00:54 pts/20 00:00:00 grep 11554

网络管理

查看网络连接

1
netstat -an | less

查看网络路由

1
route -n

只查看ip信息

1
ifconfig | grep inet

ftp sftp ssh

SSH登陆:

1
ssh ID@host

ssh登陆远程服务器host,ID为用户名。
ftp/sftp文件传输:

1
sftp ID@host

登陆服务器host,ID为用户名。sftp登陆后,可以使用下面的命令进一步操作:
get filename # 下载文件
put filename # 上传文件
ls # 列出host上当前路径的所有文件
cd # 在host上更改当前路径
lls # 列出本地主机上当前路径的所有文件
lcd # 在本地主机更改当前路径

系统管理

查看系统位数

1
getconf LONG_BIT

查看系统版本

1
lsb_release -a

查看hosts文件

1
cat /etc/hosts

查看CPU的核的个数

1
cat /proc/cpuinfo | grep processor | wc -l

查看系统信息

1
2
3
4
5
6
7
8
uname -a
uname -m 显示机器的处理器架构
uname -r 显示正在使用的内核版本
cat /proc/cpuinfo 显示CPUinfo的信息
cat /proc/meminfo 校验内存使用
cat /proc/version 显示内核的版本
cat /proc/net/dev 显示网络适配器及统计
cat /proc/mounts 显示已加载的文件系统

磁盘管理

查看磁盘空间利用大小

1
df -h

挂载U盘

1
2
3
4
fdisk -l 查看U盘路径
monut /dev/sdb4 /mnt 挂载U盘
cd /mnt 进入U盘
umount /mnt 退出U盘

Linux学习网站

http://linuxtools-rst.readthedocs.io/zh_CN/latest/
http://man.linuxde.net/


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


本文标题:Linux基础命令

文章作者:Y-HKL

发布时间:2017年12月06日 - 21:12

最后更新:2017年12月07日 - 21:12

原始链接:http://y-hkl.top/2017/12/06/Linux基础命令/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。