使用的电脑是ubuntu系统,安装系统时一路默认安装,下来发现分了两个分区, /root分区和/data分区
/data分区空间比较大,在目录下面创建sh执行文件,或者使用gcc编译生成一个执行文件,运行的时候都提示没有权限。
先开始怀疑两个分区的环境变量不一样,但是分别再两个目录下面查看环境变量,都是一样的。
再分析两个分区,两个磁盘,需要挂载到文件系统,查看/data的挂载点:
root@tracy-PC:~# mount|grep data
/dev/nvme0n1p5 on /data type ext4 (rw,relatime)
可以看到括号里的rw,可以看出只有读写,而不是我们常见的rwx
sudo vim /etc/fstab/
将挂载的option改为defaults,然后重启电脑,即可
#/dev/nvme0n1p5 LABEL=DATA
#UUID=e3a33607-cdb7-4d9f-81d8-a0aaa632fef1 /data ext4 rw,user,x-gvfs-show,nosuid,nofail 0 0
UUID=e3a33607-cdb7-4d9f-81d8-a0aaa632fef1 /data ext4 defaults 0 0
学习一下fstab文件,参考https://www.cnblogs.com/FengGeBlog/p/10178824.html
/etc/fstab文件主要包括6段,依次是:
挂载的目录位置 挂载分区的文件系统类型,比如:ext3、ext4、xfs、swap 挂载使用的参数有哪些。举例如下:
auto - 在启动时或键入了 mount -a 命令时自动挂载。
noauto - 只在你的命令下被挂载。
exec - 允许执行此分区的二进制文件。
noexec - 不允许执行此文件系统上的二进制文件。
ro - 以只读模式挂载文件系统。
rw - 以读写模式挂载文件系统。
user - 允许任意用户挂载此文件系统,若无显示定义,隐含启用 noexec, nosuid, nodev 参数。
users - 允许所有 users 组中的用户挂载文件系统.
nouser - 只能被 root 挂载。
owner - 允许设备所有者挂载.
sync - I/O 同步进行。
async - I/O 异步进行。
dev - 解析文件系统上的块特殊设备。
nodev - 不解析文件系统上的块特殊设备。
suid - 允许 suid 操作和设定 sgid 位。这一参数通常用于一些特殊任务,使一般用户运行程序时临时提升权限。
nosuid - 禁止 suid 操作和设定 sgid 位。
noatime - 不更新文件系统上 inode 访问记录,可以提升性能。
nodiratime - 不更新文件系统上的目录 inode 访问记录,可以提升性能(参见 atime 参数)。
relatime - 实时更新 inode access 记录。只有在记录中的访问时间早于当前访问才会被更新。(与 noatime 相似,但不会打断如 mutt 或其它程序探测文件在上次访问后是否被修改的进程。),可以提升性能。
flush - vfat 的选项,更频繁的刷新数据,复制对话框或进度条在全部数据都写入后才消失。
defaults - 使用文件系统的默认挂载参数,例如 ext4 的默认参数为:rw, suid, dev, exec, auto, nouser, async.
dump 工具通过它决定何时作备份. dump 会检查其内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 。0 表示忽略, 1 则进行备份。大部分的用户是没有安装 dump 的 ,对他们而言 应设为 0。
fsck 读取 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2. 0 表示设备不会被 fsck 所检查。
今天给客户发了一个ubuntu下的小工具,用户到手后运行不了,报错:一开始以为是全权限的问题,所以让她“ls -la”一下,看看权限,但是结果是ok的,权限没问题后来发现他是用的是32bit的ubuntu系统,而我们使用的是ubuntu64bit编译出来的程序,所以叫她换成64bit的ubuntu,就ok了。...
一、首先下载解压
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.33-linux-glibc2.5-x86_64 /usr/local/mysql
二、创建目录和用户
1.创建mysql目录
mkdir -p /mysql/data ---数据目录
mkdir -p /mysql/log ---日志目录
2.创建用户
groupadd mysql
useradd -r -g mysql mysql
三、创建my.cnf
关于ubutu执行二进制文件为什么要加./
ubuntu14.04 LTS下执行属性为executable (application/x-executable)的文件的方法:
在linux下运行程序,一定要写成 ./test.sh,而不是 test.sh。
如果我们直接写 test.sh,linux 系统会去 环境变量PATH 里寻找有没有叫 test.sh 的,然而PATH并没有。
所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。
./ 可以理解为在当前目
if [ `whoami` != 'root' ];then
echo -e "\033[31m 请以root用户执行,Please run as root!\033[0m"
exit 1
clear
function auto_add(){
#获取新添加磁盘的大小
DISK_SIZE=$(lsblk | awk '{print
这几天想在Ubuntu 64位系统上配置高通801板子的交叉编译工具链,板子是linaro系统,armv7,32位,我的编译环境是Ubuntu16.04 LTS.
按照指定的步骤配置好g++编辑工具(arm-linux-gnueabihf-g++),make时提示command not found。
直接到arm-linux-gnueabihf-g++这个bin文件下执行./arm-lin
这个问题一般是gcc的命令参数导致的。
例如我在cmake添加如下参数:
#set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -g -ggdb3 -Wall -std=c++11 -fPIC")
生成的可执行文件会很小,在生成的服务器能执行,但是移植到其它服务器后就报上面的错误。
归根到底是-O0的原因,具体这个参数可以自行百度,这个当时我遇到这个问题也花了不少时间,后来查阅相关资料说和make的参数有关,所以不断调试参数后才发现是-O0导致的。
去掉重新编译即
cd /usr/local
tar xf mariadb-10.3.18-linux-x86_64.tar.gz
ln -sv mariadb-10.3.18-linux-x86_64 mysql
cd mysql
chown -R mysql:mysql .
mkdir /data
chown -R mysql:m
windows下关机不彻底导致,例如关机的时候,该分区下还有文件或程序正在执行,windows关机不彻底(就是下次开机还会恢复关机时未关闭的程序的那种情况)。
首先查看分区
sudo fdisk -l
Device Start End Sectors Size Type
/dev/nvme0n1...
1. 非root用户或者无执行权限
2. 编译环境不同(程序由其他操作环境复制过来)对于第一种情况,采用增加执行权限即可chmod +x program对于第二种情况,建议将该程序二进制包拷贝过来,重新编译程序。
3. 硬件平台与软件不一致 , 例如: 32位系统,下载了个64位的软件,x86平台上传的却是arm平台。结果就无法执行 如果使用 file 命令检查的结果是 data, 而不是可执行文件,
下面是操作系统基本启动步骤:系统启动流程1)内核启动包括初始化串口、内存、中断等必要的设备以及其他设备初始化(当然初始化东西很多,这里不一一列举);2)内核启动完毕后,会根据用户配置的bootargs初始化文件系统,比如配置 rdinit=/init,内核会尝试执行文件系统根目录的init,init里面脚本进行初始化;配置 root=/mnt/ramfs,内核会挂载/mnt/ramfs作为根目录;...
仔细一查,原来这台笔记本用的是飞腾D2000处理器,ARM的,而工作机是Intel的,难怪程序无法执行。需要重新build可执行程序。在工作机上(银河麒麟V10)发布了可执行程序,将可执行程序拷贝到这台笔记本上,双击执行无反应。今天客户送来一台笔记本,说是“银河麒麟电脑”,让我在这台电脑上跑程序。bash: ./xxxxx 无法执行二进制文件: 可执行文件格式错误。