【C++ Server】二、Linux基础

二、Linux基础
1、Linux下的目录一般放什么东西:
bin:可执行文件
boot:一般放启动的文件
dev:设备
etc:大部分的配置文件
home:主目录,每个用户自己的目录
lib:库目录
lib64:64位的库的目录
mnt:挂载目录
opt:可选目录,用户自己安装的程序可以放在这里面,例如编译器clang。
root:根目录
sbin:系统的执行文件目录
usr:自己安装的软件一般放在这里
tmp:放临时文件的目录,系统重启的时候里面的东西会删掉的

2、输入ls -l命令打印的东西表示什么意思:
drw-rw-r-- 2 username1 username2 4096 Aug 7 05:24 DeskTop

文件属性:drw-rw-r--:
d表示目录,普通文件是-,软链接是l。
后面每三位为一组,表示这个文件拥有者的权限。
r:读。w:写。x:可执行(文件)、可进入(目录)。
第一组rw-:文件创建者的权限。
第二组rw-:同一组用户的权限。
第三组r--:其他用户的权限。

2:表示硬链接数,类似于智能指针的引用计数器。
username1:表示文件归属者。
username2:归属组。
4096:大小。
Aug 7 05:24:上一次修改的时间。

3、一般的文件命令:
ps -e | grep ssh:看ssh服务有没有安装
sudo apt install openssh-server:安装ssh服务
who:看谁连在这机子上
sudo apt-get update:一般安装好系统后的更新远端服务器的资源信息
sudo apt-get upgrade:看看有没有什么包需要更新

sudo apt-get dist-upgrade:非常重要版本的更新,比如内核版本的更新

pwd:打印当前目录

man pwd:pwd这个命令怎么用,也就相当于是帮助文档

ls:看当前目前下有哪些文件,也可以直接用ll

cd:切换目录

touch abc.txt:生成一个字节大小为0的空文件。如果这个文件已经存在,则修改它的修改时间。

ls a*:列出a开头的文件
ls *.txt:列出txt格式的文件。*表示任意个字符。
ls a?b.txt:一个?表示一个字符。

cp aaa.txt aaa.bak:拷贝aaa.txt,生成一个aaa.bak

ls -sail *bak;i选项表示打印文件在操作文件上的node(在硬盘上的位置)。

cp -i abc.txt aaa.txt:-i表示当aaa.txt存在的时候,询问是否覆盖掉aaa.txt

cp -l abc.txt aaa.txt:-l表示abc.txt和aaa.txt指向的是同一个东西。硬链接数会加1。硬链接不可以跨文件系统。

cp -s abc.txt aaa.txt:-s表示软链接,相当于快捷方式。软链接可以跨文件系统。

mkdir docTmp:创建一个目录docTmp。

rm abc.txt:删除文件。

rmdir docTmp:删除空目录。

rm -r:递归删除目录。

stat aaa.txt:详细地列出文件的属性信息。

file aaa.txt:列出非空文件的文件类型。

wget -c http://mirrors.163.com/xxxxx:从远处的机器拉文件到本地

cat aaa.txt:看文件的内容
more aaa.txt:看文件的内容,一页一页地往下看
less aaa.txt:看文件的内容,可以上下翻页
tail aaa.txt:看文件的尾部的10行。常用于看日志文件。
tail -n 3 aaa.txt:看文件的尾部的3行。
tail -f -n 3 aaa.txt:实时查看文件的尾部的3行。
head aaa.txt:看文件的头部的10行。

mv aaa.txt bbb.txt:重命名一个文件

clear:清屏

ls ~/sources.list:~表示当前用户目录,输入cd就可以到这个目录

sudo !!:以sudo方式执行上一条指令

cd ..:返回上一次目录

mkdir -p a/b/c:递归创建a、b、c目录

4、更新软件源的方法:
wget -c http://mirrors.163.com/xxxxx/sources.list:-c表示如果本地下载中断,下次再输入该命名时,会从上一次继续。
cd /etc/apt
cat sources.list
ls -l sources.list
sudo cp sources.list sources.list.bak
sudo cp ~/sources.list .
cat sources.list
sudo apt-get update
sudo apt-get upgrade

5、一般的查看系统资源的命令:

ps:输出当前控制台用户拥有的进程。

