我很熟悉Linux(显然),我需要在Linux服务器启动时运行一些命令,而无需手动将它们输入控制台.
我有一个名为overpass.conf的文件,完全在启动时运行:
description 'Overpass API dispatcher daemon'
env DB_DIR=/var/www/osm/db/
env EXEC_DIR=/var/www/osm/
start on (local-filesystems and net-device-up)
stop on runlevel [!2345]
pre-start script
rm $DB_DIR/osm3s* || true
rm /dev/shm/osm3s* || true
end script
exec $EXEC_DIR/bin/dispatcher --osm-base --db-dir=$DB_DIR
Run Code Online (Sandbox Code Playgroud)
但是,我还想运行以下内容:
cp -pR "/root/osm-3s_v0.7.4/rules" "/var/www/osm/db/"
nohup /var/www/osm/bin/dispatcher --areas --db-dir="/var/www/osm/db/" &
chmod 666 "/var/www/osm/db/osm3s_v0.7.4_areas"
nohup /var/www/osm/bin/rules_loop.sh "/var/www/osm/db/" &
Run Code Online (Sandbox Code Playgroud)
我已经尝试将它们添加到文件的底部,将exec添加到执行命令,甚至尝试删除引号,然后测试start overpass但是如果我向原始命令添加任何命令则会引发错误.
如何在原始命令之后执行这4个命令?我是一个遇难的小伙子.谢谢!
编辑
我用这些命令解决了它:
vi /etc/init.d/mystartup.sh
Run Code Online (Sandbox Code Playgroud)
- 向脚本添加命令
chmod +x /etc/init.d/mystartup.sh
update-rc.d mystartup.sh defaults 99
Run Code Online (Sandbox Code Playgroud) 我有一个加密/解密算法,我正在尝试加密一些特殊字符从android发送到服务器,但它抛出异常:
java.lang.Exception:[encrypt]错误:0607F08A:数字包络例程:EVP_EncryptFinal_ex:数据不是块长度的倍数
正常的拉丁字符加密/解密正常,但特殊字符不是.
这是我的代码:
public class MCrypt {
private String iv = "fedcba9876543210";//Dummy iv (CHANGE IT!)
private IvParameterSpec ivspec;
private SecretKeySpec keyspec;
private Cipher cipher;
private String SecretKey = "0123456789abcdef";//Dummy secretKey (CHANGE IT!)
public MCrypt()
{
ivspec = new IvParameterSpec(iv.getBytes());
keyspec = new SecretKeySpec(SecretKey.getBytes(), "AES");
try {
cipher = Cipher.getInstance("AES/CBC/NoPadding");
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public byte[] encrypt(String text) throws Exception …Run Code Online (Sandbox Code Playgroud)