linux下操作

权限问题

因为在服务器上跑代码,需要配置用户自己变量。

做一些笔记。

 

  • 新建用户:(添加用户空间)
adduser (用户名)

 

  • 新建用户(没有用户空间,后面可以加进组)
  • useradd (用户名)
    passed (用户名)
    sudo groupadd newgroup
    将用户添加到newgroup里
     
  • 删除用户:
userdel (用户名)

 

  • 删除用户组:(因为一开始创建用户的时候会在/home下面创建空间,所以要完全删除组)
groupdel (用户组名)

 

  • 修改文件夹用户拥有者权限:(带有递归)
sudo chown -R (用户名) (文件夹名)

 

  • 修改文件夹组别权限:
sudo chgrp -R (用户名) (文件夹名)

 

  • 为用户切换组:
usermod -g (组名) (用户名)

 

  • 在不换组的情况下,为用户添加组:
usermod -a -G (组名) (用户名)

 

  • 查看用户组别
id (用户名)

 

  • 查看当前文件夹所有文件权限:
ls -l

 

  • 创建好用户后,用
cd ~

可以到主目录,用vi ~/.bashrc 可以修改环境变量,修改完了用source ~/.bashrc执行文件即可

在运行caffe-ssd时出了没有module的问题,尝试了用网上的方法解决,即用export添加环境变量,然后运行,但还是报错。

解决方法是在报错的python文件中,直接添加变量。

sys.path.append("xxx/caffe-ssd/python")

 

程序报错

 

  • make编译时"warning: clock skew detected. your build may be incomplete"

原因:

代码时间错乱,可能以前的文件编辑时间在future,所以只需要更改系统时间

解决方案:

data -s 04/10/2018
date -s 15:25:00

 

  • opencv的so文件路径不对,打开Makefile发现和pkgconfig有关

.pc文件放到了/usr/local/lib/pkgconfig

 

  • /usr/bin/ld:cannot find -lcufft

error:ld returned 1 exit status

这个时候可能是因为.so库没有正确的放在目录下面

解决方法:

locate libcufft (查看是否在系统里存在这个库了)

sudo ln -s /已经存在的.so路径 /usr/lib/libcufft.so

 

常用指令

 

  • chmod(改变文件夹权限)

用户组包含了文件属主(u),文件属组(g),其他人(o),所有人(a)

读取(r=4),写入(w=2),执行(x=1)

chmod u+x days
chmod a-x days
chmod ug=rw,o=r days

用户组O权限等于U

chmod o=u days

用数字可以表示权限

三位数字分别为属主、属组、其他人

 

 

  • 建立链接

硬链接:

ln days days_hl

硬链接是两个文件,对其中一个修改另外一个也会改动

 

 

  • 输出重定向:
ls > ~/ls_out

将输出打印到ls_out文件中

 

 

  • 输入重定向:
cat < days

从days中输入

 

 

  • 管道 | 

通过一根竖线“|“,将一条命令的输出连接到另外一条命令的输入

ls | grep ay 

ls首先列出当前目录下所有文件名,管道接收这些输出,并将它发送给grep作为输出,最后grep在这堆文件列表中查找包含字符串ay的文件名

 

 

  • 存档文件

文件打包tar:

tar -cvf shell.rar shell/

将shell目录连同下面所有的文件一同打包成shell.rar。

tar的三个命令:c指导tar创建归档文件,v用于显示命令的执行过程,f用于指定归档文件的文件名。

文件解压缩:

tar -xvf shell.rar

x表示解开归档文件

 

  • 记录用户操作:history
$ history n(数字,可选项,表示列出几条)

 

 

  • ps aux | grep 文件名

可以查看运行文件的PID

 

  • 监视进程:
ps aux

用于显示当前系统上运行的所有进程的信息

ps lax 可以查看ppid

 

查看占用文件的进程

lsof 文件名

可以查看某个特定文件正在被哪个进程占用

 

杀死进程:用KILL信号

sudo kill -KILL pid

 

 

Linux与windows协作:

 

 

samba,linux下samba客户端:smbclient

 

替换字符串:

:[range]s/pattern/string/[c,e,g,i]

这条命令将pattern所代表的字符串替换为string,开头的range用于指定替换作用范围,如“1,4”表示第一行到第四行,“1,$"表示第一行到最后一行,也就是全文,全文也可以用%代替。

c表示每次替换前询问,e表示不显示错误信息,g表示替换一行中所有的匹配想,i表示不区分大小写

:%s/^M$//g

^M$是正则表达式,表示行末所有的^M字符,删除windows文件移植到linux上多处的^M符号

 

设置自动缩进

:set autoindent

 

设置缩进空格数

:set shiftwidth=4

 

vim常用的命令:

a 在光标后插入

o 在光标所在下一行插入

ctrl+f 向前翻一页

ctrl+b 向后翻一页

x 删除光标所在位置的字符

D 删除所在位置到行尾之间所有字符

u 撤销一次操作

:/string 向前(朝向文件尾)搜索字符串string

:?string 向后(朝向文件头)搜索字符串string

 

gcc编译

gcc -o sum summary.c

g++ -o sum summary.c

gcc命令可以编译C++源文件,但不能自动和C++程序使用的库连接。因此通常使用g++命令来完成C++程序的编译和连接,该程序会自动调用gcc实现编译。

 

调试工具gdb

在使用gdb调试程序之前,必须使用gcc -g命令生成带有调试信息的可执行程序。

gcc -g summary.c

然后可以使用gdb命令对生成的二进制文件调试。

 

gcc a.out

查看源代码命令:list

设置断点命令:break num

查看断点信息:info break

清除所在行的断点:clear

运行程序到断点:run

单步执行程序:next

从断点继续向下执行到下一个断点:continue

在遇到函数调用的时候进入函数内部:step

监视变量(每次都要输入):print 变量名

设置观察点(不用每次都输入):watch 变量名

临时修改变量:set var I=1

退出gdb:quit

 

shell里的命令:

expr1 -a/&& expr2 :与运算,当两个条件同时满足的时候为真

expr1 -o/|| expr2 :或运算,当两个条件满足一个的时候为真

$@ : 用户输入的参数

文件测试 -f -c

 

./configure 出问题

https://forums.fedoraforum.org/showthread.php?281575-configure-error-cannot-guess-build-type-you-must-specify-one

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值