Linux常用命令
1 远程文件复制拷贝
命令格式
scp [可选参数] file_source file_target
ex:
scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3
scp -r www.runoob.com:/home/root/others/ /home/space/music/
2 查看linux系统架构
计算机的体系结构从指令集的复杂度上可以分两类,一是复杂指令集CISC,主要是X86架构。另一类是精简指令集RISC,这个比较多,主要是ARM、MIPS、POWERPC等。
linux uname(unix name)命令用于显示系统信息。
uname [-amnrsv][--help][--version]
参数说明:
-a或--all 显示全部的信息。
-m或--machine 显示电脑类型。
-n或--nodename 显示在网络上的主机名称。
-r或--release 显示操作系统的发行编号。
-s或--sysname 显示操作系统名称。
-v 显示操作系统的版本。
--help 显示帮助。
--version 显示版本信息。
3 统计文件行数
cat file.txt |wc -l
4 输出文件头部行数至文件
head -n 5000 file.txt > file2.txt
5 输出特定行
cat result.dat |head -n 2 |tail -n +2
6 查找文件内容
grep "something" file.txt
7 查看文件夹大小
du -sh */du -sh dir
8 查看磁盘各分区大小、已用空间等信息
df -h
9 符号链接
软链接(也叫符号链接)与硬链接不同,文件用户数据块中存放的内容是另一文件的路径名的指向。软链接就是一个普通文件,只是数据块内容有点特殊。软链接可对文件或目录创建。
软链接主要应用于以下两个方面:一是方便管理,例如可以把一个复杂路径下的文件链接到一个简单路径下方便用户访问;另一方面就是解决文件系统磁盘空间不足的情况。例如某个文件文件系统空间已经用完了,但是现在必须在该文件系统下创建一个新的目录并存储大量的文件,那么可以把另一个剩余空间较多的文件系统中的目录链接到该文件系统中,这样就可以很好的解决空间不足问题。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就变成了死链接。
使用-s选项的ln命令即可创建符号链接,命令如下:
ln -s old.file soft.link
ln -s old.dir soft.link.dir
10 解/压缩 tar.gz文件
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
tar -zcvf 压缩文件名.tar.gz 被压缩文件名 // 压缩命令
tar -zxvf 压缩文件名.tar.gz // 解压缩命令
tar -xvf file.tar // 解压tar
11 查找文件
find path -option [ -print ] [ -exec -ok command ] {} \; // 语法
find . -name "*.c" // 在当前目录及其子目录中查找.c文件
find / -name log4j-api-*.jar // 查找系统中log4j-api-*.jar文件,并列出它们的完整路径
12 在文件夹的所有文件中查找某字符
grep -r -e string directory
eg: grep -r -e "haha" /home
13 查看某端口是否被占用
netstat -anp | grep 端口号 // 查看指定端口号,listen表示已经被占用
netstat -nultp // 查看当前所有已经使用的端口情况
lsof -i:端口号
14 wc统计文件信息
wc [-clw][--help][--version][文件...] // 语法
参数:
-c或--bytes或--chars 只显示Bytes数。
-l或--lines 显示行数。
-w或--words 只显示字数。
--help 在线帮助。
--version 显示版本信息。
ex:
find demo/ -name "*.js" |wc -l // 统计demo目录下js文件数量
find demo/ -name "*.js" |xargs cat|wc -l // 统计demo目录下所有js文件代码行数
wc -l `find ./ -name "*.js"`|tail -n1 //统计demo目录下所有js文件代码行数
find /demo -name "*.js" |xargs cat|grep -v ^$|wc -l // 统计demo目录下所有js文件代码行数,过滤了空行
15 管道符重定向
>> 和 > 属于输出重定向。
>> 会在目标原有内容后追加内容。当文件存在时直接在文件末尾进行内容追加,不会删除原文件;否则直接创建文件。
> 会覆盖目标的原有内容。当文件存在时会先删除原文件,再重新创建文件,然后把内容写入该文件;否则直接创建文件。
&> 可以将错误信息或者普通信息都重定向输出到文件。
16 查看CPU个数
总核数 = 物理CPU个数 x 每颗物理CPU的核数
总逻辑CPU数 = 物理CPU个数 x 每颗物理CPU的核数 x 超线程数
查看物理CPU个数:
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
查看每个物理CPU中core的个数(即核数):
cat /proc/cpuinfo| grep "cpu cores"| uniq
查看逻辑CPU的个数:
cat /proc/cpuinfo| grep "processor"| wc -l
查看内存:
free m
17 两主机免密互信
step1 生成rsa:
在192.168.168.201机器上执行
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
step2 复制公钥
将201机器公钥复制到202机器上
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.168.202
复制201的公钥到202机器上,这样就可以使用在201机器上免密码登录202机器了。
18 查看系统glibc支持的版本
strings /lib64/libc.so.6 |grep GLIBC_
解决libc.so.6: version `GLIBC_2.14' not found问题
19 将实时将所有输出重定向到文件
nohup command > file.out 2>&1 &
nohup命令用来忽略所有挂断(SIGHUP)信号,让你的程序即使在用户注销后依然继续运行
command是任何一段你想要执行的shell命令
> file.out 代表将command运行结果重定向到当前目录下的file.out文件中(如果要每次运行的结果追加到file.out后面,可以用>>而不是>)
2 >&1 表示将标准错误输出cerr的所有输出也都重定向到标准输出cout中
最后一个&表示后台运行该command。nohup命令用来忽略所有挂断(SIGHUP)信号,让你的程序即使在用户注销后依然继续运行
20 清空一个文件
echo "" > file.txt
21 wc 命令
语法
wc [-clw][--help][--version][文件...]
选项主要参数:
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
-help 显示帮助信息并退出
--version 显示版本信息并退出
22 查看一个进程占用的资源
step1:
ps -ef |grep zip // 得到进程PID
step2
top -p PID // 实时查看资源占用
23 查看程序运行所依赖的共享库
ldd cmake
24 zip
命令格式:
zip [参数][打包后的文件名] [打包的目录路径]
ex:
zip -r -q haha.zip haha # 将haha 目录打包到haha.zip
unzip haha.zip # 将haha.zip 解压到当前文件夹下
| 参数 | 描述 |
|---|---|
| -a | 将文件转成ASCII模式 |
| -F | 尝试修复损坏的压缩文件 |
| -h | 显示帮助界面 |
| -m | 将文件压缩之后,删除源文件 |
| -n | 特定字符串 不压缩具有特定字尾字符串的文件 |
| -o | 将压缩文件内的所有文件的最新变动时间设为压缩时候的时间 |
| -q | 安静模式,在压缩的时候不显示指令的执行过程 |
| -r | 将指定的目录下的所有子目录以及文件一起处理 |
| -S | 包含系统文件和隐含文件(S是大写) |
| -t | 日期 把压缩文件的最后修改日期设为指定的日期,日期格式为mmddyyyy |
25 linux chmod(change mode)
控制用户对文件的权限的命令
|--rwx--|--rwx--|--rwx--|
| owner | group | other |
chmod [ugoa...][[+-=][rwxX]...][,...]
# u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
# + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
# r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
chmod -R 777 dir # 将dir目录及其子目录权限设置为777
chmod +x file # file 文件owner用户添加执行权限
chmod g+r file # file 文件用户组田间读权限
chmod a+w file # 所有用户添加写权限
26 set -x -e
set -u 脚本的自检测功能,检查脚本内的变量,如果有变量未被定义将终止脚本
set -e 脚本遇到返回值非零的情况,也就是错误就退出。首行添加。debug模式。
set -o pipefail 检测脚本内的组合命令----管道命令的debug模式,也就是需要配合set -e先行开启debug模式,然后再单独针对管道命令检测shell脚本的健壮性。
set -x/set +x -x 显示脚本执行过程并将脚本内的变量的值暴露出来的,+x等于是默认关闭的。
27 linux 开机自启动脚本
init.d 服务方法
- step1 创建脚本文件 startname.sh
touch startname.sh
- step2 编辑你的启动脚本内容
- step3 添加执行权限,并复制脚本到 init.d 文件夹
chmod +x startname.sh
cp start.sh /etc/init.d/
- step4 设置启动优先级
update-rc.d startname.sh defaults 99 # 99表示启动顺序优先级,数值越小,优先级越高
- step5 启动服务及常用命令
service startname start
service startname stop
service startname restart
service startname status
- 可能需要的后续操作:删除开机自启动脚本/删除优先级设置
update-rc.d startname.sh remove
rm /etc/init.d/startname.sh
systemd 服务自启动方法
- 在
/lib/systemd/system/目录下创建 service 文件
# 到文件夹 /lib/systemd/system/
cd /lib/systemd/system/
# 创建 start.service 文件
touch start_test.service
- 在 start_test.service 文件中编辑如下内容
[Unit]
Description= my_start_service # 服务描述
After=network.target # 在网络服务启动后启动
[Service]
Type=simple
# 启动时执行的脚本
ExecStart=/bin/sh /home/hahaha/mystart.sh
# 停止时执行的脚本
ExecStop=/bin/sh /home/hahaha/mystop.sh
[Install]
# 多用户服务
WantedBy=multi-user.target
- 启动服务及加入开机启动等
# 刷新服务配置
systemctl daemon-reload
# 加入开机启动
systemctl enable start_test.service
# 启动服务
systemctl start start_test
# 停止服务
systemctl stop start_test
# 查看启动服务日志
journalctl --unit=start_test -f

浙公网安备 33010602011771号