ps -ef:-e显示所有的进程。-f显示完整的输出。PPID表示进程的父进程。C表示CPU占用率。STIME表示进程启动的系统时间。TIME表示该进程累计使用的CPU时间。

ps -axgl:a显示所有的。l显示全部信息。VSZ表示使用的内存,单位KB。RSS表示使用的物理内存。

ps --forest:显示进程数

top:相当于任务管理器,实时显示系统资源占用情况。PR表示进程的级别。VIRT表示虚拟内存。RES表示物理内存。

sudo apt-get install htop:更好用的htop命令,比top好看。

ps aux | grep top
kill -s INT 1608:给PID为1608的程序发送中断信号。优雅地退出程序
ps aux | grep top

kill -9:强杀程序
killAll:杀掉一批程序

df -h:查看磁盘空间

du -h:目录所在的磁盘空间

6、其他命令:

grep:一般用于查看日志。
grep myName aaa.txt:打印aaa.txt中出现了myName字符串的行

grep -c myName aaa.txt:打印aaa.txt中出现了myName字符串行的行数

grep -v myName aaa.txt:打印aaa.txt中没有出现myName字符串的行

grep -n myName aaa.txt:打印aaa.txt中出现了myName字符串的行和行号

grep my*ame aaa.txt:打印aaa.txt中出现了my*ame(正则)字符串的行

ps | grep bash:|表示管道,ps的输出作为grep的输入。

sudo apt-get install zip
zip
unzip
tar

tar -xvf xxxxx.tar.gz:解压

printenv:查看全局环境变量有哪些。
echo $PATH:打印环境变量PATH。冒号分割。
printenv | grep PATH:打印环境变量PATH

set | head:查看局部环境变量有哪些,打印前10行。

创建局部的变量:
test=hello
echo $test

创建子bash:
bash
echo $test:啥也没打印
exit
echo $test:打印hello
export test:在子bash也能显示

unset test:干掉刚刚设置的环境变量test。

chmod +x aaa.sh:添加可执行权限。
chmod -w aaa.sh:减掉写权限。

chown:改变所有者。

shell脚本的第一行注释是有意义的,意思是用/bin/sh对整个脚本进行处理。
例如,
#! /bin/sh
who

cat aaa.cpp >> bbb.cpp:将aaa.cpp的内容追加到bbb.cpp的结尾。

7、怎么拷贝远端机器的文件?用scp命令。
sudo apt-get install git
git --version
scp --version
scp sourceName@192.168.xxx.xxx:/home/sourceName/aaa.txt .:以sourceName登录远端机器并拷贝远端机器192.168.xxx.xxx的文件/home/sourceName/aaa.txt到当前目录下

8、sudo apt-get install make:安装make。
sudo apt-get install cmake:安装cmake。
sudo apt-get install clang:安装clang。

clang++ aaa.cpp:编译aaa.cpp

9、设置环境变量
vim ~/.bashrc
添加PATH=$PATH:/opt/llvm/bin
source ~/.bashrc
echo $PATH

10、通过makefile编译。但实际项目中应该用cmake。
自己写makefile的话,当一个类包含头文件的时候要全部链接,例如,
test002.o:test002.cpp test0021.h
其中,test002.cpp包含了test0021.h。

vim makefile
test002.cpp生成一个test002的可执行文件。内容如下:
一个文件的时候:
test002:test002.o
    clang++ -o test002 test002.o
test002.o:test002.cpp
    clang++ -c -o test002.o test002.cpp

test0021.h、test0021.cpp、test002.cpp生成一个test002的可执行文件。test002.cpp调用test0021里面的方法。
多个文件的时候:
test002:test002.o test0021.o
    clang++ -o test002 test002.o test0021.o
test002.o:test002.cpp test0021.h
    clang++ -c -o test002.o test002.cpp
test0021.o:test0021.cpp test0021.h
    clang++ -c -o test0021.o test0021.cpp

然后
make
屏幕输出
clang++ -c -o test002.o test002.cpp
clang++ -o test002 test002.o

time ./test002:计算消耗cpu的时间和程序运行所占用的时间。

11、sudo apt-get install xxxxx
Ubuntu16.04版本之后用sudo apt install xxxxx就行,去掉-get。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值